About this blog
Diving head first into the project of my dreams. Train wreck imminent.
Entries in this blog
For shame, Omegavolt. FOR SHAME!
Yep, I was out for a bit there but for good reason. After having to ask for help with the isometric WASD movement for my game, I tried to add the character/item interaction. Now, I thought I knew enough about GLBasic to pull that off. Add the sprite, set the collision, set the button press, remove the sprite, add item ID to inventory array.
Well, turns out, my array was giving me errors and there wasnt an obvious command for sprite removal. So, I took a break. Yeah. Its hard for me to learn enough of a language to be able to create commands, but then the commands not work like I think they should. Completely frustrating and probably more of a motivation killer than not knowing the language at all. Thats the road to disaster for me. I had planned to ask the GLBasic creator AGAIN to help, but decided to hold off a bit lest I become too much of a pest. I mean, the guys programmed 75% of what Ive created so far. Why am I bothering???
But lo and behold, I have been rescued! In the form of a fellow OnGameDev'er named WyldKarde. He has plans to make a game just like mine and he plans for himself and his team to do the programming. They just need me to sprite it. :D
Does this mean Ive given up on MY dream? Not just yet, my friend. Not knowing whether WyldKarde and company have planned enough of this game out prevents me from knowing if they have the tenacity to complete it. So I'll have to keep my idea on the shelf, not trash it completely. Because one never knows. In the meantime, Ill use GLBasic for easier projects to get my feet wet in its mucky syntax to be ready to reload in case the new project goes tits up.
Here goes nothing. :P
I was able to figure out the isometric WASD movement finally, but it involved quite a bit of seemingly simplistic code and the results werent exactly stellar. Pressing two keys at once makes my character do a jiggly dance in some random direction and releasing the keys leaves the sprite paused midstep. And the reaction is slow. But its functional.
I decided though, that if I really want to continue on, I need to make sure this is optimized. Ive sent out a help request at the GLBasic forums. Ill probably find out that my 40 lines of coding could be condensed into 1 simple function. :P
Since Im not dedicated enough to master C++ in my basement on my own for this game, Ive opted for GLBasic. The reason for this is that: 1) its easy to pick up on and start off right away, and 2) if I ever need the power of C++, it can be implemented inline to my program.
It didnt take me long, however, to see how hard this would be on my own. It took me 2 nights just to figure out how to get my sprite to move across the ground in the proper directions when I push WASD. I attempted to animate the sprite as well, but its proving to be difficult.
Even going this far was enough of a slap in the face to let me kick the pride thing and realize that I will probably have to beg for assistance from the GLBasic community, or even the might of the GDNet community. But, Ill do what I must. This game must succeed.
Just finished up my To Do list. Its all of the portions I can think of for right now. If anything is left out, Im sure it will come up during the development and Ill add it in if I can.
To Do List:
Closed Beta Map
Character Creation Screen
------------------------ Closed Beta
Open Beta Map
In-game Message Board
------------------------ Open Beta
Tweaking and Patching!
Ive also add a quick progress bar thingy as my custom journal header so that everyone can see what Im up to so far. ;)
The latest thing I've begun to worry about is how the game will start. I intend not to have any NPCs at all, which might make it difficult for the first few players. Which then leads to wondering how I plan on starting them off. The idea was to start them off with a bare continent and let them build from there. But without shops, quests, or anything, this may prove difficult. They will want to build a city, but since my game will not be very popular, it might be hard for enough people to be together to do so. I may have to design a way for players to build villages without having to come into contact with each other.
So say that my very first player will come into the game onto a brand new continent. He or she will be equipped with the barest of essentials. A tent, a flint, and maybe a small weapon. From there, they will have to set up camp. A camp could be considered a 1-person town. But if more people come on, I would want them to build their camps next to the first persons camp so that it could become a village. So, Ill have to insert a rule about how to build towns by bunching up dwellings, and advise people that building next to an existing camp or village will cause it to grow and provide more resources. Good.
Then the people will need to get things. Say one person wants a sword instead of the dagger he has. Since he is not a blacksmith, he will have to let someone with the blacksmithing skill know that he wants a sword. Ill have to create an in-game classified ads of sorts so that people can read the ads and get their quests from there. Someone with a blacksmith skill reads the ad, and builds the sword. Or if the smithy doesnt have the materials, he'll have to put in his own ad to have fighters go out and collect the materials for him.
It sounds good in theory, but starting out, this game might end up being a bit boring. Or the first few dozen people will have to become a jack-of-all-trades to be able to get what they need. Ill have to wait until beta is up to find out.
Well, having never made a game on my own, I was doomed to make some mistakes along the way.
The first was wanting to use a game maker to make the game with. I spent many an hour investigating several different versions, including GameMaker, BYOND, Elysium(Konfuze), and even RMXP. This game deserves better. It would have to. There will be way too much custom stuff in this game to allow me to just pawn it off on some Mirage clone. No, I have to learn a language and, at the very least, use a game engine instead.
The second mistake was discovered after I decided to use C++. After familiarizing myself with the language, I realized that all of the notes that I had created so far weren't going to help me start programming one bit. I was going to need to know character attributes and skills, which I hadn't even bothered tackling yet. And once I thought about it, I realized that in order to determine those, it would be a good idea to know what those attributes and skills would be used for. So I set about creating the job structures for the game. I created 20 jobs in all, each with 4 levels of experience to obtain. With the jobs complete, I figured out what skills and attributes would be of value.
For the attributes, I was a little unsure at first. So far, all I had to start was the tried and true: Strength, Dexterity, Intelligence, Wisdom. But I was going to need more. These alone cannot help determine ones ability to run a town or run a shop, which are features Im including. But after a few drinks and a little imagination I came up with a few more: Charisma, Shrewdness, Leadership, and Workmanship.
Charisma is familiar to some, but I want it to be more impacting than Ive seen it in other games. It will affect prices you come across and it determines your guild size. Shrewdness determines the maximum amount of businesses you can run, and how good your trade instincts are. Leadership determines the number of NPCs you are able to hire, and how many buildings you can have in your town. Workmanship determines how many jobs youre able to hold down, as well as what your skill cap will be.
I designed these 4 to be opposing, much like Strengh and Dexterity, and Intelligence and Wisdom are. I still need to figure out how to distribute initial attribute points, but that will get figured out eventually.
BUT ANYWAYS... I think I'm on the right track. Im getting a lot of content down on paper so that has to be a good thing. Once I get all the characters variables set, Ill start with some simple programming.
Having returned refreshed and ready to hop into the project (I actually did a lot while home and opted to not let the project stress me out so much), I have spoken with my partner and we established some core properties. First and foremost, we gave the game a working title. There will be PvP in it, but we want there to be an anti-ganking system that will work somewhat like karma, so we decided to code-name the project Karma.
To throw in some fresh ideas, we also decided to make the races based off of animals instead of the standard Tolkien fantasy fare. The ones I know for a fact that Im having so far will be human (but not the typical ones, almost caveman-ish, a bit more primal at least), lizard, cat, bird, and fish. But with these new races, Ill have to establish relationships and cultures to an extent. I wont be able to assume my audience automatically knows how the lizards and cats will interact, like I could with dwarves and elves. That will take some extra time, but it will be worth it, I think.
Other than that, all is well and proceeding as planned. :D
Now that Ive made my final decision on what to do with this game and having all of my design docs standing by, I am finally ready to proceed. But where to start?
What I need to do now is establish how I want my GUI set up, begin defining the items I want in the game, and sprite my butt off.
The folks over at OnGameDev are very supportive of a 'Sims within the RPG' idea that Ive been tossing about, so I want to make sure I can pull that off.
I will be going on vacation back to Indiana for 2 weeks. I usually drink a lot of beer, play guitar with my dad, and play Scrabble with my mom, but Ill save some of the slower nights to get my sprite animations set up and do some concept art for the houses and items. Hopefully I get enough done so that we can put up a website of our own and show off our progress.
My new partner rarely communicates with me, other than to tell me that the features we want to have in this game will be next to impossible to code in VB, for him at least. This leaves me with only one option of course.
At this point Ive figured Ive done too much planning and not enough coding. *I* know what *I* want to do in this game and *I* know how to do it. What this will mean is that I will be building the game myself. This is what I had planned all along, so Im not bothered by it. Also, I wont have to make it online either.
Now, being perfectly content to do this on my own, and having had this planned from the start, Ill do what I had always intended on doing.
Isnt it great when you let little things turn into large gaps in productivity?
I dont think so either. ;)
It seems now that GM is not the creator to do this with. While GMs flexibility allows us to create a working online RPG, we arent sure its the best candidate for the job. My partner knows some VB, and has found this engine which works with VB and DirectX.
Ive heard that VB isnt that hard to tackle, so I may help out with programming duties here and there. For now, Ive got to draw up a new design doc which incorporates both of our ideas.
Ive added a team member.
Not sure what sort of issues, if any, will arise with someone else adding ideas. I think of it as a double edged sword, much like any other relationship. They may have ideas that I do not like and others that I think are phenomenal. Its going to have to be a compromise.
The first of these ideas is switching the game to an online one. I had seriously hoped to make it single player before I delved into the finer details of networking, but at least now I have support if needed.
And since my registered version of GM supports online multiplayer, I was pushed over the edge of the single player cliff into the online void below.
What have I got to lose though really? It can always end up single player should multiplayer not pan out. Might as well give it a shot. :D
My time away from this project has given me a chance to look it over and micro-inspect it for problems. Never a good idea. Not for me anyway. Im hyper-critical of anything I do to the point of never getting anything done. Im the type that wont put anything out unless I feel its PERFECT. This may seem like a good thing, yet I do it to a fault. The proof? My empty portfolio of games. My only solution is to take my time and ask for help when I need it. And stop being so damn picky.
Thinking over the combat system for Gold Fire, which seemed like such a good idea at the time, has now got me worried. The turn-based timed attacks worked great for X-Com, which is what I had loosely based my system on, but in X-Com, you used guns, which dealt a lot of damage, sometimes killing with a single shot. In a medival based fantasy RPG, however, this is not the case. With armor deflecting some shots, and monsters and players dodging or blocking or parrying others, it will take a rather significant amount of time to slay one monster, let alone several. This could be overly tedious. This does explain why action RPGs are so popular though. The hack-and-slash method works because the results come quickly. One does not have to fight for 2 to 3 minutes per monster. The fights are over in a few seconds. This shall be my new goal: Quicker fights.
I still want the player to have some say in how the fight goes down, however. I thought over an AI type of system, where the player picks a fighting style or offensive and defensive level, then lets his character go at it. As of yet, I havent figured out how to make this strategic ENOUGH, but I havent erased the chalkboard on that either. Another method Im seriously considering is something like a mix of Legend of Zelda and a fighting game, where the player has 2 buttons to block soft or hard, and 2 other buttons to attack soft or hard. Either of these could be fun, but the fact of the matter is, I have to actually code these systems to find out which is better suited for what I want to accomplish. After some more thoughts on what I could integrate into these systems to make them fun and interactive in my game, I will try some code out and see how she do.
AND NOW, thinking over the battle systems has also got me thinking over the weapons stats system, which in turn has me thinking over the weapons crafting system. I want there to be an unlimited amount of weapons that can be crafted, but in order to make this a useful option, there has to be a good reason to have so many weapons of the same type crafted. I have one of two ways to go about it. I can make it so that every weapon looks different, so that people will want to craft different weapons to make their avatars completely customizable. This will be hard as it will require an insane amount of spriting or an equally insane amount of coding to pull off. The other option is to make it so that every weapon crafted has different stats. This is my favorite idea so far, but the problem with it is that weapons dont have THAT many stats to make adjustable. Not to mention making the stat differences worthwhile or noticable. But that seems like the road I down. BUT... if I do, then that may mean I have to think over the gathering system. But I havent given that much though yet, so it will be easy to change if need be.
OK WOOO! Im done typing. Keyboards about to break. :o
While programming the timer for battles last night, I realized that if I made it so that defending took a set amount of time(which I had made quite short), and if a player tried to defend against an attack, and the defense didnt take as long, the player would have to wait until the attack connected before he would want to do anything else. So, to keep the player from having to continually hit 'Defend' until the attacker's blow connects, I have decided to make defense a state of being rather than a specified event. In ohter words, once a player clicks 'block' or 'parry', he will be in 'defense mode' until the attack connects, regardless of how long it takes, at which point the player will perform whichever defense move he choose.
Well this weekend turned out to be a bust. The spouse decided to work every morning on the days I had off, so I had to go to bed early to get the kids ready for school the next day. Absolutely nothing got accomplished for the game. I was pretty disappointed, but it hasnt been a total loss. The time away gave me a chance to look over the combat logic with fresh eyes and I noticed a few things that I left out.
Hopefully this week will prove to be more productive.
I implemented all of the enemy variables that were needed into my list. Going over it, I realized I hadnt added any armor variables, but those can always come later. I will take another shot at the Game Maker file tonight and see if I can get all the variables to mesh.
Today I began outlining the variables I would be needing for the battle system. Theres going to be a lot of them. A whole lot. It makes me wonder if Im going about this the wrong way. I mean, logically, the coding will work, but it may load the game unnecessarily. I wont know until I try it though. A quick glance over GameMakers help file allowed me not to screw up too much. I have some variables declared. I should have something tangible by weeks end. :D
Also, I realized while outlining the variables that I left weapon HP out of the weapons list. And that I didnt list any armor... at all. :(
BACK TO WORK!
I threw together this list of weapons over the weekend. Just the basics for now, until I can build the battle system. Feel free to call foul on my reasoning for the numbers, but remember, its only an alpha. I will still need to balance everything later. I did take some balancing into effect already though. Most weapons have an offset. Either they are heavier, or slower, or do less damage than their counterparts. Allows for better strategy. ;) Here they are:
GF Weapons List:
Name - Weight/Speed/Types/DamagePerType/Range
Stone - 1/x/P/P2/x
Shot - 1/x/P/P3/x
Sling - 1/8/x/x/15
Slingshot - 3/6/x/x/20
Dart - 1/4/P/P4/5
Blow Dart - 1/x/P/P4/x
Blow Gun - 2/5/x/x/20
Throwing Dagger - 2/5/P/P5/10
Throwing Knife - 5/7/CP/C3P6/10
Throwing Axe - 6/8/C/C8/5
Bolt - 1/x/P/P5/x
Arrow - 1/x/P/P8/x
Short Bow - 4/8/x/x/20
Common Bow - 5/8/x/x/24
Long Bow - 8/12/x/x/40
Hunters Bow - 5/10/x/x/50
Rangers Bow - 6/8/x/x/30
Cross Bow - 12/12/x/x/60
Fang - 2/2/P/P8/x
Dagger - 3/2/P/P6/x
Spike - 2/2/P/P6/x
Knife - 4/2/SP/S5P8/x
Hunting Knife - 6/3/SP/S6P10/x
Crescent Knife - 8/2/S/S6/x
Short Sword - 6/5/SP/S8P6/x
Common Sword - 10/6/SPC/S10P8C4/x
Long Sword - 12/8/SPC/S10P10C8/x
Thick Sword - 10/6/SPC/S8P12C6/x
Double Handed Sword - 15/10/SC/S12C10/x
Stick - 2/2/SPC/S4P4C4/x
Club - 4/4/SPC/S6P6C6/x
Stave - 4/3/SPC/S6P6C6/x
Staff - 6/5/SPC/S8P8C8/x
Mace - 8/5/SPC/S10P10C10/x
Flail - 6/3/SPC/S8P8C8/x
Spear - 6/5/P/P10/X
Halbred - 10/8/SC/S6C12/x
Axe - 6/6/C/C10/x
Chopping Axe - 6/4/C/C8/x
War Axe - 10/10/C/C14/x
Hammer - 6/4/C/C8/x
Smithing Hammer - 4/4/C/C6/x
War Hammer - 8/12/C/C14/x
Pick - 5/5/PC/P4C6/x
Mining Pick - 5/3/C/C5/x
War Pick - 8/10/C/C12/x
Today, I coughed up 20 duckets for a GM Registration Key. Now, Im fully legit. My first order of business will be to set up the GoldFire.gmd and work out the battle interface. Off I go.
I realized something last night while putting together the weapons list with all the stats. According to my original Defense to Attack Matrix, defenses to Pierce attacks are as follows: Dodge - good, Parry - avg, Block - poor.
But as I wrote up the stats for arrows and shots, I realized that 'Block' would be a very good defense for a ranged attack. I had just though it would be the worst defense for a dagger-type Pierce attack. What I know, though, is that if players are attacked at a range, most of them will try blocking with a shield. I have to make the Block defense the best vs. Pierce attacks. And since I shifted that part of the matrix, Ill have to shift some other parts around to keep it balanced.
Wasnt too bad though. Heres the updated Defense to Attack Matrix:
Type of Defense | Eff vs. Chop | Eff vs. Slash | Eff vs. Pierce
Dodge | good | poor | avg
Parry | avg | good | poor
Block | poor | avg | good
Ahh! Much better! :D
I finally worked out a battle system for Gold Fire. Ive always wanted to have a battle system similar to X-Com, since its my favorite game of all time, and Im surprised more tactical and/or strategy games havent followed suit.
Well, Im following suit, dang it, I think its the best tactical battle system out there! Of course, I will have to add many of my own touches. Last night I finally busted out the complete design doc for it. Minus any changes I have to make or things I forgot to add.
But I can already start to pick out some cons as I go over it. It already seems TOO micro-managed and slow-paced. Well, Ill at least wait for the next couple of days for me to finish a weapons and armor list to try it out. And, Ill submit it here, so that you can all graciously help me out by picking it apart. :P
Heres what Ive copied from my Notepad file:
Gold Fire Combat
Each action during a fight takes a certain amount of time. How much time per action is dependant upon weapon speed and weapon skill. Knowing how an enemy will attack and defend is based upon combat lore, which increases the more players fight. As combat lore rises, the more often a player will find out how the enemy is attacking and can counter effectively. When a player first engages in battle, a screen will come up with enemy race, enemy equipped armor and weapon, and enemy action on one side, and all player stats on the other. If the enemy attacks, enemy status will switch to 'Attacking', the player can then decide what action is necessary. The problem is that the player doesnt necessarily know what amount of time it will take for the enemy to land its attack. The player can choose to defend or be aggressive and attack.
Attacks will be Chop, Slash, and Pierce.
Types of attacks will be Combo, Target, and Aimed.
Chop: Weapon is brought up then directed down at the enemy.
Slash: Weapon is pointed to the side then directed sideways at the enemy.
Pierce: Weapon is drawn back then directed toward the enemy.
Combo: A learned combination of attacks that lessen the sum of time the attacks take individually.
Target: The attack is directed at a specific body part but attack time is increased.
Aimed: The attack is directed at a body part and will not execute until attack will connect but may take a long time.
For large amounts of ememies, the player will have the option of activating pre-set reactions for his fighter, then allowing the computer to fight for him. Or for the extremely impatient, the player can set his fighter to auto fight.
Defenses will be Dodge, Parry, and Block. Each Defense will be equal in time no matter what the skill level of the fighter. Each Defense has an attack it is most useful against.
Defense to Attack Matrix:
Type of Defense | Eff vs. Chop | Eff vs. Slash | Eff vs. Pierce
Dodge | avg | poor | good
Parry | poor | good | avg
Block | good | avg | poor
A successful Parry will lower the weapon HP, a successful Block will lower the shield HP, but a successful Dodge doesnt impact either. However, increases in Weapon Skill will increase the Eff of a Parry, increases in Shield Skill will increase the Eff of a Block, but there is no modifier for a Dodge.
Successfully performing the best defense for a given attack gives the defender a free counter attack.
If a Defense is unsuccessful, the attacker will land a blow. The amount of damage the defender takes depends upon the weapon used and the armor wielded by the body part struck. If armor is wielded, the armor will take the damage intended for the defender. If the weapon used is stronger than the armor wielded, the armor will absorb its max HP, the rest will count as damage to the defender. If a piece of armor takes too many blows that max its HP, which depends on the quality of the armor, it will become unusable. The amount of blows that will take depends on the type of armor.
A player begins a fight with a goblin. The goblin is armed with a short sword and a wood buckler. The short sword stats show that it can be used for slicing or piercing. The round begins and the goblin status switches to 'Attacking...' The player decides that since its only a short sword, his padded leather armor will absorb most of the blow and so he also attacks with his bastard sword. The goblin hits the player in the chest with his short sword in a Slash attack. The player is right. The padded leather takes most of the blow, but now the armor is damaged. The player only has 2 time units before his sword will hit the goblin, but thats just enough time for the goblin to block the blow. The goblins buckler takes a large amount of damage. The goblin status again switches to 'Attacking...' This time however, the players combat lore check passes this round, and the goblins attack is displayed. This time the goblin is going to do a Pierce attack. The player knows that the best defense against a Pierce attack is a Dodge. The player dodges, the goblin misses his blow, and is now open for counter attack. The player performs a Chop attack with the bastard sword. This connects and takes away most of the goblins HP. The player attacks again, this time with a Slash attack. The goblin, being severly injured, performs a Block. Not only does the Slash attack splinter the buckler into a dozen pieces, since it was already severely damaged, the Slash follows through and hits the goblin, removing its remaining HP, killing it. The player is victorious!
Now that the introduction is out of the way, Ill put up a background of my game.
Name: Gold Fire
Type: Single Player RPG
Graphics: 2D top-down
Engine: GameMaker 6
Story: You start out at 18 years old about to be released from the orphanage that has been your home since you were an infant. The head mother of the orphange breaks down and tells you what she remembers about your parents, how they were killed by dragons in the Great War shortly after you were born. The Great War drove the dragons out of the land eventually and they havent been seen since. But soon after your release, you discover that a dragon has been seen in a mountain range far to the north. So begins your quest of revenge.
Planned features: Level-less stat building, 20 different jobs, dozens of skills, selectable tick-based or auto combat, custom created weapon, armor, spells, recipes, and fighting moves, fully interactive environment, relationships, persistent war.
Im a spriter by trade.
But game development has always been at the core of my spriting career. In fact, the only reason I became a spriter was out of necessity to make characters for a game I was making at the time.
It was in the summer of 2000. I was lackadaisically browsing the Net for an RPG engine, since I had no programming experience, and came upon the RPGToolkit. Just a quick glance over the features had me sold on the engine in an instant. But what put the icing on the cake was that it came packaged with a character editor. I opened her up and created my first sprite. A man in a green hoodie, brown pants, black boots, with brown hair. Creating that one sprite made me realize that spriting was much easier than creating a game. So after my game project had failed, I decided that I would be better off joining a team as a spriter than making an entire game on my own.
After a few years of practice, I came across the folks at Audio Dragon, who, after seeing my work, quickly signed me on. After making a few free sprites for the team, I was asked by the site owner to partner up with him to create an MMORPG. After a couple of IMs of brainstorming, we decided upon what will become Winds of Darkness: Online. A game of post-apocalyptic humans in an orbiting city-station that ventures out onto fresh planets to find a new home. That began in May 2003. But unfortunately, with lack of direction, staff departures and firings, and the fact that none of us had ever made a game before, we are still trying to put out a beta. But just this month, myself and 2 others have decided to direct the game ourselves, and we are very close to putting out an alpha. We are currently waiting for me to finish spriting a few monsters.
In the darker days of Audio Dragon, I began to hawk my wares at other sites, trying to put my work in a finished game to help beef up my spriting resume. Luckily for me, spriters are in high demand in the indie circuit. Now I have 2 other jobs. Im the lead spriter for a 2D ORPG project called Mydfall and my first paying job as lead spriter for a 2D Battler RPG called Illusion. I also picked up a spot as Graphics Forum Moderator at OnGameDev and Im putting together a freeware graphics pack and some spriting tutorials for them.
So yeah, Im pretty busy nowadays. But after having spent a couple of years in the game development scene and having spent some time with GameMaker, I feel I now have the experience to make a game on my own. At least, I hope so...
This journal will document my progress on all my spriting jobs, and the progress of my first full game. Which, as fate would have it, is the same game that I tried to build back in 2000.
Wish me luck! :D