2011-11-22

Dragontorc MS2

Yesterday, after 8 months, I hit MS2.

Here is short list of things that I managed to do during that time:
  • Items
  • Inventory
  • Servant
  • Interactions
  • Unique items and events (used to allow only certain items to be used on other certain items)
  • Whole framework is more modular without almost any gameplay related assumptions
It doesn't look that impressive and even without all the breaks, all the time that I wasn't working on Dragontorc, it may look that it took much more time than needed, right?

Well... I really hate dirty prototyping. I just had enough of it in my life and I know that I will have to work like that for many years to come. And that's why I decided to do things a little bit different when working on Dragontorc. Keep everything simple and clear. Do not make any assumptions (or rather, as few as possible) over anything in Game Framework. First implementation of items, interaction with them, opening/closing doors was code driven. It was fine and pretty simple but if I wanted to do all stuff like this I would run in two problems:
  1. Code would grow big enough to be much harder to read/understand/modify.
  2. Adding more stuff to the game would require changes in code and this is something I want to avoid.
So after seeing that basic interactions with items worked pretty well, I decided to make interactions of Servant on items to be done with event system. And then even all interactions of Wizard with everything else (picking items up, opening doors, closing them, hitting objects - example: chest closes). Only thing needed is set of commands and conditions that will grow over time to give as much freedom in creating objects as possible. But then so many things can be done without touching the code and it is so easy to do so that will not only save my time, but will allow people to add more stuff to the game.

Yup, that's true, I want people to be able to modify game, to extend it, to add more and more items, enemies, locations, almost anything that they will want to have in the game. This of course brings another question. How this will be handled in the game which is basically almost linear (well, there are sort of hubs but you have to solve certain puzzles one after another) action-adventure? Probably you may guess the answer on your own. If not, it will be revealed sometime in future.

Now some technical details. I mentioned something about events. What are they? They define interaction between items. For example, key may do "unlock" and chest, being in state "locked", may accept "unlock". If preconditions for both sides are fine then we may perform the event. This isn't anything new and in fact, it is something that I wanted to have before I started to read about Dragontorc. And you know what? Steve Turner did event system in Avalon. And that is simply amazing. So I just took name "event system". And because I am not limited by ZX, I could make it bigger, more universal. So I did. Game Framework is responsible just for detecting when something should happen but all interactions/actions are defined in xml files.

One important thing here is that I wanted to keep controls simple and as in some cases there can be few things to be done on an item (servant may either take something out of chest, or close it) currently only most important is performed. This may or may not change. Or maybe I will add some optional doing other possible actions. Of course I will have to add information about currently available/selected action, so players won't be surprised when they act on an item.

And not only events are defined in xml files, but also how items/actors behave, how much space do they take in physical world. Wizard hovers above ground. Key may be thrown. Chest just drops on the ground and cannot be moved.

Ok, that's it for now. Just check the video.


You can see here that items can be picked up by wizard or by servant. Wizard has limit of 4 items to be held in inventory and they are organised in FIFO - just like in original game. There are 5 different keys (appearance is hardcoded, this will change in MS3). And there is a locked chest. Only one key may unlock it. You can then put some items into the chest (currently it may contain 10 items) or take them out of it. And you can close the chest as well.

Ok, MS2 is done. Next one is MS3 with first enemies, first spells and some better looking graphics.

MS2
Started at: 2011/05/27
Ended at: 2011/11/21
Actual time taken: I have no idea, probably I will just remove this info.
Status: success. reogranised lot of stuff to make it easier to develop/extend game in future.

2011-09-23

Back to Dragontorc

Ok, so it looks that for last six months I wasn't doing anything with Dragontorc but it is not true. First thing, I decided to move from C# to Vala which may be or not good thing. I actually could just switch straight to C or C++ but I really liked the idea behind Vala and... well, I will just stick to it for a while.

So transferring to Vala took about week and of course it wasn't full week of work as it is just a hobby.

Also I reorganised few things under the hood so it is even more modular. Example: location and velocity don't sit in Object's class (Wizard, Item) but in one of the modules (presence module). Which some of the people may find odd but it really helps keeping things small and simple. And also makes it much easier to extend functionality or modify it - even during the game - one of the examples is physics module being switched for items - they behave differently when put on the ground or thrown and differently when servant is holding them. But that's all just technical details and maybe I will have dedicated post for them in the future.

