Monday, October 22, 2012

New Things & Game Programming UPDATED

Since the passing of my grandfather back in June I made it a goal to lose some weight. It took me about six weeks to drop ~20 pounds and I'm still at it. I feel good about this and it really hasn't been that difficult.  So, in honor of achieving a goal of losing weight and since it's been so empowering I've decided to set some other goals and see if I can achieve them. The first of these is a programming goal.

I must confess. I'm an okay C/C++ (yes I know they are two different things) programmer. Not a super good one but an okay one. I can usually figure out how to achieve most task and if I get stumped a little Google-fu has gone a long way in helping me. So, my next goal is going to be programming a Computer Role Playing Game (CRPG) for Windows and Mac since I own the two. I do have a Linux computer but it is in sad need of repair at this moment. As soon as I get it fixed I'll port it to Linux too. I've done some tech demos of 2D maps that I was pretty proud of so I think I can handle the job.

So, here is the plan!
I'm going to document it here as well as my YouTube Channel so I've downloaded Chronolapse. It's a open source program that can record your desktop time lapse.  I'll record my programming sessions and, after I'm done I'll compile it into a movie complete with a voice over from me explaining what I'm doing...or trying to do. It won't be edited and will have mistakes as well as overcoming difficulties. Anything that I don't do on the computer I'll make a video and show what I've been up to.

About the Game
Since it would be fairly trivial to write up a version of Pong, Tetris or Combat I've decided that the game needs to be substantially difficult. The goal will be to keep working on it until I've finished it and I can claim victory.  The game will be, in look and feel, like Ultima VI and V as they both have a similar graphical style (plus I'm not to impressed with the graphical style of Ultima VI) and they both have a more complex story concerning the virtues as opposed to being straight hack-n-slashes.  Of course, you can also guess that it will be a 2D game.

Game Features
I've decided that the main features are as follows. I'm going to try and not change this list too much as it would defeat the purpose of this whole exercise if I can just arbitrary delete a feature if it become too hard to implement them.  Anyway, the features I'd like to implement are as follows.

  • Party based having slots for up to eight party members.
  • Fights that take place on sub-maps. For example if you encounter an enemy in the world you'll zoom to a representation of the terrain that you were on for the battle.
  • Turn based combat. Call me old fashioned but I love the strategy of turn-based combat.
  • A number of playable races which include:
    • Human
    • Elf
    • Dwarf
    • Dracos (keepers of the Dragons)
    • And other (Yeah, I'd like to have others and I'll have to think of them and put them down.
  • A fairly large (within reason) number of enemies.
  • Eight dungeons.
  • The following classes:
    • Fighter - Pure melee class
    • Paladin - A holy warrior. A melee class with abilities that are particularly lethal against undead and demonic. Deals "holy" damage. Also has a few healing spells.
    • Ranger - A melee/ranged class (bows and arrows) that also has abilities to deal "nature" damage. Has "nature" heal spells.
    • Hunter - A ranged class that uses an animal to fight for him. Hunters can heal their pets and do "nature" damage to foes.
    • Assassin - This is my version of the rogue and the monk combined. Great stealth abilities and deadly at unarmed combat. Can use a dagger to back-stab.
    • Cleric - A holy magic user. Most effective against the undead and demonic. Unleashes "holy" damage. Has "holy" heal spells too.
    • Conjurer - "Conjures" pets to fight for them. Can heal pets and used ranged weapons against foes. Depending on pet depends on the type of specific damage it does in addition to regular damage.
    • Mage - Pure Magic User. Does "arcane" damage. Most spells are ranged spells.
    • Maybe more. If so I'll add them here.
  • Eight towns to correspond with the eight dungeons.
  • Buffs and debuffs based on class and spells from both enemies and players. Even though the combat will be turn based the rest of the game will be real time so the buffs/debuffs will count down in real time.
  • A skill based system as opposed to a level based system. Actually their will be levels but I'm going to try and find a way for levels to be based on more than exp from killing things and finishing quests. reaching certain proficiency in skills should add to that.
  • Puzzles. Challenging ones I hope but not challenging in the hunt the pixel or Guess the Verb sense.
That should do it for now. Like I said, I cannot delete from the list. However, I can change something IF it makes sense to do so...not to make something easier (or harder?). I can add to it all I want though but I do have to watch out for feature creep.

Game Engine Features
The features of the game engine are going to be short and sweet. First off everything will be point and click as much as possible. For example to move someplace you should only have to point and click there. To cast a spell you should only have to right click to get a contextual menu and select that list of spells available to you. Conversations should be that way too. In the Ultima games you had to guess what to ask people about...with the game engine it should give you a list of topics from the conversation your having. The list should shrink and grow as the conversation evolves.

Another feature I'd like to include would be scripting. In particular using Lua to script NPCs (both enemies and friends) and with spells so I can add or subtract spells and their effects while the engine is running.

Of course the graphics and music will be a must but that's a given. The characters will be animated but since I'm aiming at a more retro experience don't expect it to over-animated.

Setting and Story
I do have a setting for my grand adventure that I've been developing since I was in high school (the 80s) and I have a story that has been gestating for a few years.  It's time I took both of these things and put them to good use. I'm going to try and not  throw too many spoilers out there as I can because I don't want to ruin it for people who want to play the game and be surprised at the outcome.

Tools Of the Trade
Here are the tools I'm going to use.

Code::Blocks - For all my coding needs. This is a cool IDE. The game is going to be written in C++ so I'll use this fantastic tool to do so.
Allegro - This is a graphic API that I'll use for the graphics.. I've used it before in some of my little tests and demos and I like it. You can also use it to play music so I'll use it in that capacity too.
Gimp - For graphics. It may be overkill but I think it'll do a pretty good job of making sprites and tiles for the world. Especially for what I want to do.
Garageband - On the Mac. Yes I do own a Mac so I'll take advantage of this tool. It interfaces with my Midi keyboard pretty nicely so it'll be easy to plunk down some melodies. We'll just see if they are any good or not.

Miscellaneous
Okay, it's making a game but also I am going to be making the graphics. I do not want to be using free images I find on the web. Also, I do have a specific look I'm going for so I'll make the graphics myself. Same with the music. I'll try and create some simple but catchy tunes myself. I did take those music lessons all those years ago, I should try and be creative with them. Right?

I think that does it. I reserve the right to comeback and add/change this post as I think of new stuff to add/change to the game.  Some people might wonder why I'm doing this. The answer is simple. Aside from doing so well on my diet and being inspired that way I also have been reading The Blog of Impossible Things and one of the premises of that blog is to do things that other people think are impossible. Making a game, by myself, of this size, complexity and scope would be considered impossible by a lot of people. I just hope to prove them wrong.

Wish me luck, I'm off!

UPDATE 1 - Since I'm debating the release schedule for posts and video I'm thinking about posting once a month. There are a couple reasons for this but the main is that using time lapse technique I'm only going to have so many frames per second to work with. Especially depending on the capture rate.  That means it's possible I could only have eight seconds of video for a two hour sessions. I think it's better to capture frames through out the week as I work on my project and compile it all into a big video to upload. This way it'll be more interesting to watch and I'll have time to explain what I'm doing in the video.

No comments:

Post a Comment