I'm trying to make my first game

Started by
3 comments, last by frob 11 years, 2 months ago

So I'm making this text adventure game where I have an array of events and every time you go north, east, south or west. the loop calls a random number which then calls an event in the array, now is this the best way to do it? I want to learn to make code efficient from the beginning

Advertisement

Probably not, if you want to have an actual replayable game.

Consider running the game with several state machines.

It is basically a bunch of data tables that look like this:

  • Object name. This could be "NorthRoom" or "Hallway37" or whatever
  • State. For example a room could be "dark" or "bright"
  • Available Transitions and method to get there. It will need to represent the pair of "west" means the new state "WestRoom", "east" means "Riverfront".
  • Inventory of stuff. Maybe there is a rope, or a bottle, or a little spring. Whatever it is, there should be an array of them here.
  • Description string. This could be "You are standing in front of a beautiful mountain stream", or "You are in a maze of twisty little passages, all alike".
  • Assorted other goodness you want in your game.

Another set of tables for the objects in use. You will note that it looks suspiciously like the one above.

  • Object name. "rope", "bottle", "knife", "box", "water fountain"
  • State of the object. "Full", "Empty", "Buttered"
  • Available transitions and method to get there. "drink bottle" leads to the bottle's empty state. "Eat rope" leads to somewhere exciting.
  • Inventory of stuff. Maybe the box contains another box, and that box contains another box, and so on.
  • Description of the object in that state. "A coiled rope" or "An empty knife".
  • Assorted other goodness you want in your game.

A text adventure game is little more than a collection of small state machines and inventories. I've seen them implemented in Excel with a set of macros and three sheets that look basically like the above items. This type of games are a great learning exercise.

I know you aren't going to like this answer, but don't worry about it.

What you want to do is do it the wrong way for now, then learn from your mistake on the next pass. We can tell you a better way to implement what you want, like frob just did, but until you understand why one way is better than the other, there isn't much value.

In other words, you need to learn from your own mistakes.

I know you aren't going to like this answer, but don't worry about it.

What you want to do is do it the wrong way for now, then learn from your mistake on the next pass. We can tell you a better way to implement what you want, like frob just did, but until you understand why one way is better than the other, there isn't much value.

In other words, you need to learn from your own mistakes.

Very nicely said Serapth and I have to agree 100%. Programming is the art of understanding core features and functionality of a language and finding the best way to implement them into solving the issue at hand. It is good to ask for and take advice on how you can better something but you should always try a few different approaches yourself before doing such. We may be jumping to conclusions and you might have already experimented with a few different ways, if so and this is the best you have found so far, well most of us don't agree and Frob's idea of centralizing objects for re-usability is a good start. Now it's up to you to take his suggestion and apply it to your game and find if it works better for you (and WHY). The most important part is WHY. Make sure when asking for help that you question the WHY every single time. Not to challenge the suggester of the possibly better technique but to truly understand yourself WHY their method may or may not be better. So like Serapth said you need to actually be learning why things make a difference not just being handed the proper answers.

Dan Mayor

Professional Programmer & Hobbyist Game Developer

Seeking team for indie development opportunities, see my classifieds post

Programming is the art of understanding core features and functionality of a language and finding the best way to implement them into solving the issue at hand. It is good to ask for and take advice on how you can better something but you should always try a few different approaches yourself before doing such. We may be jumping to conclusions and you might have already experimented with a few different ways, if so and this is the best you have found so far, well most of us don't agree and Frob's idea of centralizing objects for re-usability is a good start. Now it's up to you to take his suggestion and apply it to your game and find if it works better for you (and WHY).

As this is the For Beginners forum...

Many beginners don't know what the options are. Most are still in secondary school and have only a few weeks of experience where they have dabbled with programming.

It is very difficult to choose among different approaches when you have no clue what any options are.

If the question were related to a school assignment or a serious game project we could discuss the merits of proper selection. But in a For Beginners post I feel it is generally best to offer up simple, robust solutions that are easy to understand and to implement.

This topic is closed to new replies.

Advertisement