I've decided that I need to work on something fun again, so I'm going to make a game. I really want to use C++, but I really like the ease of using Actionscript for graphics. So I'm going to use both!
How you ask? (You didn't ask? Nobody is reading this? :'( )
Well, it's going to be a network/online game. The graphics layer and control layer will all be handled entirely in Actionscript while all of the actual game code will be handled by the C++ server.
To make things simple-ish for me, I've decided it's going to be a walk-around RPG game with turn-based combat (think Final Fantasy). This basically means you (and 2-3 friends) can wander around in the game world each of you with different characters all controlled separately. You can chat back and forth with each other as well as meet and talk to NPCs. When combat happens it switches to a different "combat" view (again, think Final Fantasy style). I'm thinking that if one player is attacked it alerts the other players (probably via a red text message in the chat window). Other players can then walk to that characters position (I'd probably display some sort of indication that they were being attacked) when they approach they are given the option to join in the fight.
I plan to design the C++ part so that you can play through battles in text-mode without Flash at all. The C++ server will be able to run and have all of it's functions tested completely alone. This will be for debugging purposes only of course. I really wanted to make a real-time game but the complexities it causes me for network code is too much to deal with. The turn-based battles will save me a ton of graphics drawing too. I'll only need one sprite per enemy instead of around 20 each. I'll still need about 16 sprites per playable character though.
I've don't have a story or any other details like that figured out yet. I've got a few ideas bouncing around in my head but nothing definite.
This will be entirely open source. I don't expect anybody to help me but you are free to jump in wherever If you'd like.
Cool. Are the players going to be limited in how far they can get from each other on the map? Then it would be a party of people exploring the world. And battles would be with groups instead of an isolated individual. Or just make it unsurvivable alone if there are more then one person playing. I don't know. But I like the idea of multilayer FF.
I wasn't planning on restricting distance from each other. If players want to work together, they can. Why force them to? If they are close enough together they all get in the same battles. If they are far enough away they can run to go join their commrade in battle if they get there before the battle is over.
I'd like it if the game was possible to play by yourself, but also not be really easy with multiple people. I'm not sure how I'm going to work that.
Increase the difficulty/number of the monsters that you face in battle when there are more people playing.
That would force them to work together to survive. You'd also have to give more reward too, so people have a reason to play together (other than the fact that it is fun).
You could do it the rpg way and have characters with the ability to add protection to other players or have a "field" around that that will give everyone +10 strength or -10% damage when in effect. Also, better things could "drop" (if you are going to have it work that way) or enemies would be worth more points (because they are harder to kill) so you get a point bonus by working together because you kill bigger critters.
So I've got the UML class diagram for the game engine mostly finished. I think I've got all the properties figured out, but I'm missing a lot of the class member functions.
Most of the game engine decisions have been figured out. Here is a brief of list of various stuff.
- Games can have at most 6 players simultaneously
- A player can only control one charatcer (no parties as in Final Fantasy style games)
- I'm thinking of using Morrowind/Oblivion style skill increases as opposed to straight XP -> level gain
- Quests are non-linear. A character can be participating in multiple quests at the same time.
- Quests can be shared with other players (only if at the first stage of the quest)
- Enemies are controlled in battle by a fuzzy state machine.
There are a ton more things I've got planned out but I got tired of writing this list. So you'll have to look at the UML diagram if you want to know more.
Any help, feedback, criticism or suggestions would be greatly appreciated.
I've updated my class diagram to reflect some changes that I've made.
Maps, which are made up of cells (basically 1 viewable screen) now organize their cells using a 4-way linked list. Each cell has a pointer to it's North, South, East and West adjacent neighbor. The map only needs to keep a pointer to the starting cell. If I decide to to do multiple entrances then a map would need an array of possible starting cells.
I've also added character classes to go along with races, so now you can be a Druish Fishmonger or whatever.
Also the inventory system is similar to the oblivion/morrowind system. Defeating enemies only gives you whatever the enemy had in his inventory. So no getting "Giant Impaling Trident of Ultimate Doom" off of a lowly rodent or crab or whatever. To get a good weapon off an enemy you may have it used against you by that enemy first.
You will get rewards for completing quests though, and you'll be able to buy/sell items at shops.
I'm not expecting anybody to actual look at this, let alone thoroughly enough to actual critique it for me. But if anything I've said doesn't make sense, or if there is anything else you think I might not have thought of or planned out let me know. Thanks!
Woah!! Typed arrays! I almost forgot those existed!
...Gosh, I need to get back into some C++...
Where's our webbernet updates on your project?
Hello? [echo echo echo echo...]
The game is coming along well. I just finished getting XML loading for races and classes working. Next step is to make it so you can actually create a character. I should finish that tonight or tomorrow.
I'm uploading my UML diagram file as the gif files are getting too big to upload to the forum. The file can be opened or edited using UMLet (http://www.umlet.com/).
As soon as I get an SVN server, you'll be able to download the game and try it out. I'll include project files for Visual C++ 2008 so anybody can build it.
EDIT: Forgot to attach UML diagram file.
Oh yeah! I was going to set one of those up for you! Sorry. And do we need to up the upload limit on the forums?
Created a repository for the game at http://www.randomland.net/repos/rpggame/ (http://www.randomland.net/repos/rpggame/).
I haven't enabled anonymous read-only access yet so nobody can actually downloaded it besides me and Nick. I'll try to get that working this weekend.
Anonymous read access has been enabled.
You can download the latest source code from: http://www.randomland.net/repos/rpggame/ (http://www.randomland.net/repos/rpggame/)
It can be compiled using Visual C++ 2008 Express, available for free from here (http://www.microsoft.com/express/Windows/).
Here's a screenshot so you can all bask in the glorious graphics!
In this screenshot a lone hero name "Alfred" makes his way through an cavernous dungeon. A huge doorway leading into blackness looms up ahead of him. He can see a small pond on his right, near the west side of the dungeon. He cautiously heads for the doorway, knowing that he could be attacked at any time.
Alfred is pretty sweet. I saw him in action yesterday. He totally didn't walk through a pond and he talked to that ? guy. It was cool.
Brad and I were batting around ideas for client implementations. I think I might try to make a web-based (non-flash) client at some point, just for the heck of it. Just don't let this project fizzle; it's so the shizzle...my brizzle.
That would be cool. Ajax/Javascript client? Thats a good idea (though less pretty then with flash) but almost any modern browser could play using that. Even on an iphone! I could totally do some work on that with you, if you wanted help.
The more ports the better I say. I'll be making a fairly simple network interface for communicating with the game server so the client software isn't going to be very complicated. You'll also have my C++ one to go off of if you want to create a port.
It'd be awesome to have one that can be played from any cell phone (even if it is text-based). Of course, using PHP, Javascript and Ajax it's possible to draw a slightly better non-text based map. All the input would still have to be text based, but the map could be drawn using actual lines and whatnot.
I'm currently working on the inventory system and after that buying, selling, using and equipping items. When that is done, I'll need to work on enemies, the battle system and the quest system. When all of those are finished the game engine will basically be complete. I'll still have all of the network functionality to do of course.
I'm thinking I may need to start working on some of the network stuff, just so I don't accidentally program anything which will make it hard to network.
I want to learn some network stuff. I might just have a look "over your shoulder" while you are doing that and perhaps bother you with a few questions about how things work.
Sounds good to me. What are you going to use for the socket programming? Because winsock is obviously a Windows-based library...and I'm assuming the target server is Nick's Bedroom Linux, no?
And yep, I was thinking a JavaScript, Ajax, PHP mash for a web client. It sounds like a good little project. And Alfred, his gang, and a few UI controls would probably fit nicely on the iPhone in landscape mode.
@nick, you still have your phone running Windows Mobile, right? We could test on that too.
I'm developing for Windows because I don't have any easy way to develop for Linux. I don't have any extra computer to turn into a Linux box, Cygwin is no good for developing on and I like using Visual C++ Express. If could overcome all of these I'd switch to developing the server for Linux.
I do however plan to create a Socket class to hide all of the socket programming functionality. Using some compiler directives it is possible to check which operating system you are compiling on. Then you could compile the same source code an have it work on both operating systems.
I'm sure I can rig up a Windows server somewhere until I can get it ported to Linux.
Linux development is just a duel boot away. Or VNC into by little box-o-nix's. Its fun! I think gparted will even resize ntfs partitions now. Or put fedora/ubuntu on a flash drive and enjoy!
I do still have the phonny time windows mobile (V6 yo!) Its even gots its GPS ears on now! Plus there is a burning fox lurking inside... with an opera and an interwebs exploder too!. .. .
Are there any decent development environments for Linux? No, Eclipse does not count.
It needs to be at least as good with C++ as FlashDevelop is for Actionscript.
Quote from: Brad on Jan 26, 2010, 12:16 PM
I'm developing for Windows because I don't have any easy way to develop for Linux...
I haven't tried it with C++, but I have done a little web dev with Apache running on a VirtualBox (http://www.virtualbox.org/) installation. You can [fairly] easily mount a host filesystem on the virtual machine, thus being editable in your nice Windows-based GUI (Visual Studio or whatever).
Case in point: I have my
www directory physically stored on my host computer's NTFS filesystem but mounted on the client machine (Ubuntu under VirtualBox). I can edit the PHP, HTML, and JavaScript in Windows. I can view the page in my favorite browser in Windows. I leave the virtual machine minimized. It works pretty well
1.
You could do something similar, though obviously you'd have to employ the virtual machine to do the compiling for you. Still, you could have the niceties of Visual Studio's polished GUI.
1 Recently, I ran in to so many CSS caching issues while developing a WordPress theme that I finally told WordPress the site URL was localhost, embedded the CSS in the index.php template file, and viewed the webpage on the client machine (Apache server). Just an aside.
What are you making word press themes for? Just out of curiosity.
But thats cool. I never knew you could do that with VMs.
To keep the thread hi-jacking to a minimum, I responded here (http://randomland.net/forums/index.php/topic,145.msg1860.html#msg1860) -- a place to talk about possible client ports for this project. Or any other vaguely related ramblings, such as how to set up VirtualBox.
I've completed work on the inventory system and added in merchant NPCs from whom you can purchase things. Still haven't finished selling though, that'll be done tommorow. The item systems is now pretty much done, minus the "effects" on things (such as +10 fire damage on your weapon). Once I finish up with the merchants I'm going to switch gears and start figuring out network stuff.
I want to have the basics of the network stuff figured out before I start writing the battle code. I don't want to write the battle code in such a way as it makes networking difficult.
The game currently has no name, and while I do have a setting and storyline mostly figured out, I don't want to talk too much about it until I work out more of the plot and some of the characters.
Of course, the game is setup so that you can easily change the setting, plot and everything just by changing the XML files. So you could go from a traditional fantasy setting to a science fiction one without changing one line of code, or recompiling the server. You'll have to change the client of course as all graphics will be wrong. Unless you want elves in space or something?
The new adventures of Elves IN SPACE! That's what you should call your game :)
Elvis in Space?
So Zourtney convinced me to install virtual box and Fedora on my laptop. Once I get that setup I'll start developing the server for Linux as well. Preferably I'll develop for both windows and linux but I'm gonna have to write my own socket code.
There are several open-source socket libraries but they are all GPL. Since I don't want my entire project to have to be GPL (even though it will be open-source) I can't use them.
Using a library does not make you project GPL I don't think unless you modify the library.... I could be wrong though. That might only be the lgpl.
That's the LGPL. If you use ANY code including just as "black box" library then your whole project has to be GPL.
LGPL is the sane version where you can use LGPL libraries without having to put the entire project under the GPL. There are much better open-source software licenses than the GPL and I'll probably be releasing this code using one of those.
Anyway, I'm having some major problems getting Fedora to work right and the install image is 3GB! So I installed Ubuntu instead. The install image for that was only 600MB.
Fedora can be kinda a beast I guess. The install off the live CD is much smaller, kinda like ubuntu. But the full fedora install has many more tools and packages preinstalled and setup. With ubuntu you will have to add them as you need them. Buts that's probably better for you as your just using it for development and not expecting eclips, open office and gimp all there and ready to go (thats about a gig and a half there. I could be wrong about them being default in fedora. OO is, but I might just get eclipse because I always select all the dev packages.) And ubuntu has a better setup for VNC in my opinion. You can easily get a graphical system login screen through VNC that supports logging off and serving a fresh login to any new connections to the server. I rather like that.
But anyways, cool. Linux is good. You should duel boot something around there. Seems almost everything I have has at least a little linux in it (even our router and soon perhaps my RC car.) And a linux server for your game means that there can be a server up all the time on randomland. I don't plan on killing my bedroom server anytime soon.
Got Linux working and finished porting that socket class over. I'm going to have to rewrite part of it though as it was written kinda of stupidly (In my opinion anyway).
The server will basically have on thread which listens for new connections. When it finds one it will create a new Client class (which holds the socket connecting to that client as well as a pointer to the Player class) and add it to the list of clients. It then goes back to listening for more connections.
The main program runs in a loop and every time through loop it receives all the messages from clients, processes them and sends back any responses.
Still working on the protocol for communication between client and server. I'm thinking it's going to be basically a command followed by a delimited list of data and ended with a null. For example "Move;1;n\0" would be a command to move player 1's character north. Or something like that anyway.
Got my little test server working in both Linux and Windows now (including the threading!)
I'm working on incorporating it into my game code which shouldn't take long. Then I'll start writing the network API.
Dang, you move fast. And "Cool."
Basic network communication completed. I've started working on my text-based client too.
So far I have the client connecting to the server and sending a HELLO packet identifying itself with a user agent string. The server then sends it's own HELLO packet back identifying itself with a user agent string as well.
Now I'm working on getting the threading going for the text client so that it can listen for incoming server packets while waiting for user input. I've started writing up the documentation for the network communication and will post it to randomland or something when I'm through with the basic parts.
It's been a while so I though I'd post an update on my progress for the zero people who care.
Player and character data is now saved in an SQLite database on the server rather than flat XML files. This has the benefit of being able to easily check for naming collisions between characters as well as allow quicker updates while the game is actually running. All the settings files and map, enemy and item data are still stored in XML files though. I plan to keep it that way.
I've gotten the network communication for the player part completed. You can now login, or create a new player from the text-client. I'm currently working on the character part. This will be my first test of sending "large" amounts of data with my packet and socket classes.
Hey, at least zero-point-one people care, because I care. And it's kind of sad not having the random "Brad's game design interlude" in the middle of my day. But that's not your problem.
The goings sound good. Keep up the coolness and let me know if I can do anything. You could post screen-shots of stuff, too. Are you going to make a Randomlandy page?
Sorry, I have been distracting him from game design during lunch with cooperative half life 2. :) Perhaps we can do a conference call. Or you could join us and just turn voice chat on. But not likely.
That could be cool, but porbabaly shouldn't happen. Apparently we have really low bandwidth. The word in the hall is that we are running off of a 1 megabit (down) satellite line. Ick. Plus, I don't quite have the same type of position where I get to control the firewall and everything. Bummer.
No need to unless you are running the game server. But satellite sucks for up speeds. So you might not enjoy it due to slowness.
Oh noes! We might be off topic!
Sorry. It happens.
Swamp dive! Swamp dive!
DOWN PERISCOPE! Dive! Dive! Dive, you fools, DIVE!!!
I need a submarine. :)
And brads game needs giant carnivorous ants. And velociraptors. And perhaps even some velocipedes. (http://en.wikipedia.org/wiki/Velocipede)
So...what's the status of this project? You didn't lose all of your motivation, did you?
No, motivation has not yet been lost. I'm currently working on the character (not player) creation/selection menu and communication. You can now create a new character in the client, transfer it over to the server and have it saved in the database. I just need to finish the part where the server sends back the newly created character's database ID to the client. That'll probably be completed this weekend.
Once that's completed I'll be working on getting the actual game components working (walking around, talking to npcs, etc...).
Then finally when that is done I'll start working on the battle system. That's the part that still has the most work left to be done on it.
Speaking of which... the biggest gameplay questions I still need to answer is... What do I do when a character dies? The answer to this can range from permanent death (you lose your character forever) to just respawning back in the nearest town or anywhere in between. I think there should be some kind of penalty to death... but how much of a penalty?
Perhaps starting with reduced stats for a short time, or less then full health as a punishment for death. It all depends on what dynamics are in the game. Do weapons wear out? Does health just regenerate over time? Perhaps some items in your inventory wont persist past death (food or other perishables maybe.)
You could temporarily lower stats or reduce the character maximum health for a certain amount of time. That would work...
As for your other questions: Weapons do not wear out. Health does not regenerate over time. You do not need to eat food to survive.
How will health be restored? Potions? First aid? Healing spells? Vampirism :) ?
Yes. No. Yes. Yes.
Wow. I was mostly joking about vampires but cool.
Wait...don't you have to be a vampire to actually benefit from vampirism? Otherwise, it's kind of like,
"AAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHH! My jugular vein!!!!!!!!"
But, I'll admit it -- I'm not well learned in all things vampire.
Gahhh! Finally completed all the character creation/deletion/saving stuff today during my lunch break! Yay!
Now I'm FINALLY to the point where I can make the game actually start doing stuff. Up first is getting the map to transfer from the server to the client. Followed closely by movement commands being transferred from the client to the server.
I've also created some of actual game content. I've decided on 6 playable races and 5 classes to start with. I really think it ought to be 6 races and 6 classes but I haven't been able to come up with another good class that fits in with the rest of them yet.
Are any of the classes restricted to only a few races? Or can anyone take on any profession they like?
And I think someone would have to be a vampire to benefit from sucking blood like that.... Otherwise, yeah it would just be biting someone. And probably ineffective.
Any race can be any class. Vampire is not one of the races (it's more of an affliction or disease) so biting people to restore health is not going to be an option for the majority of players.
I've decided I'm going to be writing a Windows console version of the game client. The server will still be portable to both Windows and Linux. This is mainly due to the incredible frustrations of trying to create a usable interface in the console while remaining portable. I'll try to design with a future Linux port in mind, but at this point I'd rather work on more important things.
Developing only for windows will allow me to do better things like an improved input (no having to hit enter every time you want to move) as well as colored text.
That makes sense. As long as the API is solid...and I'm sure it will be. The ultimate goal is still a Flash-based client though, right?
Flash is so unportable when it comes to mobile devices. It would be easier by far to do it in flash, but it would be a desktop only app. Doing it in html and javascript would make it compatible with all sorts of things. We should shoot for mobile opera, safari and chrome support I guess. Who cares about IE, no one uses it in the mobile world.
It'll be interesting to see if Microsoft "pulls an Apple" in regards to what web browser(s) will be available on the Window 7 Phone OS. It sounds like they're really clamping down on what "apps" can be written for it.
Sigh...and thus, Google takes the helm of the developer-friendly mobile OS. :-\
Sad really. All these people need to realize is that a decent interface is all they need for a strong hand in the mobile area. All this talk of disabling multitasking and locking down apps is silly. I like having a central place for people to make applications available, but any of the big three can co that easily. Making it so people want to write applications for your platform is the key. Either though matket share (like apple) or by a good API and letting the use install anything they like. Go ahead and lock down parts of the OS for security. But please keep it usable.
So looking through all these posts and reading stuff I must say that it sounds pretty cool. I, of course, can be of no benefit to the project other than to say 'yes! it's awesome! don't give up!' or something like that. So now you know.
^ Thanks! Hopefully I'll have more to show you guys soon.
I've started writing up the documentation for the network interface. What I've got so far can be found here: http://randomland.net/repos/rpggame/docs/%28Unamed%20RPG%20Game%29%20Network%20Communication.html (http://randomland.net/repos/rpggame/docs/%28Unamed%20RPG%20Game%29%20Network%20Communication.html) unfortunately due to the way subversion works you'll need to download that file to get it to display correctly. Or you could just use checkout the whole repository and get all the source code too!
For you guys who were talking about making an HTML5/Javascript/PHP port, please take a look at that and see if you can understand it and also let me know what other information you think would be good to have on there. I don't think I'll be able to document enough that you could create a port without even looking at the source code for my c++ client, but it should be pretty close-ish.
Cool. I started looking at it but got tired of reading html. Maybe we should add a docs folder to the randomland server. I probably want to make some simple docs for my Drupal module, too (which is also under SVN). I'm definitely interested in seeing the progress. I'll check out the latest code some time today or tomorrow. And try to comment on your docs. I suppose we could set up a Wiki, now that I think of it. It's not my favorite system, but it'd allow for easy publishing of changes.
A wiki is not a terrible idea actually. That'd allow for easy technical and gameplay documentation. And if there are any individuals without coding experience that want to contribute to the game design or something (cody?) they can read/edit the wiki?
If we don't do that then we at least need a documentation directory because svn is really not the all the convient for serving docs.
I like the idea of a wiki, or some other dedication documentation manager.
I remember looking around (http://drupal.org/node/356583) for Wiki-type Drupal modules (http://groups.drupal.org/node/12357) once upon a time. I think the consensus is "don't" because "wiki is just behavior (http://drupal.org/node/356583#comment-1191883)". I'd prefer it to fit in with the themeable Randomland, if possible. Plus, with Drupal you already have an enterprise content management system chugging away, so why not use it?
It seems there are dozens of modules out there to help implement this. But, of course nothing complete and self-contained (sigh)...Who's up for another round of Drupal's version of D-L-L-h-e-double-hockey-sticks?
("lol" (http://build2be.com/content/dll-hell))
Crazy.
So are you guys gonna implement some sort of wiki system or make a documents directory?
I've progressed pretty far with the multiplayer walking around portion of the game. Multiple clients can join the server and walk around them map. Clients all can see each other and keep up-to-date on the positions of other characters.
I still have some bugs to work out when a character leaves the game however. I also still need to write the portion for transitioning from one map to another. This should take too long though. Once that's done I'll write a simple chat system (I'll make it more complex later). Then when that's finished I'll do the dialogs with NPCs and the shopkeeper stuff. That'll put me up to do with all the server functionality.
I've been practicing my drawing skills so that I can start drawing stuff for the non-text based version of the game too. I'm not that great of an artist but the drawing is fun.
Lets see some drawing!
Anyone have a suggestion for the wiki?
I will look at some drupalized solutions.
update:
Media wiki looks ok. There is a bridge that will connect it to the drupal logins. We can then theme it to look like randomland. Even add some randomland type into to it along with the game documentation.
http://www.mediawiki.org/wiki/MediaWiki
;D ;D ;D I've completed the walking around network code! ;D ;D ;D
You can now:
- Login
- Create a new player
- Create a new character (choosing from 6 races and 6 classes)
- Delete a character
- Choose a character and join the game
- Move around the map, running into walls and NPCs (no collision between characters, they could block exits and be jerks)
- Move from one map to an adjacent one
- Use an exit to be transported to a non-adjacent map (think ladder, staircase or portal)
- See other characters on the map and watch as they move around
I'd upload the server to Randomland, but I'm still having some problems getting sqlite to work on linux. I think there is something wrong with my makefile.
Next up: chatting between characters. Followed By: FIGHTING!
Awesome, dude! Sounds like good progress. Need help with anything?
Ok, here is something I need help with and it'll require very little work from anybody.
As you may or may not know, RPG games are heavily stat driven. Characters, monsters both have stats. Weapons, armor and items effect character and monster stats. The stats (and virtual dice rolls) determine the outcomes of character's actions in battle. So it's very important that I figure out exactly what stat variables I need to make the game work. I've already had to modify the database and all of the network, database and XML functions dealing with character stats and I don't want to do it again.
So, what I need you to is look at all of the stats I've listed (along with their explanantions) and using both your extensive programming and video game player knowledge and see if everything makes sense and if I'm missing anything. These stats (unless otherwise stated) apply to both monsters and player characters. Thank you for your help.
Character Only Stats
Name | The name of the character |
Sex | Male or Female? |
Level | A number used to compare relative strengths between characters. Goes up every 15 skill increases. |
Map ID | ID of the map this character is on. |
X | X position on map |
Y | Y position on map |
*The following stats apply to both characters and monsters*
Base Attributes
Strength | Affects melee damage and the total weight which can be equipped at once. |
Agility | Affects ranged damage and dodge chance. |
Constitution | Grants certain unalienable rights. Actually no, it determines your maximum health. |
Intelligence | Determines maximum MP (magic points, mana points, magicka, who cares?). |
Willpower | Affects resistance to magical damage. |
Other Attributes
ID | Unique identifier for the character or unit. |
Max HP | Maximum health points. |
Max MP | Maximum magic points. |
HP | Current health points. |
MP | Current magic points. |
Resistances
Fire Resistance | Your % resistance to fire based damage. |
Shock Resistance | Your % resistance to shock based damage. |
Frost Resistance | Your % resistance to frost based damage. |
Physical Resistance | Your % resistance to physical (stabbing, crushing, slashing, etc...) based damage. |
*Each of these skills is tied to one of the base attributes. After improving in a skill for a specific stat 3 times that stat goes up. For example if you gain 3 levels of melee skill your strength will go up by one.
Skills
Melee | How skilled you are at melee attacks. Affects damage with melee weapons. Improves strength. |
Ranged | How skilled you are at ranged attacks. Improves Agility. |
Light Armor | How skilled you are at using light armor (apparently armor takes skill). Improves Agility. |
Heavy Armor | How skilled you are at using heavy armor. Improves Constitution. |
Destruction | Your skill with destructive magics. Improves Willpower. |
Restoration | Your skill with restorative magics. Improves Willpower. |
Alteration | Your skill with magic that alters the state of something. Improves Intelligence. |
Conjuration | Your skill with magic that summons things. Improves Intelligence. |
EDIT: Finishing now
*Some races are incapable of equipping certain classes of items. A race with giant horns sprouting out of its head is unable to wear helmets for example.
Equippables
Weapons | Is this unit capable of wielding a weapon? Most animals can't wield weapons (monkeys can!) |
Helmet | Is this unit capable of wearing a helmet? |
Cuirass | Is this unit capable of wearing a cuirass (chest armor)? |
Gloves | Is this unit capable of wearing gloves? |
Boots | Is this unit capable of wearing boots? |
Greaves | Is this unit capable of wearing greaves (leg armor)? |
Rings | Is this unit capable of wearing rings? |
Shield | Is this unit capable of wielding a shield? |
*There are a ton of variables I need to keep track of the in-between status of the various skills and stats.
Counters
Level Progress | Keep track of the number of skills increased this level. Once you reach 15 you gain a level and set the counter back to 0. |
Melee Progress | Keep track of the progress towards earning the next skill level in melee. |
Ranged Progress | Keep track of the progress towards earning the next skill level in ranged. |
Destruction Progress | Keep track of the progress towards earning the next skill level in destruction. |
Restoration Progress | Keep track of the progress towards earning the next skill level in restoration. |
Alteration Progress | Keep track of the progress towards earning the next skill level in alteration. |
Conjuration Progress | Keep track of the progress towards earning the next skill level in conjuration. |
That's all folks. Now what do you guys think?
Yes, that's wiki material. Can you have comment threads with that wiki site?
Wow all I can think to say is this is sounding more and more awesomer and I kind of feel bad I'm not more knowledgeable in areas that would be helpful. But yes! Cool.
Quote from: zourtney on Apr 09, 2010, 08:12 PM
Yes, that's wiki material. Can you have comment threads with that wiki site?
Wikis have discussion pages which have comment threads and are tied to individual pages. So yeah it'd be a lot easier to discuss this kind of stuff.
Yes?
So I've finished the attributes post. After doing it I've realized I have the following problem:
Both strength and constitution only have one skill each which can raise them. Strength isn't as big a deal, but having constitution only tied to heavy armor makes it really difficult for light armor wearing characters to actually gain a higher max health points.
So... I need another skill which is tied to constitution (also known as endurance).
You could remove the distinction between strength and constitution and just merge them. You get more hit points then by being stronger.
I've come to what I think is a decent set of skills and attributes. I've posted them to the wiki pages. We can move discussion of individual aspects like that to the wiki talk pages. It's easier to follow then a thread with hundreds of replies probably.
http://wiki.randomland.net/index.php/Unnamed_RPG_Game (http://wiki.randomland.net/index.php/Unnamed_RPG_Game)
What! Organized, threaded discussion! I will have none of that! I demand a massive flat thread containing three concurrent conversations!
Being that I really don't know how to use the wiki talk thingy I'll just say here that I looked at the skills and stuff and it looks pretty good to me. There is of course the matter that using heavy armor in no logical way affects how much health you have... but then again for the sake of balancing it out to two for every attribute I say it's fine. Such is the way of video games.
In my boredom I happened to make another skill/attribute list for thinking about. Maybe it sucks, and maybe it doesn't. It's late and my brain isn't working all that great but here it is...
Strength â€" Affects melee damage and carry weight
Blade â€" Affects damage of bladed melee weapons
Blunt â€" Affects damage of blunt melee weapons
Dexterity â€" Affects Ranged weapons
Marksman â€" Affects your skill in using ranged weapons
Throw â€" Affects your skill at damaging enemies by throwing items?
(We sort of talked about it right? Allows you to damage from a
distance without having a ranged weapon?)
Agility â€" Affects armor and dodge chance
Light Armor â€" Affects skill in using light armor
Counter â€" Determines chance of successfully executing a counter attack?
(Trying to be creative here…it could work)
Constitution â€" Determines your maximum health
Guard â€" Your skill in protecting yourself and your allies
Heavy Armor â€" Affects skill in using heavy armor
Intelligence â€" Determines maximum MP
Destruction â€" Your skill with destructive magic
Restoration â€" Your skill with restorative magic
Willpower â€" Affects resistance to magical damage
Alteration â€" Your skill with magic that alters the state of things
Conjuration â€" Your skill with magic that summons things
Thanks everybody for all the suggestions. I've decided to go with the attribute list currently on the wiki. I may change it in the future, but I've already gone through and updated the server and the text-client to use the new attributes.
So, up next is my battle system. First thing up is actually figuring out my stat system. Then I'll need to create a few weapons and armors as well as a couple of enemies to battle.
I've put both the list of classes and the list of races on the wiki, so feel free to offer any comments, questions or suggestions there.
So, is there any concept of intellect / persuasive influence as it relates to dialog(ue?) with other characters? Or is there not going to be much of that?
The dialogue with NPCs is a fairly simple system. It's not really even a "dialogue" system, more "monologue". Basically each NPC has a set of things they will says each tied to set of requirements. When you talk to an NPC the game simply goes through the list of responses and finds the first one which has all the requirements met. So the responses with the most stringent requirements come first in the list, followed by the more general responses.
The requirements can be anything. They could be a check to see if the character is intelligent enough, of if he/she is the correct class/race. It could be check to see if you've killed 50 giant rattlegators. It could also be check for your current completion state of a quest.
The purpose of speaking to NPCs is to gather information, attain quests and to complete quests goals. It is also possible that talking to an NPC could lead to a "boss" battle.
I'm still writing the scripting engine for handling dialogue response requirements. It won't be complete until quests are also.
So...how's the game coming along? I'm mulling over web-UIs, if we ever get that far. Let me know...
It's a coming. I'm working on all the server-side code for battles. Pretty much making up all the damage and hit % formulas off the top of my head. I'll have to refine them later by play-testing. Still got a ton of work to do on that then I'll move onto "effects". Oh yeah and the AI. Currently the AI is "attack the first enemy in the list". Not exactly world-class there.
If you ever get a hankering to write some code though, you should try and see if you can write some code to read/write the game packets. The packet format is set in stone at this point, and will not ever be changed (the data which is sent on the other hand....) Detailed information on how the packets work is on the Wiki (or it will be soon, as in today). You'll need to be able to convert integers into network-byte-order (big endian). So you'll have to figure out how to do that in PHP, Python, or any other P-language you are thinking about writing this in.
PavaScript?
So I've started on the Actionscript 3 based graphical client. Its nowhere near playable yet, but progressing fairly speedily.
Because it's graphical I actually need some graphics to make it work. Actually I need a LOT of graphics. Due to the large number of graphics to draw, I decided to create some place-holders until I get around to actually drawing "good" graphics. These are basically just glorified stick-figures. I've done about 20 of them so far and have gotten the player character graphics done for two of the classes.
The two classes are the Weaponmaster class and the Shinobi class. I actually kinda like how these turned out, so they may stick around for a little while. Still got 3 more classes to draw and around 1 bazillion enemies. I probably won't draw as cool of temp drawings for all the enemies though. Probably just a few generic ones, and then start with the real ones.
Let me know what you think.
Hahaha! I like them. Especially the lizard ninjas :) I like that they have masks covering their mouths yet still have teeth showing! It makes me laugh.
Impressive for one evenings work.
Well, having a mask that covered your teeth would be silly! And yes, nice temp drawings. It'll be cool to see it in action!
Decided to do another set of temporary* drawings for another one of the 5 classes.
This time it was the Dragoon. The dragoon is warrior who models their fighting style after that of the dragons. They battle with both lance and magic. They are a hybrid physical/magic type which makes a more well-rounded character.
They wear a helmet shaped like a dragon. I think they came out pretty ok. Let me know what you think.
3 out of 5 classes completed.
Go go power-rangers! Hehe.
I like them. Even if they kinda remind me of pink rangers :)
Hmmm... I kinda noticed the connection myself. Perhaps I shouldn't use so many bright colors like that when drawing armor w/ helmets....
So I went back and modified the Dragoons to be a little less bright and also changed the middle piece on the bottom of their helmets because I like it better that way.
Also, I went ahead and drew 10 more pictures for another class. This time it was the Sage.
Let me know what you think.
EDIT: Minor changes to the sage drawings.
Nice. Much less "power rangers."
Is a sage like a monk?
The sage is basically the "mostly-magic" character class. The've got good bonuses to most of the magic types like destruction, alteration and conjuration. They aren't as useless with a weapon as wizard or sorceress though, but their skill sets lean in the magic direction more than any other character class.
I like the Lamia guy. He's sportin' the goat. And yeah, good job!
Ah the final class is completed. The Battlehealer. This class focuses on healing and restorative arts along with bashing their enemies with blunt weapons or firing at them with longbows.
Now that this is complete I can turn my drawing attentions toward enemies now. They'll still be in the same stick-figure-ish cartoonish style. Probably with a little more detail as their is only on picture per monster, rather than 10 different variations per class.
Let me know what you think.
I think "cool." When do you think you'll have a playable demo? I'd start writing a PHP back end, but my "free" time project is still Drupaly...until I get sick of it.
Playable demo is gonna take a little while. I'm currently bogged down re-inventing the wheel by creating a bunch of basic UI components. I need to make a list component and radio-button style toggle button group components. Super boring stuff.
Understandable. And no, recreating all that basic UI junk doesn't sound like much fun. But perhaps you could host it on randomland or sourceforge or something as a separate project for people in the same boat...if you wanted, that is.
Also, Eve offered to play anything you make. She probably doesn't know what all that would entail, but she likes games and therefore would be a better gameplay-tester than I could ever be. But I could be the annoying guy, watching over her shoulder recognizing some obscure 6-step process which produces a bug...because that's what I do. And yeah.
The server is now up and running on Randomland. Port 3142. You can try and connect to it if you'd like. Try out these HTML5 javascript sockets eh? I'd upload the Flash client, but I'm not sure where/how to put that on drupal as it will be continually updated and having like 50,000 nodes of old versions sounds lame.
Also, I've completed all the basic UI stuff and now I'm on the non-basic UI stuff. Like creating the map! Soon, a barely playable demo should be available.
Cool. And if you want it on the site just make it its own page and keep updating (editing) that page.
Cool. I look forward to seeing it.
And you can just drop the file under /sites/default/files/ and statically link to it. You don't have to make a Drupal node for every file.
Hey, what ever happened to this project? Don't let it die!
It isn't dead, I just got to a spot which was boring and procrastinated about it. I need to rewrite the way the tile graphics are loaded in the Flash client. Then I have to get the player graphics loaded and displayed on top of the map. Then write the input event handlers.
At that point I'll basically have a you can walk around and look at things on the map sorta game. Sorta like that ancient pascal game I made with a river and a guy who liked cheese (except this time other people could also come and walk around in the same area).
I'm also looking into what it will take to write an android client for this game, as I'll be getting a google phone sometime next week probably and that would be really cool.
That would be cool. Why the new phone? I suspect my next phone will be running some flavor or Android. I'd be interested in learning how to program for it. But I am interested in many things, and good at none.
And how is the new job going?
As I haven't been actively coding at my job yet and most likely will not be for the near future I seem to have regained some of my personal coding project motivation.
I fixed the tiles to load dynamically now, and also finished getting the small versions of the character images to load dynamically. I haven't actually created small versions of the character images, but the placeholders load fine.
Still need to redo the large character images to be dynamic. After that, it'll be actually working on the game interaction mostly in event handlers and packet communication. Pretty soon the flash client should catch up to where I left off with the server and text-based client.
Do you still need some map tiles drawn? Trees, water, transitions and all that?
I forgot most of what we talked about during our map talks. But I might have a picture of that sample water/grass/bridge things we drew on the white board someplace.
If you want help with tiles I can use any help you can give. I will post the required sizes and whatnot when I get home.
Tile size is 40x40, GIF file type. No transparency or anything of the sort needed. Super basic.
Cool. Now its here for all the world to see. And me to stop forgetting :)
Bam! Dynamically loading graphics are finished!
On to a little bit of UI, a little bit of event handling and an actual working demo!
I feel so underproductive now. :)
Completed all the basic movement, map changes, NPC loading.
Currently working in the game:
Creating a new account
Logging in
Creating a character
Joining a game
Loading maps, NPCs and other characters
Walking around
Changing maps
Using exits
So basically you can join a game and wander around a mostly empty world with other players. I'll be working on communication between player characters next.
If anybody wants to try it out, let me know and I'll set up a server somewhere.
Cool dude. Let's try it out! The front end is still Flash-based, right?
Yep, front end is flash based. Server can run on either windows or linux.
I am currently in the middle of getting the messaging to work, but I'll try and set up a server this weekend sometime.
Finished the basic chat system. Set up for everything besides person to person "whisper" chatting. Global messages, system messages, party chat all that stuff will work. Except that I don't happen to have any method of sending out system messages, nor any sort of party system that you can join...
So what should I work on next? Basic movement and player communication is complete. There are lots of things I can do at this juncture...
Some possibilities:
- Start working on the battle system, enemies, attacking, damage calculations, etc... biggest area I haven't even started programming yet.
- Buying and selling from merchants. This was completed in the text-based client but nothing so far in the flash-based one. I haven't started this yet because I am not sure how quests will affect the dialogue system (and therefore all NPCs including merchants)
- A map editor written in C#. The map files are all written in XML with a space delimited string for the map data, but it is really hard to design maps once you get over 10 tile types. Stuff doesn't line up properly anymore... I am going to write this in C# because it makes Windows forms easily and I don't want to do it in VB.net.
- The party system. Join a group of adventurers and hang out in a really inconvenient chat room.... as there isn't much else to do yet.
GIVE ME YOUR INPUT!
The battle system sounds the most fun. But the map editor sounds thr most useful. If I wasn't tring to make a drupal module I would offer to do some map maker work. I stil am offering to daw any map tiles you need though.
I was thinking today that I may need to change my maps, npcs, quests and dialogue to be stored in the database rather than in XML files. Then I can just load the maps when players are currently on. This would allow for a much much larger world, without running out of memory. I could also increase the allowed amount of players as well, not that I think too many players will ever be a problem.
Then I will work on the map editor. It'll be a C# windows app. You'll just point it to the location of the database and it'll give you a list of existing maps or let you create a new one. Basically you'd choose a tile from a scrollable tile list, click on the map and set that tile's type.
In the future it can be expanded to do NPCs, dialogue and quests as well.
Finished switching the maps over to using the SQL database. Still need to write a "garbage collection" thing which removes unused maps after they have been loaded, but otherwise my "load upon request" map system is up and running.
This allows me to now start to create my map editing program.
C# FTW (as they say). Learn some XAML, Linq, and general .NET 4.x stuff for me. I have too many other APIs to learn at the moment.
Do you need help with anything? I probably have about six other things to work on instead, but I can always offer.
Yeah, I guess if I am going to learn C# I may as well use Net 4.0 while I'm at it.
So I wrote a map editor for my game. C# .NET 4.0 and SQLite. It works too, only thing it can't do is delete maps (not sure why I didn't add that...)
Here is a screenshot. Source code is in the SVN. To use it you'll need to set the paths to the database and images files yourself (download the flash client and server source to get these files). They are still hard coded, haven't gotten around to making them be stored in a settings file yet.
Cool. I'll have to look at it when I get back in town. I haven't done any .NET 4.x stuff yet. Did you use the XAML stuff for UI? Did you use the Linq(?) features for data access?
Oh, and the screenshot doesn't seem to be working for me...
I can see it. Hmmm.
Nope and nope. The UI is already so simple and so is the querying that I didn't really need to delve into those. I'll get around to it eventually as I work more in C#. I think my next learning goal is going to be XNA though.
Yeah, XNA is probably pretty cool. I want to learn that...and those other things...and maybe some Windows 8 stuff. All I know about them is their names.
I didn't even know their names. I had to look them up.
"...and XNA came to stand for "XNA is Not an Acronym"." (http://en.wikipedia.org/wiki/Microsoft_XNA) Really? Another self referential acronym.
Wow. Ok. I like how that has no citation, either. I just knew it was an Xbox SDK, which is presumably PC compatible by now (Wikipedia says "any .NET platform"). Like a DirectX++.
Too many things to learn. Not enough time.
It is for Windows, Xbox and Windows 7 phones. With mono I think it could work with other OS. It uses Direct X but makes it quite a bit easier to use. It is actually pretty cool to use.
Wikipedia made it sound like a nice way to easily develop simple games. I think it would be worth playing with for that reason alone. Especially if one could adapt it to other platform without too much more work (http://rockethub.com/projects/752-exen-xna-for-iphone-android-and-silverlight).
I have thinking that (along with all my other projects) learning some mobile programming would be a rather good idea. And fun.
So I think the Flash client portion of this project is be dead. With my limited time to work on stuff I like to learn things which will be useful in the future or to use technologies which seem to be going somewhere. I don't think Flash meets this anymore. With Flash player being discontinued on mobile devices, the increasing usefulness of HTML 5, and Adobe now charging developers who make over $50,000 on their projects to use the advanced Flash Player features I think it is time to switch to new things. Like maybe Android development.
This does not mean the whole project is dead. The c++ windows and linux servers still work great so I won't be dumping those. Just the flash client itself is going away. If anybody wants to partner up for some android or HTML 5 development just let me know.
I would love to do something HTML 5/ Android (why cant it be both at the same time?) I have played around a little with HTML 5 and compatible socket servers.
I don't think the default android browser has full HTML5 support. It can't play browserquest for example. I don't know the specifics of what is/is not supported though.
That will change in the future. But for now playing with the android SDK would be fun.
What needs to be done (everything?) What are you planning on making?
I need to make some progress on my XNA project before I jump ship and start on Android or HTML5.
But basically a graphical client which communicates with the game server is needed. All the game logic is done server side but all the graphics, UI, network communication, etc needs to be done by the client. That means lots of sprite assets and tile maps and other user interface goodness.
If I was going to make one for Android though id make it a full touchscreen ui and have two sets of assets, one for phones and another for the larger tablet screens.
The client isn't hugely complicated... I wrote a text based on after all... the hardest part is getting it to talk to the server correctly.