Combat Design

Combat design has been very much a moving target, and I've have to combat (excuse the pun) both incorportaing new features, and refactoring existing code. I wish I was a master of architecture and knew all the systems we'd need from the get-go, but I know that's not possible with 1) iterative design and implementation and 2) doing a lot of things I've never done before.

One big thing on my mind lately is if combat should be real-time, active-turn-based, completely turn-based. Originally we were going completely turn-based - I thought turn-based was a good idea to make combat feel really strategic, but when I played the prototype, I don't think it really gave enough of a sense of urgency for the user. That's probably partly due to missing features, but also with the combat I'm trying to create, the user wouldn't necessarily do a lot in a single turn (restricted by power meter). Because of all this, I had to click on the "end turn" button so many times. It felt unncessary and not very exciting.

Just this week I decided to try out a real-time, recharging meter. Every time it filled, it gave the player a couple of power points to use for an action. In addition, enemies would have their meters recharging in the background. The player would never be 100% sure when the enemy would attack next. So as the player scrables to decide what to do next, the enemy will continue attacking. In addition, the strategy is still there - users still have to consider whether they should wait for more points; use up some of their points; or use up a lot their points (different actions use up different amounts of power points). Much more interesting.

Another big thing on my mind is as I start implementing new systems (e.g. Effect System for buffs/debuffs), I wonder 1) How should it work? 2) How should it interact with other systems? 3) Who should be responsible for using it? 4) What, if anything about the system, should be a Monobehavior? To help me in answering some of these questions, I've done some initial research to see how other game developers have implemented it for Unity. It was quite enlightening, and I now have a basis for a proper system.


Evolution Of Combat

It's been interesting going through these first couple iterations of combat. There's a lot more to come, but here's what I came up with so far (excuse all the placeholder art):

1. The very first version of combat was targeted for Android. I knew the interface had to be relatively simple so it could fit on the screen.

I had 3 main components in mind:

  1. Info about the player ship and the enemy ship.
  2. Info about combat (actions being taken, damage dealt, etc.)
  3. Actions the player can do.

Here's what I came up with for the quick prototype.

2. The second version was during our decision to switch to the PC platform. With the bigger screen space, I really wanted the player to feel immersed in combat and from a position inside the ship, similar to episodes of Star Trek. So I came up with this - viewscreen, info about the targeted ship, the actions you can do, and some stats about your own ship. I had just converted the GUI for the Android version, so it was still fairly simple.

3. As development continued, I realized the 2nd interface wouldn't suffice for all the new features we were designing. In addition, the mix of 2D and 3D GUI elements were becoming difficult to work with, mainly when working with Z-ordering of all the panels and elements within them. I decided to make everything 2D and to have elements on the corners of the screen. This is definitely not the final version, but it does give me a lot of screen space to add and test new features.



So far we've finished 2 prototypes and had 2 team meetings.

The first prototype was with the intention of releasing the game on Android, but we've decided to release on PC instead (mainly because we realized there was a $3000 fee to release on Android with the features we want - there's the free version, but it has limitations). That means we're increasing the scope but not so much that we aren't capable of doing it. Plus we have some ideas to make the game more fun.

The second prototype basically involved us moving the code over and implementing it for the PC platform. I re-did the combat concept and came up with the GUI appearing as if you're in the spaceship. I really like the idea of the player facing the enemy in 1st person view like some old-school RPGs. When the enemy lands hits on you, the whole screen will shake.

I've been thinking of ways to make combat more interesting. While the basics are there, it needs more work. I had a great design brainstorm session with a friend, Will, a couple of days ago; it really propelled me into some great directions for the combat system. He also had a cool idea for one of our longer stories. I'm now ready to do a solid first pass on the mechanics as part of our game design document. Not sure if I'll finish it tonight, but it's getting there.

Josh has been spending time working on the story system and laying the foundation for the look and feel of the game; it's looking pretty impressive so far. We've going for a comic book look to go with the humorous stories and frequent combat.


Antares Universe

We were previously using Playmaker for visual scripting, but as programmers, we quickly realized its limitations, especially with passing around variables.

For our new project, we have started using Antares Universe, which provides a lot more power at the cost being a higher learning curve.

Here's an example showing the start of the simple combat system (click for larger image). There are probably things I could do to improve the graph in terms of efficiency and organization, but it does the job.


Unity = Wow

Another long story short, we jumped to Unity for many reasons, and I'm glad we did. Mainly we skipped straight to focusing on gameplay development. Here is what we're currently working on -- hoping to get it done by end of year.