What has happened with other almost 6 months? Few weeks I spent on actually working on Dragontorc pushing it through MS2 which is quite big (items, servant, static objects, interactions). As soon as I will finish that, I'll post an update.

So, what about 5 months? One or two, I was just doing some other stuff. For two other months I was refitting upper rooms in our flat/tower (yes, it is a tower on top of a building) and had pretty big troubles with people repairing balcony (and they probably !@#$ed it up). But other time I was working on Animation System which I plan to continue to work on, although Dragontorc is much more fun and after recent talk to my wife I decided to first finish Dragontorc and then move to next project.

How did talking to my wife influenced my decision? Well... I was working on icons to accounting software and she found it fun. To invent new icons and to actually draw them. That's when I thought that if she find it fun, maybe she could help me with Dragontorc - so probably it will look more like original game, which is... a good thing I guess.

Stay tuned and wait for next MS in which some items will be picked up and servant will be flying all over the place.

2011-03-23

Dragontorc MS1

Last sunday I hit MS1.

I will try to keep Milestones small and focused, so I can have some short-term goals to achieve, as it will just make me feel better, as I am actually doing something and pushing things forward.

What was what I wanted for MS1? Well, that list I made up when I already had most of it done, so it is actually not "what I wanted", rather just "what I did":
  • Framework for game
  • Basic setup of whole world (regions, sub-regions, rooms)
  • Basic layout of rooms with doors connecting them
  • Automatic placement of rooms and doors inside
  • Player's character and movement
  • Doors opening and closing

And already I had to change one thing comparing to original game. Doors don't open towards player, they open away from him. And there are two reasons for that.
  1. Visual glitch. I can't push player back away from door too much, as it looks bad and player loses control for a while and possibly will end up on a monster that is following him. And if I don't push, door go right through player which just looks bad.
  2. If all doors open into the room and you go from one room to another it just looks strange. And is more confusing as well, but I realised that only when I switched openning doors to be always away from player. Then, even if room orientation changes, it is much easier to see from where did you come and you can connect both rooms inside your head. Although it still requires some spacial imagination. But I want to keep it that way, just to be more faithful to the original and because it looks nice (yeah, 90 degree corners are actually 45 degree, everything has to be moved around)
As you will see on video below, you notice that the game looks currently pretty bad. And it will look so until MS11. I want to keep it that way, so I can focus on gameplay and until then I probably won't decide on the style. Now I have to very different ideas - one of them being more or less realistic 3D representation (which could require some more advanced animation system but I am pretty happy to create one, at last) and other looking like it takes place in a book (and it would be more faithful to original game, although would look worse than 3D one).


As you can see, there are some issues with navigation, which is on my todo list, as few other bugs I noticed, but I plan on fixing minor bugs and tweaking in MS5, and it looks pretty ugly, but you can get the idea of how the character will move around.

One more thing, I can't tell how much time did it take, but probably 15-20 hours. It isn't impressive, but there is some more code behind scenes that I could omit if I just wanted to have dirty prototype. Maybe I will have such info at the end here.

Ok, so as I finished MS1, let's head towards MS2, which will bring us items, inventory, servant and some basic interaction.

MS1
Started at: 2011/03/03
Ended at: 2011/03/20
Actual time taken: 15-20mh
Status: success? I am pretty happy about it.

2011-03-20

Remake of Dragontorc

Ok, this game was haunting me for almost twenty years now, and at least for five I wanted to create a remake of it. And while I still want to create some monumental piece of art, the greatest game ever, I know that I will never do it. No, if I am working on engine and doing some uber boring stuff just to start going. So I decided to switch to C# and start working on actual game creating some engine on the way.

Of course I don't want to create just a remake of Dragontorc. I don't even know if it will be possible, if there won't be any problems with copyrights. But if there will be, it's not that complicated to change it a little bit to have unique game. Anyway, I already want to add some new features and modify existing ones.

Because I do it in my spare time and I don't have much of it, it may take far amount of months, just to have some early playable game, but it is much better to have one working game than thousands of ideas, few started, none completed, right?

2011-02-27

A successful FPS - recipe

First, it won't be about "how bad is CoD or Killzone and how much other games deserve to be called 'the best gaem in teh univerce'", it will be rather about what I think people want from FPS.

Short note, if you disagree with something or you want to expand it, just leave a comment, please.

1. Jump - it may sound like a joke but it is simple as that, player is needed to be able to jump, even if there is no place to jump onto. People just think that it gives much more freedom. On the other hand it turns some MP experience into rabbit hunting but few games managed to help it after previous instances were flooded with bunny hopping.

2. Basic gameplay mechanics need to be at least decent and balanced. It doesn't have to be anything fancy, but shooting at enemies has to be fun, at least to some degree. And adding too much new stuff may turn against designer as people will find everything repetitive after a while but if they have some new unique features, they will focus on them and say that they are repetitive. But mechanics can't be bad enough to people throw away from the game.

3. Story - whatever story you will create, you will find people that will find it dull, boring and "I've already seen it". So at least here, just create whatever you find fun. You could create something about space monkey farmer going insane, invading some research station where they were working on space-time continuum weapons and wrecks the space-time continuum itself to create weird spaces and bring some unexpected enemies together and at the climax you have enormous battle between vikings with lasers riding dinosaurs and Napoleon's army enhanced with new weapons and cyber implants. Or you could have story about a man waking up in middle of some riot, trying to find his family, only to discover that there is no wife, no kids, and is just a part of some mega conspiracy to throw government to its knees. Whatever you'll do, some people will find it either stupid, too serious, boring, being another variant of some other story.

4. Length of SP - currently some people are happy to have game 4 to 8 hours long and that's it. They really don't need longer game. And people will buy short games if they have MP. But if you don't want to add MP, prepare to create looooong and non-linear game. Otherwise it will be lost.

5. Ah, yes, linearity - short game is fine with linearity, longer one will loose all replayability if you will have to do it the same way.

6. MP - if you're not going to have long SP mode, add at least team deathmatch and some co-op mode and maybe some variation of objective-based one (even capture the flag will be enough). Otherwise people will complain. And don't forget about levelling up, unlocking new stuff, new stuff that is important and could change the way players play.

7. Graphics, sound, animations - make it at least decent. People love great graphics but will always find something that doesn't work. And the more you will try to make some things unique, the more likely they will point out all things that won't work. And that goes mostly for animation systems. People really don't find anything with the way characters move currently (which is sliding, having no transitions between different gaits, etc). Although if just running animation looks nice and there are lots of level-specific animations that are played in just one place, people will love it so focus on that. But on the other hand, great graphics could sell the game (if the gameplay is not completely broken).

8. AI - it should work, just work. If you want to have heavy scripted short SP (and go for MP), then really don't care too much about AI, but with good approach, you could have less scripts and less linear game. And again - people will always complain and always will find something that didn't work. Oh, use lots of sounds. If people hear that AI says something, they already assume that it is intelligent. But of course give at least shadow of what was said - ie. if AI shouts that they are going to flank enemy, they should move, even to predefined points or maybe even randomly. They will flank player eventually.

9. Replayability - after finishing SP, you should have all weapons unlocked and maybe some extra bonuses added. But now there is a twist, if you finish the game for second time, give some more stuff to player. I finished Dead Space twice, although I didn't actually like the game too much, but after finishing it for first time, I had my stuff powered up and I had new rig unlocked and... was really disappointed after finishing it for second time when I received nothing new. Even if it breaks gameplay and makes player god-like, it will be still fun for players to play the game again. Even survival horrors. And that's it, it is in many cases not about doing things in different way, as many people will just do the same thing over and over again, but giving new stuff (this will actually force people to try new things). Of course some sandboxing, even on small scale, will help.

10. Innovation - have something unique and innovative in your game. It doesn't have to be something that will redefine the genre. Probably there isn't even such thing as, again, people will find it just a twist, idea that appeared somewhere else, or they will find it unnecessary or even dull or stupid. It is better than to leave such thing. But still, having something unique may help your game to stand out.

11. Create sequel - if first part was at least part-successful, at least critics liked it, go for a sequel. And if game didn't go as well as planned, think not only about game but also about marketing (these guys should do it themselves but you also speak, don't you?), maybe you told too much? Or hit wrong tone?

That's it. It's that simple, although having good story, good MP, good mechanics etc. is difficult, but you really don't need to invent wheel all over again.

And just one thing - games need to be fun and can't throw away players. The more people will find game to be okay when they hear about it, the more will try it. The more will have fun playing it, the more will tell their friends. The longer the experience and more things can be done (either by having complex, long and fun SP or balanced and fun MP), the less likely they will sell it to someone else.