Sunday, January 14, 2007

Open MMORPG Newsletter #02

[This Newsletter post is now quite out of date, however it is included for archival purposes. It may contain information that is no longer accurate and some dead links]




Introduction

We skipped a month, but now we are back on the project! There are also two other things to celebrate like there is a new Core of Three member and we hit over 100 members on our forum! The New core member is Slayer93 and Kenjar was nice enough to fill in for Tinkergirl when she left.

Remember to visit our site, and our forum.

OMMORPG Progress
by Nevereverend

With so many folks being back in school, things have once more slowed down again here at the OpenMMORPG Project. But this is not to say there is not progress being made. This project remains in active development, with quite a few pieces being completed "behind the scenes".

We are moving toward the completion of Phase One, the Demo, whose purpose is to illustrate the broad capabilities of our toolkit project, to highlight its potential and its promise. And to that extent, we are progressing admirably. The culmination of this phase, the Demo itself, is nearly finished (about 85% of the way, by my estimate), with only a few remaining art and coding needs.

As I mentioned, some things have been worked on out of the public eye simply because we needed to move forward with the project and try to close out this phase. Much of what has thus far been available in the SVN repository has been development and testing material, with newer and more complete material being added in the next few updates. This is especially true of the project's art.

Regarding art and design, updates range from new inventory icons to a complete replacement of the "test" zone terrain with something more stylized. Ground textures have been updated or replaced to create more unevenness and realism to the terrain's appearance. A few models have been retextured to improve their appearance or, in the case of several AI Entities (Agents), to make them more suited to their actual environment. There are even a few new models added.

Coding has been moving forward, with a basic quest system being implemented. While this system currently supports only simple quests, such as fetch and carry or kill the monster, it is only designed for use in Phase One, the Demo. Come the next phase, the development of a full RPG, we will be working to expand the structure and capabilities of quests significantly.

There has been much discussion about building skill groups for our skill system. A framework has been finished; designed for flexibility, it will be expanded as coders fill in more and more skills. Again, for the Demo, skills are being kept simple, though they will be expanded and likely made far more important in the near future.

Understandably, one would wonder what is left to finish before the Demo is ready for release? Well, as always, we have a need for animators to rig and animate some of the models. We could also use someone skilled at making decent UV Maps from models to make retexturing models even easier. We also need coders to help build individual skills, finish the character generation system, and implement save/load functions. Of course, this is just what we need for the Demo. We can always use more models, art, code, and ideas for when we move on to completing the full RPG.

Code Center

4 Elements is Back!
by Slayer93

The time of the return of 4 Elements is here and I have scraped the old code. This one is going to be much better than the old one since I have learned so much from this project. 4 Elements is a trading card game where you duel against ai opponents and in the future real people. Have a look at it in the code submissions board at the openmmo forum.

This time around I have planned everything (or almost everything) and I already started programming it. Like the project it is being coded in Dark Basic Professional and is completely open-source! I have done a few things already and I may not be able to finished this project myself so if anyone wants to help out on it you can. This is afterall a community project where anyone can help even if you don't have DBP (Dark Basic Professional) like Nevereverend (the art guru of the project). So go over and help with this small project now or the main project.

In the project the main thing I am working on is getting commands into the script system. This script system is probably the single most best thing I ever made in DBP. The script system is based off the one I submitted to the project much early and you can read about it in the last newsletter. Right now the script system is being used to add cards into the card system, deck system, and the chest system which are all related to each other in some way. With adding the script system it makes it easier to add in what I want without re-compiling the source everytime I make a change or digging through the source for one little piece of code.

Now what you were waiting for...

