• FEATURED

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

## Program Concept Help Needed

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

4 replies to this topic

### #1Dubya  Members

Posted 06 January 2013 - 02:02 PM

My friend and I are planning on starting a Warhammer 40K campaign, and I thought it might present an opportunity for me to put my (limited) C++ skill to work.  However, I'm finding it much more difficult to get it started, and I figured I could bounce it off the community for suggestions, ideas, and advice.

Basically, I need the program to simulate the galaxy for us.  I started a program, but I'm not sure my design is capable of what I need it to do.  Here's what I have:

I want Main to start by creating the galaxy.  It will run through a 3 dimensional array and create Solar Systems.  Each Solar System will consist of 2 to 12 planets, and each planet will consist of 3 to 7 territories.  Subsequent uses of the program will allow us to pull specific locations on the galactic map, as well as run through each solar system to determine random events such as planetary catastrophes, invasions, etc.

I figure I'll have at least these classes:

A Galaxy class that holds a three dimensional array of Solar Systems.

A Solar System class that holds whether the system has been discovered, number of planets, controlling race, and other undetermined details.

A Planet class that holds 3-7 territories, a controlling race, climate, environmental details, etc.

A Territory class that holds resources per turn, strategic bonuses, and controlling factions.

From a generalized standpoint, do you have any suggestions on how you would go about doing this?  Are there any specific programming practices that I'll need (for example: arrays are obvious, and classes, I can see inheritance being useful, but not necessary . . . ) ?  Is it efficient to have Galaxy holding a 3 dimensional array of Solar Systems (I'm particularly uncertain about the areas of the array that simply don't have a Solar System, wouldn't this setup be allotting memory for a Solar System even though it should be non-existent?)?  Or would it be better to have it hold a bool (true = a solar system exists, false = undiscovered area) and an int (the int would be an index so we know which solar system is there)?

Anyway, I don't want to make the post too long.  I appreciate any suggestions, and, at the very least, hopefully it will bring up some new ideas and challenges for me and like-leveled programmers.

### #2Mercurialol  Members

Posted 07 January 2013 - 01:52 AM

Can you elaborate on 3 dimensional arrays for solar systems? I'm not sure I understand.

### #3Magnus Westin  Members

Posted 07 January 2013 - 02:08 AM

Yes, it would waste memory. One question though is, how much. What is the density of your solarsystems in a galaxy. If its really high, I would consider using a 3d array, since the wasted memory is quite small. And its a very easy thing to work with. If not, then take a look at octree's http://en.wikipedia.org/wiki/Octree. Also, depending on the size of your galaxy, you might even be able to use an array of solar systems, and just store the coordinates for each. Not very efficient, but if an galaxy only have say 50-100 solar systems, it wont matter, since looping through the array is going to be very fast anyway.

### #4Poigahn  Members

Posted 07 January 2013 - 08:44 AM

I would not allow you program to randomly generate your world.  As a programmer you need control.  Take the time to plan your universe and solar systems, this will give you consistency for future modifications.  Eventually if you wish to make it a Multi-player game over a LAN you will need everybody to be in the solar system.

However, If you wish to play this game yourself and do not want it to be to easy since you would know where everything is, then do this....

1  -  Have your starting position be random when you first start your game.  Also make any AI Enemies Random through out you Universe.

2  -  If Multiplayer, Make any guest's starting position Random - If the are joining a universe in progress everything else is the same.

3  -  At the start of the game, make you PC aware of only their surroundings.  They must discover the rest of the universe through game interaction in order to travel to other planets.  In Other words, you might be aware of Planet X in the DeadZone Universe, But your Charactor has no knowlege ( Which is obviouse that is your goal )

Your Brain contains the Best Program Ever Written : Manage Your Data Wisely !!

### #5Dubya  Members

Posted 07 January 2013 - 09:10 PM

Mercurialol: The idea of the three dimensional array would be an x- y-axis with a z component representing depth.  This was my original thought for creating a three dimensional space that could represent a galaxy.  My concern is that every single [x][y][z] space would represent a Solar System which would include several planets, and each planet includes several territories.  With so much space for the galaxy, this could add up to a lot of memory.

Magnus Westin: This is an awesome suggestion, and I've never heard of octree.  I took some time to read the wiki article you provided at work today, and it definitely seems like it would be more efficient from a memory standpoint.  If I understand correctly, the first octree would be the galaxy, with the eight octants serving as maybe sectors, then subsectors, then planets, then territories.  I'll keep researching!

Poigahn: The level of randomization would strictly be limited to throwing in solar systems for a starting point.  From there, I'd like to have total control as to creating new solar systems of our own invention, as well as maintaining income, etc.  I'm not looking at having multiple users over a LAN, but it's something that might be useful.  Do you have any documentation I could read to research this?

Thanks for the replies!

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.