how to design a virtual world

Started by
5 comments, last by Krohm 9 years, 7 months ago
Heya!

I am currently working on my game project which will hopefully be successful someday.
I am now having problems planning the design of some of the core systems for the game.

The game will be a 3d game. Before i start developing i would like to be comfortable with managing my virtual world and entities inside it. I will use entity component system as a standard approach to managing input, movement, ai, etc. These tasks will be split among actual physical services which is an underlying design decision.
My actual problem is designing the world as in splitting it in cells, linking entities to cells and handle movement etc. Basically scene graph on server side with functionality split between different processes.
How to load 3d world from file? How does that relate to underling containers of entities? What are standard map file formats, what info do they include? Do i split the world in x,y,z cell grid, maybe use some other approach? Hoe are the containers important in relation to client side/render engine? Stuff like that:) basically the whole fundational architecture to work on gameplay from there:)

If you can link to some of the articles, examples or concepts that would be amazing. Any general directions to standard solution would be greatly appreciated:)

Thanks for help!:)
Advertisement

You are asking a lot of things here, maybe too much for a single thread.

What about the engine you plan to use? Are you going to code all from scratch? A question like "How to load 3d world from file?" tell me that you're a beginner, and 99% you're approaching a task bigger than your current level.

Try to focus on a small, atomic part of the problem, and ask for that after some tries.


I am now having problems planning the design ... The game will be a 3d game... My actual problem is designing the world ... How to load 3d world from file?

You may be having trouble planning the design because you haven't narrowed down what you want to accomplish. The Supreme Architect created the world in seven days - but it is unknown how long He worked on the design prior to that. It seems likely, however, that He had a pretty good idea what He wanted before He started designing it.

With regard to loading the World from a file - there are scholarly dissertations that conclude that the Universe cannot be described by any means that takes less room that the Universe itself.

Suggestion: RUN, don't walk, away from your computer. Decide what types of "things" you want in your world. If you don't know where you're going, it's difficult to code the path. Develop a bit more detailed concept of the final product before you code the tools to build it.

Then, if you're going to use a component/entity approach, become familiar with it. That will give you a much better idea of what data you'll need to create, store, transfer and load it.

Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.

You don't forget how to play when you grow old; you grow old when you forget how to play.

I know how is knowing nothing about what things are correct and what aren't, but, the only thing I can tell you is: you have to think what kind of things are generic and what aren't and try.

Eg.

Did you know how to manage your time to spend it correctly?
I want to learn from the development process?

I really want a Game or a Game Engine or both?

My "Game World" can be used as an Tech Demo to get that job I've been dreaming, or is just a Game with my signature?

Suppose you've finished your game. Congratulations! Now you have your name in the source code! :-). Now let's forget about everything I learned. That's not the best approach.

Suppose your friend is a Graphics Programmer and want to develop with you. You have just a 3D World that do everything. How can your friend do his part of work knowing nothing about the way you've planned the Game? It's not impossible but is very hard to him.

The best development architeture that I found the best is the Layered/Modular architeture (search on the forums). Is fast, compreensive, and you can learn how to simulate physics forgeting that 3D Modeling class for a while. Your friend now can write an "Graphics Manager" class without needing to know your "Game Manager".

You know that the games are approaching more and more to movies. If so, why not name it a "CScene" and a Game's Entity an "CActor"?
Also I recommend that you read things slowly.
Irlan

Thank for these replies guys.

I might have worded my question a bit odd so it came out the wrong way, so let me try again :)

Suppose I am planning on creating a 3D area/landscape, just basic terrain with mountains etc. For that I will create a height map file. Now the actual problem with thinking ahead is how to load this file and figure out the size of this area (for 3d landscape I need 3 lists of coordinates: x,y,z, no?).

This part of the code will not do with any rendering whatsoever, but merely managing the scene, entity coordinates and (later) movement, collision detection etc.

So my questions are specific in this regard:

- I know there are many file formats for height maps, but is it possible to export (lets say from some terrain generator program) a heighmap, textures and navigation meshes, collision detection rules, etc?

- How do I manage this "scene"? As in, how do I get the size of the landscape (bounds of those 3 lists), so I can later place objects (trees, etc) to specific locations.

- Can I use any existing solution for this? Note again, I do not need to render anything here, just need to manage collision detection and the actual 3 lists and entity interaction.

Basically any suggestions, solutions, links to tutorials/articles are most welcome :)

I hope I will make more sense now :D


Note again, I do not need to render anything here, just need to manage collision detection and the actual 3 lists and entity interaction.

Some tough love comin' atcha'.

It appears you're still tripping all over yourself. You have lots of ideas about the general form of a fairly extensive app, but, from the questions you're asking, it seems apparent, however, that you're not familiar with the aspects of programming the concepts you want to incorporate.

As mentioned a couple times above, your first step should be to become familiar with the types of things you want in the app you're thinking about. Have you actually written a program that loads a height map, just a height map without entities, locations, collision engines, etc.? If not, then, per your request for suggestions: googling for "height map file" yields 164 million hits. Take a look at a few of them and try one or two to get a better understanding of what it takes to load a height map.

For other aspects you mentioned, do the same. E.g., try out a collision engine or two. Become familiar with what it takes to use one. That will provide you with a better idea of how to incorporate it into your program. Get experience with the individual pieces that make up the whole.

Just a comment: IF you're planning on graphics being part of your program, and you want to import, manage and save the state of a whole list of things, you really should consider what it will take to render them. That will influence greatly what form you'll want your import/export/management/collision data to be in.

Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.

You don't forget how to play when you grow old; you grow old when you forget how to play.

Let's see if I got all the questions.

  1. How to load 3d world from file?
  2. How does that relate to underling containers of entities?
  3. What are standard map file formats ...
  4. ... what info do they include?
  5. Do i split the world in x,y,z cell grid, maybe use some other approach?
  6. How are the containers important in relation to client side/render engine?
  7. is it possible to export (lets say from some terrain generator program) a heighmap, textures and navigation meshes, collision detection rules, etc?
  8. How do I manage {a terrain scene}? As in, how do I get the size of the landscape (bounds of those 3 lists), so I can later place objects (trees, etc) to specific locations.
  9. Can I use any existing solution for this?

  1. First you figure out at high level what your game/app needs to do. Then you figure out what information you need to make that happen. Then you take this abstract information and sketch out a document specification where you describe how info x gets mapped to a certain set of bits and you get a file format out there. At that point you probably know already how to load it. I suggest writing your own format for engine use and go with standard formats for DCC tools.
  2. In general, there will be a special structure being "the world". The world might be solid or not or include "solidity" info. If the world is nonsolid then it's likely there will be another special entity being "the physical world". The rest of the structures might be for example put a light here, there and there. They usually have a very bland correlation with the world, both graphical and physical, at this stage of your app. I strongly suggest using a physics library.
  3. No standard.
  4. ID based engines basically include (3). Unreal based engines are fairly more advanced but if you cut a lot of corners they're basically the same thing and you can bet at this 10,000ft of abstraction everything looks pretty much the same.
  5. Splitting in fixed sized cells is relatively inflexible but some games go with it and they work fine. For a first iteration, I suggest to just reduce the batch count as much as you can and optimize your life by minimizing your efforts first. Then you figure out what you need with the experience you got from rigging up the prototype.
  6. What are you asking here?
  7. Yes... for some program... for some import filter... for some data.
  8. Size of terrain is a 3D vector. Terrain has an origin which is a 3D vector. It might also have a orientation which is either a quaternion or a 3x3 matrix. Placing terrains is often not very different from placing entities, and entities are usually (but not always!) very loose on definition.
  9. Yes, a pre-made engine. You will also get a ready to go toolchain. Have a look at Unity or UDK.

Previously "Krohm"

This topic is closed to new replies.

Advertisement