Screenshots!
[This Newsletter's Screen Shots have been Deleted]

Animation and Particle System
by Slayer93

FoeV, a new member, has joined our project and he has already contributed some great code. The animation and particle system is coming along great and he has a great model to test with made by Nevereverend. Here is the thread to view the code:

[Link - Animation and Particle System]

Here is a screenshot of its current progress:




IRC Channel @ devhat.net
by Slayer93

One of our members (Kentaree) was nice enough to give us our own channel on his irc. This is where you can discuss with some members and occasionally core members usually me (Slayer93) and maybe if you're lucky Nevereverend and RiiDii will appear to talk about the game progress. So go on now at irc.devhat.net in the #openmmo channel to give feedback or just chat.

[Link - #Openmmo IRC Channel]


Media Corner

MattW is Back!
by Slayer93

It seems one of our moderators on the forum has become a bit more active again and he is pumping out some great models. Here are some of them...

[This Newsletter's Screen Shots have been deleted]


4 Elements Cards
by Slayer93

With 4 Elements being a mini-game for the main project there had to be something that connects to each other right? Well all the cards are based on models people submitted to this project and someone (Mostly Nevereverend) had made it into a card and some good ones too. Just check them out by downloading the game and look through the directory or go the an older thread about 4 Elements on our forum to check it out. We already have more than 20 cards to test the game out!

Monsters to Build into Your Vocabulary
by Slayer93

We have lots of monsters in our game and if you look at the forum we just used strange names like its in everyones vocabulary. Here is your chance to put it in your vocabulary so check out these names and screenshots...

Grole
Rox Lizard
[This Newsletter's Screen Shots have been deleted]

I can't think of any more right now, so just take a look in the forums. So now if you ever hear about these on the forum, you will know what it is!


Outro

Hope that was enough to satisfy you and maybe come and pursuade you to contribute to our community project. Until next month...



Open MMORPG Newsletter #01

[This Newsletter post is now quite out of date, however it is included for archival purposes. It may contain information that is no longer accurate and some dead links]


Introduction

This is the first OMMORPG newsletter. The OMMORPG is an open source community project for DBPro that you can help with now. This is the site for the project hosted by Kenjar. He also was kind enough to give us a forum to go along with it which is located HERE. So go and help with the project now! :D

[ Note: We have since found new webhosting (and this blog site for the newsletter) and have a new address for the forums at http://www.ommorpg.vectramedia.net ]

We also have a lot to cover in this newsletter with all the things we did and what we have.

OMMORPG Progress
by Slayer93

We have made a lot of progress since we started. We are almost done with a demo where you can do quest walk around and fight enemies and loot them. We have many screenshots right here and even more on our forum.

And some screenshots:




If you want to try out what we have now there is an easy way to get it. Look at this post for more infomation:



Code Center

Skill System
by RiiDii

One feature of our code I would like to talk about is our skills system. In developing the skills system, we have introduced some coding concepts to DarkBasic. The first coding hurdle we jumped was a static number of function arguments. Normally, functions can only have a set number of arguments. If you set the function up for three arguments, then three is all it will accept. Try to pass more or less arguments to the function and the IDE compiler will stop to let you know. Using a word parser (developed by Slayer), we can bypass this by entering a single string containing the arguments list, which can be any length. The compiler sees only one argument passed to the function, and then the parser extracts the actual arguments from within the string.

Our next coding concept explains why we needed a dynamic number of arguments passed to a function. We wanted a flexible skills system so we could add new skills as needed. This presented several obstacles. The first was a scripting system so new skills could be added without having to add code. The problem was developing a scripting system that was flexible enough to handle melee skills, missile skills, craft and artisan skills, magic skills, and the list goes on. A system this robust is nearly impossible to code in DBPro. So, we compromised.

The compromise was to acknowledge there is no way to reasonably script every possible skill into DBPro. Skill Categories was the solution. Each skill can be fit into a skill category – even if that category has only a single skill. Each skill category can then handle the script appropriately. For example, our melee skill category times a combat strike, checks for melee range, and when the time is right, calculates the attack results: Did the PC hit or miss?

For flexibility, we added on a damage skill category. The attack skill category can trigger a damage skill, which determines how much damage to apply to the combat target. Of course, the compromise is that skill categories need to be hard-coded, but the skills that fall under that skill category are scripted.

Beside the ability to trigger other skills, skill categories can reference active skills. A great example of this is PC Characteristics. Characteristics are handled by their own skill category. No, they are not just a global variable attached to a player, but they are always-active skills. When a melee attack skill is activated, it can check to see if a given characteristic (or more) is active and what the value of that characteristic is.

It may still seem like we should be handling characteristics as global variables instead of active skills. Consider the flexibility skills have over variables. We can go in and rewrite the available characteristics and skills in a matter of minutes (maybe an hour), which would otherwise take hours or days to replace. Also, we can dynamically change characteristics and skills in game (should we have any need to). What kind of game could be made if the player could define their own characteristics and skills? What if the player can create new skills in game (controlled of course)?

Allow the player to create their own attack style? Allow the player to create their own spells? Have an NPC to award the player with a random new skill (or even characteristic)?

Another added feature of the skills system is that it does all its own work. The code controlling the player does not trigger skills. Instead, the skills system (on its own during a skills management function call) checks for the various triggers for different skills. In most cases, this is a button or a key press, but it could be simply checking to see if a particular flag (variable) has been set. Some skills are always active, so there is no trigger. Other skills can only be activated by other skills. An example of this is a melee damage skill is only activated by a melee attack skill.

Skills not only seek their own inputs, but they also handle their own outputs. In some gaming systems, skills use up fatigue. Skills in this system can be coded to lower the player’s fatigue by an amount defined in the skills script. Magic skills will produce and manage their own effects (particles or whatever). While the category handling magic skills has to be hard-coded into the game, each magic skill can then be scripted with plenty of variable settings to let the magic category know how to produce the magic effects.

In the end, flexibility is the answer. The skills system currently up and running (test it for yourself) is doing the job it was intended to do. I, for one, just can’t wait until we get to use it to its full potential.


Buttons!
by Slayer93

Ok to start with I will show the complete finished code thats easy to implement. This code was made by RiiDii. There button functions. This will allow you to create buttons fast and easy. It also has its own parser to write scripts outside of your game. We also have a button viewer Slayer93 made to view how your buttons look and work in DBPro. You can download the code from below.

To use the buttons you must first Intialize the buttons using Intialize_buttons. You can use Parse_file to read the buttons from a file or Make_button to create a button right in dbpro. They're also alot of other usefull things such as hiding and showing buttons. Here is a pic of RiiDii's button code and my Button Viewer in action. Featuring Nevereverends HUD images.


Button Viewer - [Download]
Button Code - [Download]

Script System
by Slayer93

I have been working on a script system that can be used by anyone who owns DBpro. The script system allows you too create commands and right scripts in files to parse to help you layout your game and run your game.

Creating a command is simple all you have to do is go to a function called parse_string() which parses a string. In there you are going to put a case/endcase statement between the select/endselect statement if you dont know what those are look in the help file or an existing project with mutliple commands already (provided in a download at the bottom). For the data of the case statement put the command you will like to make. Once you have done that you will be able to get the parameters that have been taken out of the string in an array called psentences(). You can use those parameters to do what you want. Here is an example:

case "text"

text val(psentences(0)),val(psentences(1)),psentences(2)
endcase

In a script file it will look like this text 0,0,Hello this is a test

Final notes on creating commands- in the case data it can only be one word. The psentences array is a string so you have to use the val() command to make it a value and sometimes the int() command.

I have also created a flag system. The flag system will allow you to run certain parts of your script at certain times. To make a flag in the script since I already made the command for you. You have to use a command called newflag (in the commands list with download). Then it will store commands for later use. To activate a flag when you want you have to use activateflag (also in commands list). You can only set the activation times the engine has or if you make your own using flagcheck. To create the flag in the engine you have to use a function thats called check_flag_data() and put check_flag_data(right$(flagcheck$,len(flagcheck$)-1)) in so you can use flagcheck. You can see an example of this within the project for download.

There is also a variable system in place to create your own varibles. Varibles will have to be created using the var command (in commands list). You will be able to use a varible in any parameter since it changes a varible name into a varible value before it looks up commands.

Just keeps getting better and better right. I also have a lot of different functions you can use besides the parse_string and parse_file. You can store string words/parameters or just get the one you want with the list of function names in the project download.

store_words()
store_parameters()
get_word(string$,word)
get_parameter(string$,word)


A final note to use this make sure you Intiate the parser using Intiate_Parser Try it out with this project and the commands list. See if you can make your own commands.


Media Corner

One Model, Infinite Characters

by Nevereverend

I've been part of several discussions on the forums where a new model and UV map has been posted, and several people have commented that they would like to make a new texture for the model. Unfortunately, once one person seems serious about doing it, the other people who had been interested just don't bother. I think this is quite unfortunate, since we get only one retexture for the model where we could easily have gotten three, four, or more.

You see, each person who submits a retexture of a model is effective creating a brand new object for the game. A house, may be the same model, but it appears different if it is made to resemble wood as opposed to brick. Which of course, looks very different from stone. Three differend materials textures applied to a model creates three different objects which can be used in the game.

And all of this is especially true of character models. Even something a simple as changing the skin color in a character model makes for a very different appearance. Consider these two characters, both made with a "male human" model provided by Kenjar some time ago. Just changing the skin tone from peach to brown has resulted in a new appearance.




Other characters can be made by changing the clothing, armor, and facial features to make many humans -- easily enough to populate a whole village. Consider these characters, also made from the same model as before.





And this model can even be used to make something far more menacing. With a little time spent in photoshop, the human was made into a zombie.



The variety of simple changes you can make to a model's appearance are nearly infinite. Similar modifications have been made among other models, as well. Poke around the forums for a while, and see how many giant lizards have been made using the Rox Lizard model.

I encourage everyone who has considered retexturing a model to do it, no matter how many other people say they are going to do it, too. Our community can only benefit by having five choices for the look of a character instead of only one.


Ready For Battle
Music by Tallun

3D models and 2D artwork isn't the only kind of art. Tallun made some music for the project which sounds great! This is used in the intro sequence of the game and you can download it from below. Listen to it and give feedback at our forum!


Ready For Battle - [Download]


Skysphere Images
Images by SteveJ

Here are some great skyspheres made by SteveJ. He has created a lot in little time and they look awsome so I had to included it in the Newsletter. They're huge so I will link them and you can see each one without taking up the whole page.

Moutains
Night
SunRising
Sunset
Sunset2
Sun Rising 2
Desert
Snow
Seas


Here is what they look like in the game:




Outro

If you contributed something but didn't see it in the newsletter don't worry, there are a lot of things to write about and little space to do it. We'll get to your contribution soon enough! Don't forget to visit our forums, thats where our information comes from.

Our forums are Here.