Posted January 29, 2021
A few months ago, my girlfriend and I were playing minecraft and I was looking at the problems with the glitches, as well as the problems with minecraft "getting boring" over time, due to both the limitations of the challenges as well as player capacity limitations. You can only do so much with redstone before it all completely borks due to chunk sizes. Moreover, the class system in minecraft is so broken it takes a keen eye to even know that there is one (largely, mages are completely broken, and not in an OPed way). I had an idea that I think has much promise, however I will not likely ever get around to making it happen. Rather than letting the lessons of the brainstorm going to waste, I figured i'd push it here to see if anyone is adventurous enough to tackle it. First the idea, then the problems that I foresaw and how to solve them.
The idea is to, simply, make minecraft in space. At the end of the day, the secret to games these days seems to be making a game simple enough to get your foot in the door, but complicated enough to stay entertaining for long periods of time. Minecraft did a great job of this, until it didn't, between bugs, optimizations, etc, everything more or less has become like working in a factory. I, personally, have found it more fun to start a world from scratch and trying to survive starting from nothing more than really anything after that, hardly, anymore. I mean, there's some thing i still don't have done yet, but it's largely all the same except when you're crunched like you are with skyblock. Minecrafts main endgame challenges are the wither and the enderdragon, which you're hesitant to really get overly involved with given how it limits your access to the rest of the world. Minecraft doesn't encourage class exclusivity, so you aren't forced to choose between tank, archer, and mage, as well as mages being so ridiculously nerfed (potion throws and utilities of specialty weapons like the flint-and-steel). This can largely be solved by going to space, having ship to ship battles, and also having person-to-person battles in a completely redesigned system, which minecaft mods would not allow.
The basic idea in my head is that you get "anchor blocks" placed in shipyards from which to build everything. All blocks (and also the players that fulfill certain conditions) become "anchored," and the anchor will then naturally shift depending on all the blocks connected (thus not relying on the anchor or making the anchor a universal weakpoint: the initial anchor is just a starting block against which all blocks are placed). Devices such as "thrusters" to rotate, etc, would be controlled by an interface defined by the player. There would, thusly, be various "interface blocks" which can be wired to control either 1 block or many blocks. The interface should be scriptable either via text or a drag'n'drop interface with things like sliders and buttons. Individual components will be labeled with unique IDs relative to the anchor block's IDs (for when ships are copied), which can be checked "while wiring." Similarly, wires will have to be run between control consoles and the components. Presumably, also, smart players should be allowed redundancy, incase the wires become "damaged," which can result in their disconnection (and thus disabling the ship), thus such redundancy (adding extra wire blocks through another pathway) can encourage more robust ship designs, at the cost of block placement (thus reducing cargo space, walking space, etc). Players will be able to "apprise" ships at shipyards for quick reconstruction when they are destroyed (for a fee for each type of equipment, of course). Rather than "destroyed or present," each block will have a health. Weapons can reduce the health of a block, rather than automatically destroying it, making combat more robust than merely sneak attacks.
Ideas for ships: This should actually be easy. Once you have a starter ship, you make that a simple starter ship for AI. As you, the dev, creates new ships for your own purposes, to survive in the universe, particularly good ship designs should thusly become part of what's available for AI. Multiple players during a "beta test" will also likely have their own styles, which can then be made into various alien races. This should make it realtively easy to populate the game with various default structures: you create structures and ships that are both believable and fitting, because they resulted from natural evolution from natural gameplay. Once you have eneough of an engine to build your base ship and destroy ships, dock with ships, etc, you'll simply improve the game by playing it and seeing what you need.
Gimbal Lock: Quaternions. There's a right way and a wrong way to do it, though, so beware.
Being warped while on someone else's ship: Instead of trying to keep track of how you move and how the ship moves due to someone else's actions, your position should be relative to the nearest anchor block. Thus, when the ship as a whole moves, your view of the moment doesn't actually change, because your movement is relative to the anchor, rather than absolute coordinates. Thus, running to the engine room while the ship is moving shouldn't be a problem, becaus you only move in relationship to the ship's anchor position.
Separation: If all connections are severed, a new anchor shoudl form for the pieces of the ship that got separated (like if a ship breaks in half, you now have 2 ships). Whenever blocks are destroyed from a ship, this should cause a ripple effect over blocks surrounding the area to check what blocks are connected to what to determine if a new anchor is necessary.
Docking: Since the anchor is a position, when a ship wishes to dock (either with hostilities or for trade or whatever), they, in turn, end up with the same anchor, thus allowing boarding parties. The mechanism for both docks must be disengaged to force it to create 2 new anchor points.
Enemies: Along with friendly "humanoids" that can become hostile (or start hostile), attacking your ships, rudimentary simple AIs like "space spiders" and "space fungus" and such would also make sense: Minecraft got away with really simple AI. Obviously we don't need the world's most complex AI to make a good game (heck, look at other classics like the various metroidvanias out there like Castlevania: Symphony of the Night where the AI only knows maybe 1 or 2 attacks). Humanoids should obviously be the smartest AI, repariing their ships, firing weapons, etc, but dumb threats can certainly be useful, too, to add variety.
Collision: It's pointless to bother checking each block: make sure projectiles and other ships are within a certain distance of the anchor, and only then check blocks that are sub-ordinate to the anchor. This alone should vastly improve the time it takes to check for collisions over even base minecraft.
Debris: "Warp core explosions" could improve this quite a bit. However I'm not quite sure how to deal with single stray blocks in a responsible way. Maybe if that which is unpowered goes long enough without having a player anchored it automatically gets despawned? That which is powered will likely go nuclear if not regularly maintained, perhaps. Not sure how to deal with space rocks, though. Maybe as things get far enough from gates, the countdown timer until it despawns is significantly increased, but within a certain range nothing despawns?
Unloaded chunk disappearing glitch: Minecraft has this: basically, if something from a loaded chunk attempts to move into an unloaded chunk, it allows this, but since it's an unloaded chunk, it simply ceases to exist. Games like X do "Out of Sector simulation" calculations, so that everything actually stays loaded, but not rendered, and perhaps using a wholly different collision detection system (such as not even checking for collisions and simply making it appear that the combat is being fully simulated). If you require that, to see a ship or know of it's condition, you have to be in the same sector, you can avoid alot of this simply by simulating on sector change during a "loading screen", or something like that. The less you display, the less precise you have to be. Moreover, I recommend infinite size per sector, and using jump gates, much like X: as you get further and further from a gate, less is likely to exist. Thus, every "sector" becomes it's own world in minecraft terms, then you don't have to think about "chunks."
Equipment ideas: I recommend missiles that work like real world missiles (instead of exploding, firing metal projectiles), bunker busters (for larger ships with heavier armor), RADAR (preferably like the real thing rather than blindly telling us what everything is, since IDing something strange can be alot of fun, as well as attempting to "go stealth"), RWR, IFF (for when a ship isn't trying to be stealthy), etc. You could also have players create missiles using IR, RADAR, and LIDAR seeker heads which have their own advantages and disadvantages (RADAR can be more easily detected, IR can do sneak attacks but is easily spoofed when detected, LIDAR is hard to thwart, but is expensive as hell. Instant lasers, slow pulsed laser projectiles (FOF, but can be dodged), etc. Obviously large ships should be resistant or mostly resistant to certain types of projectiles, while particularly vulnerable to other types that are hard to hit smaller ships with (like bunker busters). Chaff dispensers and flares are likely to be useless to larger ships, due to being too large to truely deflect something like that. Forcing conundrums that make it impossible to create "the perfect ship" are where class systems and triangles emerge.
The idea is to, simply, make minecraft in space. At the end of the day, the secret to games these days seems to be making a game simple enough to get your foot in the door, but complicated enough to stay entertaining for long periods of time. Minecraft did a great job of this, until it didn't, between bugs, optimizations, etc, everything more or less has become like working in a factory. I, personally, have found it more fun to start a world from scratch and trying to survive starting from nothing more than really anything after that, hardly, anymore. I mean, there's some thing i still don't have done yet, but it's largely all the same except when you're crunched like you are with skyblock. Minecrafts main endgame challenges are the wither and the enderdragon, which you're hesitant to really get overly involved with given how it limits your access to the rest of the world. Minecraft doesn't encourage class exclusivity, so you aren't forced to choose between tank, archer, and mage, as well as mages being so ridiculously nerfed (potion throws and utilities of specialty weapons like the flint-and-steel). This can largely be solved by going to space, having ship to ship battles, and also having person-to-person battles in a completely redesigned system, which minecaft mods would not allow.
The basic idea in my head is that you get "anchor blocks" placed in shipyards from which to build everything. All blocks (and also the players that fulfill certain conditions) become "anchored," and the anchor will then naturally shift depending on all the blocks connected (thus not relying on the anchor or making the anchor a universal weakpoint: the initial anchor is just a starting block against which all blocks are placed). Devices such as "thrusters" to rotate, etc, would be controlled by an interface defined by the player. There would, thusly, be various "interface blocks" which can be wired to control either 1 block or many blocks. The interface should be scriptable either via text or a drag'n'drop interface with things like sliders and buttons. Individual components will be labeled with unique IDs relative to the anchor block's IDs (for when ships are copied), which can be checked "while wiring." Similarly, wires will have to be run between control consoles and the components. Presumably, also, smart players should be allowed redundancy, incase the wires become "damaged," which can result in their disconnection (and thus disabling the ship), thus such redundancy (adding extra wire blocks through another pathway) can encourage more robust ship designs, at the cost of block placement (thus reducing cargo space, walking space, etc). Players will be able to "apprise" ships at shipyards for quick reconstruction when they are destroyed (for a fee for each type of equipment, of course). Rather than "destroyed or present," each block will have a health. Weapons can reduce the health of a block, rather than automatically destroying it, making combat more robust than merely sneak attacks.
Ideas for ships: This should actually be easy. Once you have a starter ship, you make that a simple starter ship for AI. As you, the dev, creates new ships for your own purposes, to survive in the universe, particularly good ship designs should thusly become part of what's available for AI. Multiple players during a "beta test" will also likely have their own styles, which can then be made into various alien races. This should make it realtively easy to populate the game with various default structures: you create structures and ships that are both believable and fitting, because they resulted from natural evolution from natural gameplay. Once you have eneough of an engine to build your base ship and destroy ships, dock with ships, etc, you'll simply improve the game by playing it and seeing what you need.
Gimbal Lock: Quaternions. There's a right way and a wrong way to do it, though, so beware.
Being warped while on someone else's ship: Instead of trying to keep track of how you move and how the ship moves due to someone else's actions, your position should be relative to the nearest anchor block. Thus, when the ship as a whole moves, your view of the moment doesn't actually change, because your movement is relative to the anchor, rather than absolute coordinates. Thus, running to the engine room while the ship is moving shouldn't be a problem, becaus you only move in relationship to the ship's anchor position.
Separation: If all connections are severed, a new anchor shoudl form for the pieces of the ship that got separated (like if a ship breaks in half, you now have 2 ships). Whenever blocks are destroyed from a ship, this should cause a ripple effect over blocks surrounding the area to check what blocks are connected to what to determine if a new anchor is necessary.
Docking: Since the anchor is a position, when a ship wishes to dock (either with hostilities or for trade or whatever), they, in turn, end up with the same anchor, thus allowing boarding parties. The mechanism for both docks must be disengaged to force it to create 2 new anchor points.
Enemies: Along with friendly "humanoids" that can become hostile (or start hostile), attacking your ships, rudimentary simple AIs like "space spiders" and "space fungus" and such would also make sense: Minecraft got away with really simple AI. Obviously we don't need the world's most complex AI to make a good game (heck, look at other classics like the various metroidvanias out there like Castlevania: Symphony of the Night where the AI only knows maybe 1 or 2 attacks). Humanoids should obviously be the smartest AI, repariing their ships, firing weapons, etc, but dumb threats can certainly be useful, too, to add variety.
Collision: It's pointless to bother checking each block: make sure projectiles and other ships are within a certain distance of the anchor, and only then check blocks that are sub-ordinate to the anchor. This alone should vastly improve the time it takes to check for collisions over even base minecraft.
Debris: "Warp core explosions" could improve this quite a bit. However I'm not quite sure how to deal with single stray blocks in a responsible way. Maybe if that which is unpowered goes long enough without having a player anchored it automatically gets despawned? That which is powered will likely go nuclear if not regularly maintained, perhaps. Not sure how to deal with space rocks, though. Maybe as things get far enough from gates, the countdown timer until it despawns is significantly increased, but within a certain range nothing despawns?
Unloaded chunk disappearing glitch: Minecraft has this: basically, if something from a loaded chunk attempts to move into an unloaded chunk, it allows this, but since it's an unloaded chunk, it simply ceases to exist. Games like X do "Out of Sector simulation" calculations, so that everything actually stays loaded, but not rendered, and perhaps using a wholly different collision detection system (such as not even checking for collisions and simply making it appear that the combat is being fully simulated). If you require that, to see a ship or know of it's condition, you have to be in the same sector, you can avoid alot of this simply by simulating on sector change during a "loading screen", or something like that. The less you display, the less precise you have to be. Moreover, I recommend infinite size per sector, and using jump gates, much like X: as you get further and further from a gate, less is likely to exist. Thus, every "sector" becomes it's own world in minecraft terms, then you don't have to think about "chunks."
Equipment ideas: I recommend missiles that work like real world missiles (instead of exploding, firing metal projectiles), bunker busters (for larger ships with heavier armor), RADAR (preferably like the real thing rather than blindly telling us what everything is, since IDing something strange can be alot of fun, as well as attempting to "go stealth"), RWR, IFF (for when a ship isn't trying to be stealthy), etc. You could also have players create missiles using IR, RADAR, and LIDAR seeker heads which have their own advantages and disadvantages (RADAR can be more easily detected, IR can do sneak attacks but is easily spoofed when detected, LIDAR is hard to thwart, but is expensive as hell. Instant lasers, slow pulsed laser projectiles (FOF, but can be dodged), etc. Obviously large ships should be resistant or mostly resistant to certain types of projectiles, while particularly vulnerable to other types that are hard to hit smaller ships with (like bunker busters). Chaff dispensers and flares are likely to be useless to larger ships, due to being too large to truely deflect something like that. Forcing conundrums that make it impossible to create "the perfect ship" are where class systems and triangles emerge.