Improvements to ship movement system

    Joined
    Sep 1, 2012
    Messages
    34
    Reaction score
    0
    • Legacy Citizen 2
    • Legacy Citizen
    First a recap of how the current system works:

    • WASD changes horizontal velocity of the ship on a plane.

    • Q and E change the vertical velocity in regard to said plane.

    • Mouse rotates the ship on two axes, with ctrl you can rotate it on the third

    • Shift brakes

    • To move, ship requires thrusters

    • To rotate, nothing is needed

    • There is a relatively low speed limit independent of ship dimensions, even in space

    • Brakes stop the ship immediately
    Now, why this is wrong:

    • Nothing is required to rotate

    • Vertical movement is dependent on the same thrusters as horizontal movement

    • Rotation is as fast for all ships meaning large behemots can rotate ridiculously fast

    • Speed is limited in space, which is unrealistic and somewhat annoying
    What I propose to improve the situation:

    • Make current thrusters "main thrusters", which can only accelerate the ship forward, make them more powerful than now.

    • Add directional thrusters with lower power, that allow movement in all direction, but are less powerful than main thrusters. They are also responsible for rotation

    • Add brake block that is responsible for braking. Without it, braking is slow or impossible(but you still can turn around and thrust the other way around)

    • Remove the speed limit OR

    • If it's dictated by the lagginess resulting from sector loading, make it dependent on amount of thrusters and mass of the ship

    • Remove the slowdown effect in space, make it dependent on atmosphere above planets.

    • Add gravity affecting ships above planets

    • Add a togglable stabilizer module which can keep the ship horizontal relative to the surface of a planet and perhaps also asteroids. It can also counter planet gravity (using directional thrusters)

    • Make Q and E roll the ship and Shift/Space move it up/down. This should be more intuitive since that's how controls work in most games.

    • Make entering planet atmosphere at high velocity damage the ship slightly (although in reality it'd be more like hitting concrete at high enough speeds)
    Pros:

    • More intuitive controls

    • "dead" ships will no longer be able to rotate

    • Movement above planets will be much more intuitive

    • Disabling main thrusters won't immediatelly immobilize the ship

    • Ships will move more like one would expect them to - accelerate once and they will keep flying (at least in space), making space travel much more comfortable

    • With stabilizers disabled, ships will naturally fall to the surface of a planet, making landing much easier

    • Gigantic motherships will no longer rotate as fast and they won't accelerate/brake as easily (at least not without gigantic amount of thrusters of all kinds)
    Cons:

    • Ships will require more different blocks to achieve the same level of maneuverability, potentially confusing some players

    • Current designs will no longer function as expected
    All in all, I think it's a nice collection of ideas and it's worth giving them a try (though they're my ideas so, well, it's obvious I like them) :p
     
    Joined
    Aug 13, 2012
    Messages
    163
    Reaction score
    0
    Not to be mean to schema and all of his hard work and whatnot, I think I need to almost completely agree with asmageddon. Anyone else?
     
    Joined
    Sep 1, 2012
    Messages
    34
    Reaction score
    0
    • Legacy Citizen 2
    • Legacy Citizen
    I also agree!
    Now seriously what I wanted to say is: "It doesn't need to be broken to be improvable", but I'll instead add another suggestion, namely, add an auto-brake for preventing collisions with stuff since i just broke my ship by ramming it into a shop :p
     

    schema

    Cat God
    Joined
    Feb 17, 2012
    Messages
    1,552
    Reaction score
    2,604
    • Schine
    Hi, there already has been a lot of discussion about some of those points. Actually, about 3 month ago, the speed mechanics worked like you described it.


    • Make current thrusters "main thrusters", which can only accelerate the ship forward, make them more powerful than now.
      This would severely increase the difficulty of the game. Maybe I'll do that later, but for now I don't want to confuse the players

    • Add directional thrusters with lower power, that allow movement in all direction, but are less powerful than main thrusters. They are also responsible for rotation
      You said, that all ships would rotate at the same speed, which is not the case. The more mass a ship has, the slower it will rotate. The feature of directional thrusters is already planned, however, more as a support for the base value of rotation.

    • Add brake block that is responsible for braking. Without it, braking is slow or impossible(but you still can turn around and thrust the other way around)
      Like the first point, this would confuse players and controlling ships would become very difficult. I may change it in the future though, that maybe breaking will be harder for huge ships.

    • Remove the speed limit OR
      This is impossible unfortunately due to natural reasons. Lagginess wouldn't be the only problem. Also the work for physics would increase exponentially (since for high speed collisions you'd either have to cast the object (which is unbelivably expensive), or increase the sub steps of a physics update by at least 100 times.

    • If it's dictated by the lagginess resulting from sector loading, make it dependent on amount of thrusters and mass of the ship
      3 month ago there was no speed limit in the game, and the speed was directly dependent on the amount of thrusters vs mass. This had a lot of negative consequences: Distances didn't play any role anymore. Players built huge ships with 3-4k thrusters, which made them pretty much invincible, since the ship had max weapons and unlimited speed (so you were unable to hit it). Also more ships with 3-4k thrusters would impact the performance (it's still possible though, but it should not be a goal of the game to have to build thousands of thrusters on your ship to make it good.

    • Remove the slowdown effect in space, make it dependent on atmosphere above planets.
      I like that suggestion, it would add more depth to the game.

    • Add gravity affecting ships above planets
      Also a good suggestion that already is planned :)

    • Add a togglable stabilizer module which can keep the ship horizontal relative to the surface of a planet and perhaps also asteroids. It can also counter planet gravity (using directional thrusters)
      A stabilizing functionality is also planned

    • Make Q and E roll the ship and Shift/Space move it up/down. This should be more intuitive since that's how controls work in most games.
      It may be more intuitive at first, but I think, having the rolling on the mouse is much easier to control. In my experience, if roll is at Q/E, very few people actually use it. If many players request it though, I'll of cause add another control scheme to change to

    • Make entering planet atmosphere at high velocity damage the ship slightly (although in reality it'd be more like hitting concrete at high enough speeds)
      I like that one. This goes on my feature list
    Thank you for your suggestions. Even if I do not agree with all of them, I'm always open for discussion to convince me otherwise :)
     
    Joined
    Aug 13, 2012
    Messages
    163
    Reaction score
    0
    Auto-brake wouldn't be vary smart because some people want to ram stuff using the dis-integrater and whatnot.
     
    Joined
    May 9, 2012
    Messages
    107
    Reaction score
    7
    The problem about directional thrusters is that you can turn around your gravity center having two reactors going forward by activating only one. So if you restrain them to only go forward, it will be false and you'll have to get some side thrusters etc ... I don't think the physics of a game can easily handle the reality of thrust in space or atmosphere.
     
    Joined
    Aug 13, 2012
    Messages
    163
    Reaction score
    0
    I would say it COULD be possible with a powerful enough server and IF it weren't in java. I think the main problem with something like that would be that Java wouldn't be able to handle it.
     

    schema

    Cat God
    Joined
    Feb 17, 2012
    Messages
    1,552
    Reaction score
    2,604
    • Schine
    Things like that have nothing to do with the programming language. Java is fast enough. Also, it would bad design to implement something that would increase the requirements that much.
    People tend to bash Java, but in this kind of application, the difference would probably bring more problems as it would solve. In small projects with only a few lines, or in projects made by big companies, c++ of course is the better solution, but StarMade already has 100k+ Lines of code, and I'm the only one writing it, therefore most of the performance is directly dependent on the way it is coded, not the programming language. Sure, it would theoreticall possible to make the same game in C, but it would take about 10 times as long, and it's not even sure, you could archive a better performance (because it depends on the individual skill with the repective language)
     
    Joined
    Sep 1, 2012
    Messages
    34
    Reaction score
    0
    • Legacy Citizen 2
    • Legacy Citizen
    Ah, it would appear I was misunderstood.
    While having to mind centre of gravity and having to design ships with thrusters positioned like they need to be in reality would indeed be cool, I agree that it would be a lot of pain in the ass to get around.
    What I meant was simply to have separate block types for different directions.
    So a "main thruster" would only allow the player to accelerate forward and slightly change the direction when active, a "side thruster" would allow vertical and horizontal movement as well as rotation regardless of placement (just like how currently thrusters placed anywhere simply accelerate the ship forward)
    The reasoning behind this suggestion is simply that thrusters are generally placed at the end of the ship and are relatively easy to destroy. Now, ships with disabled thrusters can still rotate, which doesn't make much sense. With directional thrusters the ship could still rotate and move around even if the main thrusters are destroyed, although much more slowly.
    As for brake block, I suggested it indeed mainly for lager vessels, since small ones would often be able to brake with just directional thrusters, although not instantly. Brake block would simply, do some, say "anchor the ship in hyperspace" thingie that would be very effective at making it stop.
    And I must firmly disagree with you on Q/E being used for moving up/down - in many space games, it's often Q and E that in fact rotate the ship, and in shooters, Q and E make the player lean sidewards, which makes it much more intuitive for rotation than ctrl+mouse. Another thing is that if roll control is under the mouse, it becomes impossible to control yaw while doing this, which also is a minus.
    If you're still not convinced then consider shift and space - usually used for crouching and jumping respectively, which are, effectively, means of moving (your point of view at the very least) up and down. Most games also feature shift and space as movement up/down in water/on ladders/etc.
    That said, I think it makes a lot of sense to have roll control on Q and E, while leaving moving up/down to shift and space.
     
    Joined
    Sep 1, 2012
    Messages
    34
    Reaction score
    0
    • Legacy Citizen 2
    • Legacy Citizen
    Java is not a truly slow language like Python or PHP, and its performance is often comparable to C++ (well, it's obviously slower, but not by an order of magnitude). Another issue is garbage collection which might result in lag spikes (but srsly, it's not much of a problem unless you're constantly creating and destroying thousands of objects).
    In the end what really counts is the algorithms, data structures and design patterns used. There obviously are applications where you need every last bit of performance you can squeeze out of a computer and there is no other option than C, C++ or another language of their kind, but if all you're doing is writing a game, and one that doesn't have ultra high end graphics at that, using Java doesn't really make much of a difference.
     
    Joined
    Sep 1, 2012
    Messages
    34
    Reaction score
    0
    • Legacy Citizen 2
    • Legacy Citizen
    Only the keybindings are. You can't swap ctrl+mouse and q/e around or really bind roll control to anything other than mouse.
     
    Joined
    Sep 3, 2012
    Messages
    8
    Reaction score
    0
    • Legacy Citizen 2
    • Legacy Citizen
    If the engine could handle it in general, I think the diretional thrusters could be fun, but not mandatory. Make it a server option or something. I think of directional thrusters as thrusters in Garry's Mod, where you need a thruster on every axis to move a prop.

    A brake block is largely unnecessary, just tie the spacebar braking power to the power of the engines.

    If having the speed limit is to stop massive ships from going too fast, first make ship max speed based on their thrust, then make ship mass exponentionally affect ship thrust. So if your ship was one of those immense cruisers, you'd need thrusters well above the hundreds to even get an effect from them.

    I'd love rotate to be on Q/E, since I often use rotate in combat to avoid shots (Ship is wider than it is tall).

    Everything else I agree with. Keep the good ideas coming, I suppose :P
     
    Joined
    Sep 1, 2012
    Messages
    34
    Reaction score
    0
    • Legacy Citizen 2
    • Legacy Citizen
    Argh, I'm repeating the second time that I don't mean directional thrusters as in what you're thinking of. I merely mean something that adds to the ship rotation and non-forward movement speed regardless of placement or orientation.
     
    Joined
    May 9, 2012
    Messages
    107
    Reaction score
    7
    "If having the speed limit is to stop massive ships from going too fast, first make ship max speed based on their thrust, then make ship mass exponentionally affect ship thrust. So if your ship was one of those immense cruisers, you'd need thrusters well above the hundreds to even get an effect from them."

    This solution isn't possible, because the exponential factor is the equation leads to restriction of size for the ship which isn't the purpose. As a matter of fact, a huge ship would need more than half of it as thrusters to work out and the gap between max thrust and min thrust would be crossed with less than a hundred thrusters.
    This was used in the previous version's of the game.
    Changes had to be made. The idea was to have, independantly of thrust, a max thrust according to the mass which would be near the "tan" fonction. So that for example, a no mass ship would be able to achieve max thrust, while a XXX mass ship would be limited to a percentage of max thrust. Then depending on his thrust-mass, he would be able to have max thrust or not.
     
    Joined
    Sep 3, 2012
    Messages
    8
    Reaction score
    0
    • Legacy Citizen 2
    • Legacy Citizen
    "Argh, I'm repeating the second time...placement or orientation." I know what you meant, it just made me think of how Garry's mod thrusters work, in that fowards is separate from other motion.

    As for the max thrust, yeah I guess that makes sense. The current system isn't bad, just seems a little odd to have a maximum speed in space, even though it makes sense balance wise.
     
    Joined
    Sep 3, 2012
    Messages
    7
    Reaction score
    0
    • Legacy Citizen 2
    • Legacy Citizen
    for bigger ships maybe they should since they have more mass be heavier and then have maybe different kinds of factors to it so the more mass the more engines?
     
    Joined
    Feb 6, 2013
    Messages
    1
    Reaction score
    0
    • Legacy Citizen 2
    • Legacy Citizen
    I see a intresting way to do this.
    Maybe add 3-dismensional grouping to engines, same as missiles used to have?
    X + Amnout of units = yaw and roll speed,
    Y + Amnout of units = pitch
    Z + Amnout of units = thrust
    This would remove the overcomplication you seem to want to avoid, and add a certain degree of freedom and realism at the same time.