I added new models and animations for the spiders and the bats.
I did a lot of work on the initial dialogue with “The Professor”. There’s a circle wipe at the very beginning, the camera zooms in, there’s a watch on the player with a little hologram that pops up, the UI with the text in it is a new model, there’s a hologram effect on the animation in the UI, and if you look real close you’ll see that The Professor’s animation is synced between the UI and the model on the player.
I reused that circle wipe when you enter the dungeon…
…and when you use a ladder. Which you do more now because the dungeon is three levels deep instead of two.
I added keys that open special rooms where you can buy stuff.
You need a golden key to unlock the boss room.
And finally, I added a sweet zoom animation to the camera when you die.
I have a new draft of the drawing of “The Professor”. I got the feedback at GE2 that he looked too much like a certain professor from another game, so I’m trying to make him a little more different. Might still be some work to do there.
The dungeon is now two levels deep! On the first floor, where the boss would have been, there’s a ladder that leads to the second level. On the second level there’s still a boss.
I added a new UI menu to show a detailed comparison between the weapon you’re currently holding and the weapon you’re thinking of picking up. It’s based on a clipboard in order to have some thematic consistency with the “delivery service” idea. I added flavor text for all the weapons and shields.
I also used the clipboard for the pause menu, which shows your current player stats. The HUD slides on and off the screen when these menus pop up instead of just disappearing.
One last thing, I added a HUD icon for “unarmed” to show that even if you don’t have a weapon you can still press X to attack:
Overall I’m pretty happy with the work I did this week. I’ve got plenty on my to-do list but there’s some stuff on there that I’m pretty excited about. Stay tuned!
I’m working on a new minimap to replace the old radar-style minimap. It shows which rooms you’ve explored and where there are hallways that you haven’t explored yet. I don’t think the old minimap was actually that helpful for navigating around the dungeon. People would often get lost once they had cleared out most of the rooms. Hopefully something like this will help people keep track of where they want to go next.
I don’t have a replacement minimap for the overworld. For now I’ll just leave it without one and see if people can still figure out that they’re supposed to go to the dungeon even without the blinking navpoint on it. Eventually I could create a similar grid-based map for the overworld but it’s a lot more linear than the dungeons so maybe it won’t need it.
I finally got around to putting world generation in a background thread so I can use the main thread to show a loading progress bar. This was a little tricky since you can only interact with Unity on the main thread, so for things like combining meshes or spawning objects I added a main thread task queue, which will execute tasks for up to about 30 milliseconds each tick. That queue is pumped during a regular Unity Update call, so in order to get those tasks to run as quickly as possible I disabled VSync while the level is loading.
I haven’t found a good way to profile the background threads—Unity’s profiler only looks at the main thread and VS can’t profile Unity’s instance of Mono. I already have to monitor world generation progress in order to report back to the main thread so it can increment the progress bar, and I get some timing reporting out of that, but nothing granular. So optimizing this has been guess and check, trial and error. Like, comment out a line and see how much faster that makes it, to measure that line’s impact.
I’m definitely getting some ideas here about how I would structure an engine if I wrote one from scratch, in order to make procedural world generation faster. The main thing I think would be to have object types that are specialized instead of general purpose, so that it’s not super expensive to create an object. Making engine types threadsafe, or at least lockable, would be a huge win too.
I’ve had a heck of a couple of weeks. I started a new job, which means that Adventure Delivery Service is going to start moving a little slower. But I’m really happy with the foundation I built over the last ~7 months and I’ll continue to work hard on it on nights and weekends.
To that end, last weekend I showed the game at the Portland Retro Gaming Expo at the PIGSquad booth, which was a ton of fun! Thanks a ton to PIGSquad for giving me the opportunity to do that. Then on Monday I brought the game to Game Dev Demo Night @ The Mercury in Seattle, thanks a bunch to Hashbang Games and Puget Systems for making that happen! I learned a lot about what work the game needs from watching a bunch of people play through it and talking to people about what they thought. Overall I’m encouraged that people treated it like a real game, which I think means I’ve crossed a threshold where it’s got just enough polish so that once I add some more content at least people will give it a good shot before deciding if they like it or not.
There’s plenty of work left to do. At this point I’m aiming for some kind of release in 2017.
Added pine trees.
Added animated image of Doctor Orange.
New punching animation.
New sword attack animation.
New injury animation.
New death animation.
New coin model.
New wand model.
New treasure chest model.
Using new fonts.
HUD messages can stack on top of each other and fade out after a couple seconds.
Replaced almost all UI bitmaps with 3D models.
Added support for multiple screen resolutions.
Added curve to attack lunge speed.
Increase enemy count in dungeons.
The game ends after finishing the first level.
Weapon elemental particle effects use custom meshes instead of quads.
Added UI in the HUD to show certain controls.
Skeleton boss will block your attacks even when it’s attacking.
Removed free-aiming turrets while I work on their behavior.