views:

325

answers:

6

Hi,

I am in the process of developping a game, and after two months of work (not full time mind you), I have come to realise that our specs for the game are lacking a lot of details. I am not a professional game developper, this is only a hobby.

What I would like to receive help or advices for is this: What are the major components that you find in games, that have to be developped or already exists as librairies? The objective of this question is for me to be able to specify more game aspects.

Currently, we had specified pretty much only how we would work on the visual, completely forgetting everything about game logic (AI, Entities interactions, Quest logic (how do we decide whether or not a quest is completed)).

So far, I have found those points:

  • Physics (collision detection, actual forces, etc.)
  • AI (pathfinding, objectives, etc.)
  • Model management
  • Animation management
  • Scene management
  • Combat management
  • Inventory management
  • Camera (make sure not to render everything that is in the scene)
  • Heightmaps
  • Entities communication (Player with NPC, enemy, other players, etc)
  • Game state
  • Game state save system

In order to reduce the scope of this queston, I'd like it if you could specifically discuss aspects related to developping an RPG type of game. I will also point out that I am using XNA to develop this game, but I have almost no grasp of all the classes available yet (pretty much only using the Game component with some classes that are related to it such as GameTime, SpriteBatch, GraphicDeviceManager) but not much more.

+8  A: 

You have a decent list, but you are missing storage (save load), text (text is important in RPGs : Unicode, font rendering), probably a macro system for text (something that replaces tokens like {player} with the player characters name), and most important of all content generation tools (map editor, chara editor, dialog editor) because RPGs need content (or auto generation tools if you need ). By the way have links to your work?

I do this exact stuff for a living so if you need more pointers perhaps I can help.

Robert Gould
@Robert Gould: Thank you for the help, it's appreciated. Since you say in your profile that you're specialized in scripting, I was wondering how you'd integrate scripting in dialogs and especially how you do all the magic behind the scenes. I know there is a lot to discuss, maybe we can find a way to do it properly?To answer your question, no, I don't have any link yet because this game is so early in development, it has pretty much nothing to show.
tomzx
+2  A: 

There are hundreds of components needed to make a game, from time management to audio. You'll probably need to roll your own GUI, as native OS controls are very non-gamey. You will probably also need all kinds of tools to generate your worlds, exporters to convert models and textures into something suitable for your game etc.

I would strongly recommend that you start with one of the many free or cheap game engines that are out there. Loads of them come with the source code, so you can learn how they have been put together as you go.

When you think you are ready, you can start to replace parts of the engine you are using to better suit your needs.

rikh
@rikh: Currently working in C# with XNA. As far as "game engine" goes, there's not a lot. At least, all the graphic and audio part seems to be handled at a high level enough for me to produce stuff easily. I'm slowly building what would be considered the scene part of the engine.
tomzx
There seems to be quite a good list of XNA game engines at http://www.ziggyware.com/weblinks.php?cat_id=10
rikh
A: 

I would also add that if you're not working on your game full-time, be mindful of the complexity and the time-frame of the task. If you'll try to integrate so many different frameworks into your RPG game, you can easily end up with several years worth of work; maybe it would be more advisable to start small and only develop the "core" of your game first and not bother about physics, for example. You could still add it in the second version.

Zoli2xa
You did not answer the question. -1. This would be better as a comment on the original question.
unforgiven3
@Zoli2xa: We have a good understand of the time-frames. As far as I am concerned, our first objective is to get an alpha version that is at least enjoyable. Since it's mostly a hobby, I don't see it becoming anything like a success. To me, it's more of a playground, to learn software architecture and the process in general.
tomzx
+4  A: 

I don't know if this is any help, but I have been reading articles from http://www.gamasutra.com/ for many years.

I don't have a perfect set of tools from the beginning, but your list is covering most of the usual trouble for RUNNING the game. But have you found out what each part of the items stands for? How much have you made already? "Inventory Managment" sounds very heavy, but some games just need a simple "array" of objects. Takes an hour to program + some graphical intergration (if you have your GUI Management done already).

How to start planning

