Grand Strategy: Space War - "Mercenaries" -- Log 1
I took a few days off this week. I had promised myself to do some devving on the side this summer, and exposed my thoughts in my previous entry.
I took about 4-5 hours in the last 4 days to look over the dusty code of the now defunct combat simulator for GS:SW and decided to see whether I could salvage it into a spinoff game. Let me examine here the changes it has undergone:
5 Players Mayhem! (Showcased: AIs, but also works as PVP!)
First and foremost, I had to come up with a tentative title to label it as a standalone from the original game (which is still WIP). I decided to go with the "Mercenaries" suffix. Why?
I wanted something that would convey the look and feel of what this is about. GS:SW is a 4X game, which implies building an empire at macro scale. Mercenaries is to be much more focused on a single ship and is meant to be an arcade/action type of game. I wanted for it to feel a bit like Raptor: Call of the Shadows and Solar Winds (in which you play a bounty hunter / mercenary of sorts). Decided to come up with the Mercenary code-name for now.
Why plural? Because it will have hotseat multiplayer support of course! (both COOP and PVP!)
Before I could start on actually changing the code base, I had to refactor nearly all classes and debug a bunch of crap I had left behind (it was a prototype after all, which was done as quickly as possible).
I ended up fixing bugs that had eluded me for a long while. I've been a good boy.
That did not amount to much initially, but it really helped me reach the velocity I intended to have (and much faster than I thought!).
In the following 5 hours, I've successfully done:
There are no winning conditions yet, but up to 4 players can join a game. You might think it sucks to have 4 people crammed on the same keyboard right? Well, because I'm both ambitious and lazy, I wanted to have controller support (gamepads) for this game, but since it turns out it is very hard to implement with browsers, I've been using antimicro 2.4 which is a GNU-licensed software that allows you to map keyboard keys to your gamepad. Not perfect, but definitely much more fun, and also allows 4 people to easily join the same join either as a team or to kill one another.
The best part is how this all works. You could play 1v1, 2v2, 1v3, etc, or 3vAIs. But you could even go as far as:
P1 has 3 AI allied, P2 has 2 AI allied, etc. The possibilities are endless and I'm having a lot of fun toying with game modes.
That being said, choosing to have up to 4 players meant I had to take very drastic decisions early on. One of my original ideas was to have the ship controlled through WASD (W D for throttle, A D for helm rotation) and the mouse to control the weapons (aim anywhere on the map and blast them). Since there can ever be only one mouse, I had to let go of this idea and make a control scheme (and features) that would map to a very small amount of keyboard keys instead.
I wasn't originall hellbent on the idea of hotseat multiplayer, but as I developed the input, it was the first thought that crossed my mind: this would be great as a couch coop or PvP arcade game! Sometimes you just have to follow a hunch and go with it. I felt that, if GS:SW - Mercenaries had a chance to be different than all of the space shooters out there, I had to seize it. This seemed like it, and it gave me renewed hopes that this concept would translate better to a steambox or console (one can always dream).
I wasn't too fond of how rigid the original game felt, but I could live with that. The reason I actually went around and changed it was because, in the original simulator, there was simply no reason for the ships to 'move'. Once they were in optimal firing ranges, all they needed was to make sure their helm was still pointing at their target and dealing as much damage as possible. It didn't feel like it would be possible to circumvent enemy fire and deliver salvos onto their hull.
I've has to refactor the entire movement logic (which turned out to be much easier than I thought, thanks to my very (unnaturally) clean code!). The game now 'assumes' that your ship has thrusters that are used to stabilize it in deep space (effectively stopping your ship altogether), but movement itself may derive slightly from your helm direction because it is somewhat vector-based.
What this opens up is a series of possibilities where you can accelerate and quickly turn your pitch to do some strafing fire on your enemy's flank without fear of retaliation. This is the first major step I've taken to turn this into a skill-based game and the first game design decision I've taken to truly support movement as a key component of this game.
We're still very far from getting any decent form of balancing, but the original numbers (random generators) were simply misleading. Furthermore, they were meant to support a static combat playback, not an actual game.
Quickly after implementing player input, I've come to the conclusion (through playtesting with my girlfriend and brother-in-law) that it didn't feel even remotely close to what I wanted this game to be.
I've increased all firing rates, made ships more agile and faster, reduced the amount of weapons and made some minimal rules for randomly-generated weapons so that there would be some kind of sense of fairness in combat.
I've scrapped the original UI that was no longer relevant and put together something hastily to convey the feel of what I'm trying to achieve. It isn't much, yet due to a series of latent bugs, it is the one thing that took the longest to make. It reinforces information that is already on the screen by color-coding players (that has yet to be done on the ship assets themselves).
I don't feel I'm there yet, but I've made some significant steps in the right direction. GS:SW Mercenaries definitely feels different than it's daddy now!
I've hesitated between two approaches for this game.
- 1 - Refine/Polish the main gameplay (combat arena) as much as possible to make sure it is fun
- 2 - Build a complete flow of a game mode I envision would work
I've spent a little time following "1" and I feel it is hard to make final decisions on anything until I know what the entire flow would be like. I have way too many header constants that allow me to turn on/off certain features or behaviors just so I don't lose track of them (in case I want to rollback). Overall, it is hurting my code base and my ability to make decisions.
For these reasons, I'll be turning to "2" in the coming days. I'll try to build a game mode / flow / loop and see how fun/addictive it can be prior to revisiting the actual combat.
As per usual, feedback is more than welcome!
Me, taking a beating from a carrier-ship in PvE (1:1)