Need help/advice with designing Space Sci-Fi game

A

AngrySM

Guest
Hello everyone, I'm pretty new here and in GMS 2, I only made 1 arcade shooter for 2 players on 1 keyboard, so my skills are not so high but I'm a fast learner.

The thing I would like to receive an advice to: I have a concept of a space sim game, maybe even multiplayer one. It will contain planets, space stations, anomaly sites, wreck sites, asteroid belts, and other stuff. The question I have regarding the rooms' system - how can I and how should I design rooms for such a solar system, where a player could have two flying modes: one for areas near the objects, where he/she can interact with them (combat, mining, building, researching, docking to stations etc), having let's say a 1000 km radius ( 10 meters = ~1 pixel), and the other for flying super-fast between the objects in that systems (above mentioned planets, sites, stations etc). The thing is that some sites are premade (planets), while some others should be generated in random positions of the solar system and then located by players via some locating mechanism.

In general, I would like to design a feature which automatically creates a room around a created/appeared object( or an object flown to this coordinates, f.e. spaceship that wants to build a space station here).

Can I design such and how best should I do it?
 

NeoShade

Member
I don't actually have a suggestion about how you should do it (sorry) but I did just want to quickly question your scale and/or range. Are you aware that if 10m = ~1 pixel, then your 1000km radius will be ~52 screen widths, assuming a full HD resolution? To encompass the entire circle, you'd need ~104 screen widths and ~185 screen heights. That's a VERY BIG area.
 
A

AngrySM

Guest
I don't actually have a suggestion about how you should do it (sorry) but I did just want to quickly question your scale and/or range. Are you aware that if 10m = ~1 pixel, then your 1000km radius will be ~52 screen widths, assuming a full HD resolution? To encompass the entire circle, you'd need ~104 screen widths and ~185 screen heights. That's a VERY BIG area.
Oh yeah, I must have missed one zero to those 10 meters =D. Thanks anyway. It will be thought of later. The another thing about scale is that it could be zoomed in and out.

Still searching for a way to design a room system.
 
W

willthetarget

Guest
I would start with having an idea of the position of everything that doesn't randomly spawn (i.e. is hand placed by you) and using chunks to generate the world and fill in the gaps between planets. A simple YouTube search for "Game Maker Chunks" should get you started in the right direction with this. Hope this helps!
 
A

AngrySM

Guest
I would start with having an idea of the position of everything that doesn't randomly spawn (i.e. is hand placed by you) and using chunks to generate the world and fill in the gaps between planets. A simple YouTube search for "Game Maker Chunks" should get you started in the right direction with this. Hope this helps!
Hey, appreciate your idea! Will have a look at it.

I keep accumulating ideas, so anything you can advise is welcome
 

Yal

šŸ§ *penguin noises*
GMC Elder
I think making rooms in GM itself is sort of a lost cause if you want three different rooms to be synced up and represent the same area, it'd be better to have a single "ingame" room (or a "map view", "orbital view", and "landing view" room which uses different player objects) and create planet objects based on data blobs.

For instance, planets are made from, say, 50 different surface segments randomly picked with some segments being possible to override manually, e.g. to put a city in sector 41 of a planet. In the map view, you'd just draw a planet icon and not worry too much about the segments, but you might loop through them when the room starts and generate a list of notable landmarks (e.g. get the names of all manually placed segments, and check what the most common resource on this planet is). in the "1000km orbital" view, you'd have a global rotation angle which is used to figure out which segment you're over... for instance, if you're at 179.3 degrees, you're over segment 24, because it's the 25th segment (counting starts at zero for arrays) and 179.3 is slightly less than halfway through 360 degrees. In this view you'd just draw a representative view of the segments you're over, e.g. use different sprites for forest, city and sea segments. The segment might refer to a room or some other chunk data (which is used to know what stuff actually is in it) and this data is used if the player decides to land on the planet, but the only data we care about in the orbital view is the type of the segment.
 

Psycho_666

Member
Purely programing wise what you want isn't all that difficult to do...
You just make a huge array, that represents all "sectors" in the universe you want to create.
So for example in sector 10:10 you will have a solar system.
When the player goes there it opens a new room you have already pre-made for this solar system with all its planets and stuff.
Now let's say there is an asteroid traveling accross the Galaxy. It will start let's say 1:1 and travel to 100:1... So let's say every few minutes of gamely it moves to the next location. Let's say 100.1 is the last sector. When the asteroid have to move away from 100.1 you just move it back to 1.1 again...
Now when the player gets to the asteroid, it goes into a separate room made for this one asteroid regardless of the asteroids current position.
You can have nebulas and stuff, so when the asteroid is in the nebula there will be some background changes and may be some effects like equipment not working properly in the nebula or something.. . That's your gameplay thing now...
But the moving stuff around - you don't create rooms on the fly. You pre-made all the rooms and use only the ones, that are appropriate for the use case....
The issue with that is, you will need a lot of pre-made rooms... But on the other hand you can have all In all 2 asteroid rooms and just change some stuff so it feels like a different asteroid - the sprite, the tail pattern, rotation speed, etc. So you can do a lot with just one room.
It's a lot of coding and a lot of work, so as someone said before - may be you are way too ambitious for your skill level.
 
A

AngrySM

Guest
Thank you all guys for all the information! Can't continue working yet due to RL, but your advises are really helpful.

I will up the topic as soon as I start the project, more questions will come for sure.
 
Top