When I have developed games in my sparetime, I usually get an idea because another game lacks this function/option. Then I start up what ever development tool I am currently using and tries to see if I can make a prototype showing this idea. It's not always about fancy graphics, but most often it's more finding out how to solve a certain problem. Green and red boxes will help you most of the way, but else, use eg. Google Images and do a quick search for prototype graphics. But remember that these are probarbly copyrighted, so use them for internal test purposes + you can explain your graphicartists what type of game/graphic you want to make.

Secondly, you'll find that you need to find/build tools to build the "maps/missions/quests" too. Today many develop their own "object script" where they can easily add new content/path to a game.

Many of the ideas we (my friends and I) have been testing have started with a certain prototype of the interface, to see if its possible to generate that sort of screenoutput first. Then we build a quick'n'dirty map/leveleditor that can supply us with test maps.

No game logic at this point, still figuring out if the game-engine in general is running.

My first game-algoritme problem

Back when I was in my teens' I had a Commodore 64 and I was wondering, how do they sort 10 numbers in order, for a Highscore? It took me quite a while to find a "scalable" way of doing this, but I leared a lot about programming too.

The second problem I found

How do I make a tank/cannon fire a bullet in the correct direction when I fly my helicopter around the screen?

I sat down and draw fast sketches of the actual problem, looked at the bullet lines, tried some theories of my own and found out something that seemed to be working (by dividing and multplying positions etc.) later on in school I discoved this to be more or less Pythagoras. LOL!

Years and many game attemps later

I played "Dune" and the later C&C + the new game Warcraft (v1/v2) - I remember it started to annoyed me how the lame the AI worked. The path finding algoritmens were frustrating for the player, I thought. They moved in direction of target position and then found a wall, but if the way was to complex, the object just stopped. Argh!

So I first sat with large amounts of paper, then I tried to draw certains scenarious where an "object" (tank/ork/soldier) would go from A to B and then suddently there was a "structure" (building/other object) in the pathway - what then?

I learned about A-star pathfinding (after solving it first on my own in a similar way, then later reading about the reason for this working). A very "cpu heavy" way of finding a path, but I learned a lot from the process of "cracking this nut". These thoughts have helped me a lot developing other game algortimes over time.

So what I am saying is: I think you'll have to think more of:

  • how is the game to be played?
  • what does the user experience look like?
  • Why would the user want to come back to the game?
  • What requirments are needed? broadband? 19" monitor with 1280x1024?
  • An RPG, yes - but will it be Multiuser or single? do we need a fast network/server setup or do we need to develop a strong AI for the NPCs?

And much more...

I am not sure this is what you asked for, but I hope you can use it somehow?

BerggreenDK
Much of the planning has been done via software project management plan and UML diagrams of the overall idea. I have a fairly good idea of how things are going to unfold, but like I mentionned, it seems we went ahead and forgot a lot of stuff. Actually, we didn't do any extensive work in order to find out every area that would need to be programmed just to have something "playable". For the moment, all we have is characters, animation, basic collision (no weapon collision), basic entities interaction and that's pretty much it. As you can see, there's a lot left to do.
tomzx
+2  A: 

I agree with Robert Gould's post , especially about tools and I'd also add
Scripting
Memory Management
Network - especially replication of game object states and match-making
oh and don't forget Localisation - particularly for text strings

zebrabox
+2  A: 

Effects and effect timers (could be magical effects, could just be stuff like being stunned.)

Character professions, skills, spells (if that kind of game).

World creation tools, to make it easy for non-programmer builders.

Think about whether or not you want PvP. If so, you need to really think about how you're going to do your combat system and any limits you want on who can attack whom.

Equipment, "treasure", values of things and how you want to do the economy.

Anon
@Anon: Since most of the game is aimed to be played either on the x-box (with the possibility of co-op) or on the computer (single player) PvP is pretty much out of the question. World creation tools would be also out since the game we're playing to produce is more like a "once it's produced, it's done" kind of game. The primary objective of this game for us is to learn how to develop a big game, something more meaningful than pong or tic-tac-toe.
tomzx