I’m still alive! I can’t believe it’s been nearly a year since my last blog update. Yikes. Production on the game had to go into hibernation over the winter due to a combination of personal life factors, I just had zero time to work on it and so decided to take a break. Now that those factors have shifted a bit I’m back to work and taking a few months off has given me some fresh perspective and willingness to wade back in, rip out some old stuff that was sitting around that I wasn’t happy with and spruce things up a bit.
One small, but satisfying tweak I’ve made which you can see in this GIF is the additions of lines which visualize items begin effected by the players gravity field. Previously collectibles items would magnetize towards the player when within a certain range, but there was no real visual feedback that that was happening. Now a line is drawn to each item so that you can see that you’ve grabbed them. I also added a game design tweak which is that shooting deactivates the gravity field, so that if you grab a bunch of things and are waiting for them to magnetize to you it can create some interesting tense moments where you have to hold off firing at enemies. It also opens the door on some interesting physics gameplay where objects grabbed and then released by your gravity field can be sent flying in new directions. I’ve got a few ideas for ways to explore that further.
I’ve re-done the AI system, now on it’s third iteration. The previous configuration exhibited the enemy behavior I wanted but was getting crusted with random code and edge cases to achieve all the behavior across the different unit types. In the course of my day job at Unity I came up with a pluggable AI system based on ScriptableObjects, inspired by Richard Fine’s excellent Unite talk about them, and over this past weekend I pulled out the old C# interface based system and replaced it with this. The new system already reproduces all of the behavior of the old system and is much cleaner and much less tightly coupled in bad places. The hope, and my belief is that I will now be able to add more enemy types with different behavior and that the authoring process for them will be less painful, thereby helping my motivation to do it. When the code is stretched and creaking the thought of authoring new AI types inside it is kind of daunting and I felt it leading to me not doing it, so we’ll see how this new system works.
I’ve also hired an artist to work with me on the project. I was getting good feedback on the overall visual aesthetic and general art direction, which I am continuing with, but the lack of artistically coherent visual assets, particularly for enemies was really getting me down. I became aware of Ethan Redd’s work through Twitter, learned that he was also in New York and decided to reach out about getting him involved. He and I have started getting the ball rolling on some new enemy types, some of which you can see in the GIFs here. It’s great to have someone to collaborate with and I love Ethan’s personal aesthetic so I’m looking forward to working further together.
I’m in a weird place right now where I can see the finish line or A finish line in sight and now I feel challenged to make a lot of decisions and really question some of the things which I previously thought were ‘good enough’. Also now that it’s literally been years I’ve been working on this thing I feel more pressure to polish off any rough spots and really try to make it as good as I can. That feeling is a little scary because it feels like it could lead to the ship date getting pushed further and further into the future so at this stage I’m trying really hard to narrow in on doing things I really need to finish. I do feel that it’s getting there, and that the game is in better shape than it ever has been in many ways that really count. But what a long strange process it’s been.
I’ve done a lot of new work on the game! Going to GDC for Unity was very inspiring. I saw a lot of great projects and met a lot of great people and came back with a fresh energy to work on the game, and to make big improvements. I went to a party at GameNest, a great game focused coworking space and met Daniel Cook, one of the game designers at Spry Fox. We had a great conversation about design, prototyping and iteration and I had a few minutes to show him Monarch Black. He gave me some great critical feedback (mainly that my steering was kinda sucky) and that gave me a nice kick in the pants to come back and tear out a bunch of old work and improve things. Once I got a new steering and aiming system in I was feeling like the overall moment to moment gameplay was a little linear and stale. This lead to me doing a total overhaul on the enemy unit’s AI. I actually used a model that I taught in a live training session for Unity, which you can find here. Funnily enough I had designed and taught this system (with the help of my programmer co-worker James, who is a much better coder than me) but hadn’t integrated it into MB. In the process of trying to add some new behavior to my enemies I was running into the limitations of the terrible old code that was driving their behavior so I decided to rip it all out and re-do it using the state pattern / interface model from that training. I’m pleased to say that it works really well!
At GDC I went to the book release party for Derek Yu’s ‘Spelunky’. He read from the book and the section he read is actually one of my favorite parts of the book. He is talking about Legend of Zelda, and about how at times the game can feel indifferent to you, and how this feeling of indifference can allow the world to feel more alive, since it’s not all centered on and focused around the player. This is in contrast to the more theme park style approach of later Zelda games in which every moment feels carefully designed to guide and entertain the player.
Part of the feeling I want to create in Monarch Black is of being in these alien, sublime environments. I don’t want the player to feel like the sole, god-like entity in this environment, but instead one of many actors. Another thing which Yu mentions in his book is the idea that in roguelike games, the player and the enemies should live by the same rules and be able to interact with things in the same or similar ways. This concept really rung true for me and lead to a lot of my thinking about refactoring the AI in Monarch Black. Now, when a sphere plant explodes and the pollen grains fly out, the player and the enemies have to scramble to collect them all, and if the enemies get there first, they’ll take them from the player! This adds an amazing, dynamic moment to the game where suddenly the player has to respond to changes in the game that they may not have instigated.
Getting to this moment of the player and the enemies following similar rules and behaving required massive refactoring of the existing systems and I had to throw out a lot of old code. Happily, the new code is much cleaner and has opened up whole new sets of creative possibilities in the game that have given me a fresh burst of motivation for working on it.
I recorded a video of me playing the latest version of the game, which is full of bugs. I said I recorded the video to avoid writing a long blog post about my recent work but now apparently I’ve done both. ¯\_(ツ)_/¯
It’s been a busy month! I’ve added a bunch of new features to the game, some of which I’ve made animated gifs for (see below). I’ve got a decent workflow for making GIFs now and that’s sped up the process. Sharing GIFs on Twitter has been helpful in helping more people to know the game exists and so I’ve tried to be more consistent with that. Working a job, taking care of my kids and working nights on the game means that I have to prioritize key activities and lately that’s been development work on the game. The past week I’ve had a few days off work and so been able to really dig into development and fix and add a bunch of stuff I’ve wanted to for a while.
New Beam Weapons
The shooting in Monarch Black has always used physics based projectiles. This means that it’s not instantaneous. You shoot, an object flies from you to the enemy and hits them, or not. I like the feeling this gives to combat although I think it makes shooting a bit more difficult. Sometimes you have to lead your enemies a bit (shoot where they are going to be) if they are far away. This also allows me to do things like homing bullets, bouncing bullets and a few other fun features that I really like. But I’ve been curious what the game would feel like with raycast based weapons. Raycast shooting means that you click and an invisible ray is fired from your gun into the scene, it checks if it’s hit anything and if that thing is an enemy it applies damage. The feeling this gives is that shooting is instantaneous. You click and the enemy takes damage right away. As of now, I’ve added a new category of weapons, beam weapons, to allow for ray cast based shooting in addition to the existing physics based system.
Here are two GIFs of one of the beam weapons, the Arc Lightning weapon. What makes it unique is that it bounces off things that it hits and can ricochet and hit other things.
I’ve also been working on adding more mutations to the game, powerups which you can choose from between levels. A few of these include:
Death Rockets: these give a chance to spawn a volley of rockets in random directions when you kill an enemy, here’s a GIF.
Blood Lust: This gives a chance to create a shell of spikes around you when killing an enemy which damage nearby enemies. In this case it’s combo-ing with Death Rockets and going a little crazy. Not sure if you’ll be able to combine these in the final.
Thanks to some feedback I got at the NYU Game Center play tests on Thursday nights I decided to try implementing a system to show you where nearby enemies are that you can’t see. I’m pretty happy with how it came out. It makes the game a little more video game-y but I think it looks nice and allows me to make the game more challenging without feeling unfair. The action games I love most are hard and I’d like to get there with MB. This helps so I think it’s here to stay. In the GIF below you can see the red triangle icons appear when an enemy is in range and point towards their location, growing brighter as the enemy gets closer.
That’s it for now! My next goals are to keep working on the game, do a few more dev streams on Twitch which have been pretty fun so far and to try to post more regular updates.
I made a trailer! After much procrastinating I finally got to the point where the game looked mostly the way I wanted it to and so I captured some footage and cut it together. The music track is for the last stage in the game, a new piece I wrote over the summer. Also, I’m trying out the title Monarch Black to replace Pollen. There’s another game called Pollen (which looks great) and I don’t want people to get confused. I’m gonna roll Monarch Black around for a while and see how it sits with me.
I took some time off from programming and designing on Pollen and focused on the music a bit. I’ve got three new tracks done for the new desert level, a new track for drowned city and a track for the last level. I feel like I’m getting closer on the vibe of the music that I want and things are sounding pretty good.
Before showing it last time at Playcrafting I spent some time doing color correction and image processing on each level and I think the look is getting a lot closer to where I want it to be. I got a few nice color and image post effects from the Unity asset store and that’s helped things quite a bit. I highly recommend the Colorful and Chromatica packages from Thomas Hourdel. I also got a very nice bloom called Ultimate Bloom by Paroxe which is really making the lasers pop and helping the look overall. So far this is probably my favorite Unity bloom effect I’ve used.
I’m showing again this weekend at the Bushwick Film Festival in Brooklyn so I’m doing a push this week to get everything updated and ready. I’m also getting closer to figuring out a launch plan. I think I’m going to go through Steam Greenlight. We’ll see how that goes.
After showing last month at Playcrafting NYC I got some really good feedback and so have been working hard to implement it and get the game in a state where I can send it to people to play. I just finished sending out the first batch of emails with links to a build of the game and hopefully will get some good feedback back from those (or any feedback!)
The stuff I’ve been working on has been fairly nitty gritty and not super exciting, stuff like Xbox 360 controller support, a pause menu and tweaking the difficulty curve. It’s sobering to realize how much work goes into creating what we often thing of as a basic, working piece of games software and how little we think about stuff like pause menus, sound options, etc. There is a lot of work in making a video game beyond making fun game play.
I’m also starting to try to nail down a release plan, something I’ve been toying with but not really committed to. At the moment the basic plan is to try to gather some feedback through a closed beta and then put it up on itch.io to do an ‘early access’ style open beta and get some feedback from players in the wild. One thing I set up was some simple analytics using the Unity Analytics beta to report back basic game statistics. It’ll be interesting to see how that works and if the variables I’m tracking are useful. The ones I’ve got in there so far are:
hitpoints at start of level
hitpoints at end of level
time to complete level
mutagen resources collected
My hope in doing this is that if people check out the build and don’t give feedback I’ll at least be able to gather some data. I saw a cool talk from the guys working on SubNautica (which I haven’t played yet but is on my Steam wishlist) about getting players to report how much they’re enjoying things, send screenshots and give other notes about the game. You can watch that here:
Moving into this stage of the game’s life where it’s getting closer to being finished and needs to start entering into the world is pretty terrifying. I’m feeling a lot of psychological internal resistance (aka fear) at each step. At these kind of moments I wish I had a partner or collaborator to talk through this stuff with and to help keep spirits up. Working on your own it’s easy to feel insecure about what you’ve made. My girlfriend has been pretty helpful in pushing me forward and boosting my confidence. That combined with the fact that I really need to try to monetize this project after putting almost two years into it! Regardless, I’m happy I haven’t given up and am taking myself through all of these different parts of the game making process.
If you’d like to get on the closed beta list, please send me an email! I’m mirrorfishmedia AT gmail DOT com.
I did my first public play test event. This was at Playcrafting here in NYC, at the Microsoft offices. Boy I’ll tell you: play testing is hard, hard, hard. I felt nervous, sweaty and constantly wanted to tell people: “No, you’re playing it wrong!” I wanted to grab the controls from their hands. I also had some pretty serious impostor syndrome, feeling like I didn’t belong there amongst the more finished, more polished games and people with their posters and well organized booths and general having-of-their-shit together. But the event was great. I got some very thoughtful, nice feedback from some of the attendees, many compliments on the visual style of the game (which is a bit surprising since I don’t identify as an ‘artist’ but there you go) along with a good amount of constructive criticism.
The main negative feedback was about the controls. They are hard to use it turns out. That was tough to hear, but also valuable. A few people seemed to get it and after a few minutes of playing got the hang of flying around. Still, I realize that there is some fairly significant work to be done. Getting out and showing the game to people felt really good though, and the deadline was very helpful in getting me to focus and do a bunch of stuff I’d been putting off, some of which was fairly major (like fixing the long broken game over screen). All in all I was very happy with the whole experience and would strongly recommend it to anyone considering it. I also wish I had started getting out and showing it earlier and will chalk that up to a lesson learned. Here are some pictures! I’m the tall guy in the black and white sweater. The last pic is of me and Simon the artist from Mushroom 11 which I got to play and was very impressed with, a super innovative mechanic and generally very interesting (and great looking) game.
Made some good progress on the game this week including showing it to a few people at the Studio Time meetup here in NYC. Some of the notes I got there from other devs helped me to turn a bit of a corner design wise, the main one being to change the way the enemies are concentrated in the levels and have fewer, more dangerous clusters. This has solved a bunch of the problems I had earlier. The moral of the story: show people your game in person and listen! I’ve also signed up for a local demo night event where I’ll be able to get some players to play the game, more about that when it’s announced. The reasons for this are two fold: first to get me to finish a build that’s reasonably tight and playable and second to get feedback. I’m pretty excited about it.
I’ve also added three new weapons in the game for the player to get: big non-homing missiles that can explode the sky coral bricks (producing a very satisfying shower of flying debris), clusters of smaller short range rockets and falling mines that the player can drop on groups of enemies. All came together quite quickly last night which was fun and satisfying. Working on mechanics is so much more fun than trying to optimize frame rate or any of the other non-design ‘making working software’ aspects of development.
Here are some pictures of the new Twilight Ruins level:
Work on Pollen continues as we wait for spring here in NYC. I’ve added a few new level designs and a bunch of tweaks to the mechanics. It’s getting closer! I’m looking to schedule some time to show it at a playtest event here in NYC which will give me a nice deadline to shoot for. I made some new music bits as well which I’ll put up on Soundcloud too. Some people have suggested I do another video, I’m thinking about trying to make something trailer-ish. More on that as it comes. For now, some pictures:
Here’s another level environment with a different feel. I’ve been experimenting with randomly placing large low poly objects to give the levels more visual interest. In this case it’s this funky looking cube tree. Like in the Blue Sky City level I’d like to go a little deeper with procedural generation and give these some more variation at runtime but for now they’re just randomly placed and scaled. I think it actually works pretty well. I also added some square snow particles for you to fly around in.