It's been 3 months since I started Vectonic and now I can see the light at the end of the tunnel. The game is finished as far as I'm concerned as far as being feature complete and having a visual quality that I'm satisfied with. The little things I have left to do are an options menu, cross platform support (Mac & Linux) and licensing the music. It's been 45 days (or there abouts) since my last blog update. Let's go over what's happened since...
Maybe I should have announced it at the time but earlier this week I decided that Vectonic was finished.— Bob Hayden≫ (@YearOfTheBob) June 11, 2016
The biggest change for me was how I went about developing. 45 days ago I was losing my mind a bit. The burnout was getting to me so since then I feel like I've stepped back a bit.
Around about 45 days ago I left my comfortable government job for a more challenging development job where I now program all day. It didn't affect my motivation to code the second I'd come home each day as much as I thought, but I could tell I was less effective when my fingers would hit the keys.
I restricted myself to two weeknights of Vectonic a week with a total development free-for-all on weekends. I also took a week off on two occasions to recharge. These periods were super beneficial for me to stop and take a look at things from an outside perspective. The downtime also meant I'd be pent up with so much energy and so many ideas coming off a break. That said hardcore sessions would still own me.
I just want to unwind but my brain is all: "VECTONIC VECTONIC VECTONIC VECTONIC VECTONIC"— Bob Hayden≫ (@YearOfTheBob) May 22, 2016
Quick aside on developing around working a full-time job: Being at work all day and away from the game is great for the same reasons. The time away to reflect, consider and rev myself up to get going again is so valuable to the way I operate. I think that were I to work on Vectonic full-time I would have lost motivation at some point or at the very least worked far less effectively in the time I would spend on it. When I used to think of developing a game I'd think I'd have to quit my job and live off a nest egg or become a starving artist. I'm glad that's not the case and feel fortunate that I can afford the work-work balance I have. I understand it's a position not everyone has the opportunity to be in and am grateful for it.
The main focus of the last 45 days was towards putting the game modes in the game. The basic Battle mode was easy enough to put in. Score points for destroying enemies, lose points for killing allies. Simple! Next was Power Gem - basically a juggernaut-type mode where the juggernaut doesn't get any extra abilities. Destroy the gem holder to get the gem. Destroy people while holding the gem to get points. I wanted Power Gem in because it rewards players with a strong mix of offensive and defensive strategies, basically being able to maintain some semblance of a kill streak. These two modes were technically simple and the next ones got a bit trickier.
Sunbathe is a king of the hill mode where the players must stay inside the corona of a moving sun to score points. Originally this was going to be a spotlighted region on the ground however given the fundamental design straegies used for the games visuals it was too difficult (and weird looking) to implement. My plan from the beginning of Vectonic was to have all game modes playable in a team setting. Therefore Sunbathe needed to support this too. Due to the stupid way I had designed teams working from the beginning I had great trouble having the scoring in Sunbathe work correctly so that if multiple players of the same team occupied the corona they wouldn't score points at a faster rate than a single player. I gritted my teeth and coded an ugly solution to an ugly problem rather than fixing the root issue.
I knew I needed to fix the way the teams were handled in code. I knew what I needed to do. I knew it would involve me tearing up hours of code I should never have written. I knew that would mean a wave of new bugs to squash. I put it off for probably 3 weeks and it was a stupid roadblock in development that prevented me from doing more down the line. Finally one Friday night I knuckled down and fixed it. It really wasn't that bad in the end. I even got teams spawning together in formation working that same night.
Okay time to put my toys away and get to work... pic.twitter.com/Zhkx1vKNnE— Bob Hayden≫ (@YearOfTheBob) May 21, 2016
With that dumbness out of the way I was finally free to get cracking on CTF (Capture the Flag) the next day. In CTF you need to bring the enemies' flag back to your base. Jumping causes you to drop the flag and while holding it you can't boost or slam. Doing capture the flag mode was a really fun period of development. I got CTF working properly in under a day and was very satisfied with myself. While making the flag and base entities I also made a bunch of other little toy doo-dads realising the sandbox I had made for myself to play with.
I'm not sure if "Bloccer" is the best or dumbest idea I've had. pic.twitter.com/ZXdQNog1Ps— Bob Hayden≫ (@YearOfTheBob) May 22, 2016
Of those toys notably was a bouncy cube entity. I did a quick bit of texture work and made it look like a soccer ball.
A soccer block... Bloccer. Genius!
3 hours of Sunday was then the creation of Bloccer. My god, that weekend was so good but nearly burned me out in the end. I took like a 10-day break afterwards. Bloccer is honestly the most fun I've had playing Vectonic though. I think largely due to having spent so little time developing it that I wasn't fatigued by it also I love 4-player Vectonic with 3 teams converging on one poor soul's goal. Madness.
I think these kill screen messages are just the right flavour of stupid. pic.twitter.com/6IqcKYhBCP— Bob Hayden≫ (@YearOfTheBob) May 5, 2016
Between Sunbathe and the CTF during the roadblock I tinkered with death screens, a pause screen, credits and instructions. The death screen I knew I wanted to contain fairly memey messages. I think I ended up straddling the pretty fine line between okay-memey and god-awful-memey. I wanted to provided a strong impact with the death messages. Given the already noisy audio-visual aesthetic of the game it made sense to go quieter rather than louder to stand out. To do this I desaturated the colours to black and white after an initial white out and applied a low pass & distortion filter to the games music. Similarly for the pause screen I applied just a low pass filter to the audio.
Oh yeah also a dedicated emoji menu for easy emoji selection on the pre-game player menu screen. Hot tech.
There were little tweaks I made here and there that made huge changes to the overall gamefeel. Low risk, high reward. Sweet, sweet low hanging fruit. Gushing out their juices while my teeth sink in to their tender flesh. I digress...
In keeping with the future funk / disco aesthetic I made a small change to make the world lighting rotate to give a spinning discoball effect. A minute of coding. A world of difference.
The verticraft used to feel fairly static when they moved. They didn't have the hovering, air-surfing feel I wanted them to have. A couple of small changes fixed that. First was giving the verticraft vertical oscillation when grounded. The next change was causing them to tilt with their motion. Turning would cause strong sideways tilting while lateral movement would cause more subtle tilting. These changes really helped to visually communicate they were floating vehicles, cutting through the air.
Can't live without them. pic.twitter.com/udytP4twtC— Bob Hayden≫ (@YearOfTheBob) June 1, 2016
When all the game modes were in I could finally justify taking the time to work on the visual assets in the game. The skybox the game used was always intended to be a placeholder and after a week off development gawking at Dark Souls 3 gorgeous skyboxes (See Irithyll of the Boreal Valley) I knew I needed to do something about mine. I took couple of nights to carefully create a new skybox that was more in line with the original synth-neon look I wanted the game to have and of course without abandoning my precious palm trees. I wanted stars in the sky to give something dazzling while also acting as a canvas to better represent the game's music visualisation.
I also changed the fonts in the game. Using Lobster for headings and Raleway for the other menu text. I kept the original Jura font for the actual in-game text though. Oh yeah the Lobster font on the new title card I made too. Very happy with that. Doing the visual overhaul was great. It didn't feel like work. Design work is so relaxing. It really started to hit home while I was doing the skybox and title that while I don't have actual artistic ability I still have technical artistic understanding. This was good to know about myself as it allowed me to focus on the parts of visual design I can excel at without stressing over thing beyond the shortfalls in my artistic ability.
Times to code: Procedural terrain & music visualisation - 4 hours. A tiny status string popup - 6 hours. #gamedev— Bob Hayden≫ (@YearOfTheBob) June 6, 2016
The last "significant" feature for the game took me three 3-hour sessions to finish. I lied in my tweet because I wasn't actually finished at the 6 hour mark. Curse you, programmer optimism. Status messages. Nothing ground breaking. Just things to let you know how you're doing. Y'know. "Double kill", "Killstreak", "Goal", "Flag returned", "Gain the lead". That stuff. Simple right? Ugh. It's done now anyway.
Throughout this all there were plenty more minor changes here and there. Things added and removed in the same breath. Things re-done for optimisation which aren't the most exciting things for people to hear about. Oh yeah and bugs. So many bugs. I murdered each one without mercy as soon as it reared its ugly little head. As far as I know the game is bug free at the moment. *sigh* There will always be more bugs.
I made some choices about things that would be nice to have had but needed to be cut out to avoid scope creep. The major ones being CPU verticraft entities and online play. My reasons?
Vectonic was something I made as a game to play with friends. Next to friends on the couch. Given the fast pace to the gameplay I think that any latency online would be unforgivable. CPU players, while giving the game the potential to be single player, just wouldn't be particularly fun. The game was designed for couch multiplayer and I'm sticking to my guns on it. Who knows though? Maybe if Vectonic does well I might include these down the line for a patch 2.0. For the now though I'm focusing my effort on getting the core game made.
Shortly after my last post I attended a Playup Perth playtesting event. It was super cool to meet the folks I'd been interacting with online and a whole lot of other cool new people from the Perth game scene. Talking to other developers there was really fun and super informative.
It's real! pic.twitter.com/hIMT3K9eWD— Bob Hayden≫ (@YearOfTheBob) May 14, 2016
I'd had a house party planned for May 14th from before I'd started work on Vectonic. I unabashedly put the game on for people to play during the party. I had a lot of positive feedback and few bug reports. It was really encouraging to see people actually have fun with it though.
I said something about my physical health being better working on the game than off it. I'm not sure how true that is now though. Proper full-time work is sorta taking it out of me and I can feel the kilograms creeping on. I guess winter is settling in too so insulation is nice... We'll see how this goes...
On July 1st I'll be showing Vectonic at the next (and apparently last) Playup Perth event at SK Games. I'm really looking forward to that.
I'm hoping to publish Vectonic on Steam Greenlight within the next 3 weeks. Whether or not I make that target is down to how quickly I can create a trailer video that I'm happy with.
I'll be speaking with some of the musical artists that I'd like to feature in the game soon regarding the use of their work. I've already spoken with Desired (SoundCloud, Bandcamp) and he was keen to be involved. With his permission I published a long screenshot video with his track Never Fall In Love Again (ft. コンシャスTHOUGHTS) a while back:
I'm satisfied with Vectonic finally. Any changes from here will be results of feedback (or my random urges). The end is in sight.