Showing the Game

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.

Public Alpha!

I released a public alpha! Check it out and let me know what you think so I can keep making it better!

https://dagambagames.itch.io/adventure-delivery-service

What’s new since the last video:

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.
Added soundtrack.
Increase enemy count in dungeons.
The game ends after finishing the first level.
Weapon elemental particle effects use custom meshes instead of quads.
Performance improvements.
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.

Music!

I finally added some music to the game! Only two tracks and a couple of fanfares but I think it really helps make the game feel more like a real game.

Like everything in the game, this is a work in progress, subject to change, etc.

New Attack Animation

This has two animations that it toggles between, one for swinging from the right and one from the left.

Hit detection on enemies is physics-based, so since this new animation has a wider stroke you should have an easier time hitting enemies.

I added a little bit of easing to the lunge so you move faster at the beginning of the attack and slower toward the end of it.

sword-animation

Gameplay Video #4

It’s been a month since my last video. This time instead of just uploading a big unedited playthrough I recorded a bunch of footage and then cut together some of the highlights.

Changes since the last video:

  • Internal changes that let me iterate on content faster.
  • Doors look nicer.
  • Pausing gives you the player’s upgrades and the controls, instead of showing you the world map.
  • Weapon effects are bound to weapon items instead of being their own item category.
  • Added invincible mode (Right Shift + I).
  • Adjust distributions of enemies and loot drops.
  • Removed the part at the end of the level where you have to deliver the package to the building. Now collecting the package triggers the end of the level.
  • Added dialogue from Doctor Orange to the beginning of each level.
  • Added victory screen after beating four levels.
  • Levels get progressively larger.
  • Added magic effect that slows down enemies.
  • Added reticle icon for the mouse.
  • Improved automatic switching between controller mode and mouse / keyboard mode.
  • Performance improvements.
  • Added auto-targeting when attacking.
  • Bosses drop an extra heart on death.
  • Removed NPCs from stores.
  • Added text comparing the weapon you’re about to pick up to the weapon you’re currently holding.
  • Added destruction effect to cannonball projectile.
  • New, bigger dungeon rooms.
  • Added watermelon.
  • Better display names for items.
  • Bug fixes.
  • Added pine trees.
  • Added new title screen logo.
  • Added punching animation instead of reusing the weapon-attack animation.

Gameplay Video #3

Here’s some gameplay I recorded last weekend. This represents almost two months of work since the last video. Some of the highlights:

  • Lots of new art. Room interiors, cars, fire hydrants, road blockers, item pickups, bombs, and more!
  • New weapons: bow and arrow, baseball bat, frying pan, stick, hockey stick, etc.
  • New enemies: Turrets, robots, drones.
  • Simplified inventory system.
  • Simplified controls.
  • The city is much more maze-like, with a golden path to follow right to the end and side paths that have treasures hidden in them.
  • You can buy stuff from stores.
  • Added bosses (just bigger versions of other enemies for now).
  • Rolling into pots makes them break.
  • Added batteries to power secondary weapons (wand and bow and arrow).
  • Added labels on the ground to help you figure out where to go.

Bow and Arrow

This is something I’ve been meaning to get around to for a long time.

Bow 2

This is the first weapon that attaches to the left hand instead of the right hand. The shield also attaches to the left hand—hopefully I’ll be able to get it looking okay when you’re holding both the shield and the bow.

This is also the first weapon that I made a custom animation for. The wand, sword, punching, and all the other held weapons use the same animation.

This is still a little rough. In particular the string on the bow doesn’t animate, and also intersects the player geometry. But when you’re playing I think you might just not notice that.

On Sticking With It

I’m back to working on Adventure Delivery Service after working on a different project for a couple of weeks. Here are some of my thoughts as I’ve struggled to figure out whether to continue working on the project.

One of the great things about doing solo dev is that you’re not stuck to any particular plan or schedule. I can wake up in the morning and work on what I feel like working on. If I want to prototype some new mechanic, or model a new enemy, or make a new sound effect, I can do that without having to run it by a producer or triage it against a task list. That sense of adventure, possibility, and productivity is one of the reasons I decided to do a solo dev project.

For the past couple of weeks I felt pretty strongly that ADS wasn’t what I wanted to be working on, so I put together a prototype of another game that had been floating in my head for a while, which was a MOBA-style capture the flag game in the browser. I learned a lot about WebSockets, TypeScript, and NGINX, and I’m pretty proud that I was able build a playable multiplayer game and deploy it to the web.

In the meantime I had a chance to reflect on ADS, and my mental and emotional relationship to the project. And I decided that while taking a break for a couple of weeks was a perfectly healthy way to clear my head and gain some perspective, the best thing for me to do now is stick with ADS, even though the honeymoon phase is over.

Over the course of developing ADS so far, the direction and scope of the project has changed a lot. It was originally going to be a multiplayer, open-world, procedural, open-ended ARPG. Now it’s a single player, much more linear, roguelite procedural death labyrinth. I’ve ended up prototyping and then cutting more features than I’ve kept. I’ve spent a lot of time dealing with leftover complexity from features that aren’t important anymore, and refactoring code after underlying assumptions about the direction of the game changed.

So progress has been slower than I hoped it would be. My expectation for how much longer this thing will take to finish has been growing and growing.

One of the things you hear over and over about game development is that success stories are almost always preceded by many failed attempts. I only have so much runway, and I had been planning to make several attempts at success before my runway ran out, so that I could learn from failure and then do better. When I realized that this was going to take a lot longer than I thought, I started seriously thinking about starting a new, smaller-scoped project instead.

I have a philosophical belief that indie games should cut corners wherever possible in order to focus on the core differentiating aspects of the game. The advantage an indie studio has over a better-funded team is that it’s able to take risks other projects aren’t willing to. In order to succeed, you don’t want to compete on traditional metrics of quality like graphics. Instead, you want to give the player an experience they’ve never had before.

At the same time, I have a practical, cynical belief that traditional polish on things like graphics is what sells games—even a savvy indie customer will form an immutable opinion of a game based on the first few seconds of gameplay that they see.

On ADS, I found myself not living up to my indie philosophy. The gameplay was shaping up to be a lot like existing roguelites. A lot of the reason my projected timeline was expanding was because I was spending time on traditional presentational polish. Was I failing to adhere to my motivation for making an indie game in the first place? What if I quit ADS and instead made a game that was intentionally super lo-fi—I would be able to cut a lot more corners, avoid a lot of this extra work, and ship a finished product way faster.

There’s no easy answer to this question of balance between core gameplay innovation and presentational polish, given limited time and budget. Getting people to notice your game is impossibly difficult. The internet is full of people working on indie projects, and a person only has enough attention for a couple of them. To be honest, if I were someone else and saw my game right now I probably wouldn’t be that interested in it.

It’s incredible the weight a single piece of feedback can have on your opinion of the game. A suggestion about aesthetic direction can result in a total change of course. A piece of negative feedback can make you question entire mechanics and systems. Even positive feedback can make you wonder if the person just didn’t see enough potential in your game to give you real criticism. And a single tweet that doesn’t get any likes can make you wonder if anyone will ever care about your project.

I found myself comparing my project to whatever indie games were getting the most press or retweets on a particular day. Comparing your own partly-finished thing to someone else’s finished, polished thing is a great way to convince yourself that you’re on the wrong track.

In order to make the game worth playing, you need to be open to critical feedback. In fact, the more critical the feedback the more useful it is. You need to be open to criticism without becoming defensive in order to understand the project’s flaws and figure out how to fix them, while also maintaining a healthy distance from the criticism so that it doesn’t impact your morale. You have to understand that you are not your project; your project’s flaws aren’t your flaws.

All these factors together—the realization that this first project was going to take too much runway, feeling like this project was too conventional and would never be really notable, that the best course of action might be to abandon ADS and work on something else, meaning months of work would have been a waste—became too stressful for me. At the worst I was having minor panic attacks and nights of no sleep.

So I think it was good that I took a couple weeks off of ADS to work on something else. In retrospect, maybe that was my way of transitioning from the early, eager stages of the development cycle into the mundane grind of finishing a thing.

I’m incredibly grateful to my friends and acquaintances who have taken the time to show interest in ADS, played early builds and given me feedback, and shared their own experiences making games. Many have gone through a similar experience of becoming disillusioned with their project partway through. It’s an open question whether the lost excitement from the sheen of a brand new project ever gets replaced with confident satisfaction that you’ve done a good job. It may be that once you feel underwater you’re just going to be swimming until the thing is done.

The sources of comfort I have now are:

  • The trough of despair is normal. It doesn’t mean I’m doing anything wrong, or that I should stop working on the project.
  • Every day I work on the project it gets a little better. If I keep making it a little better every day, after a lot of days it will be a lot better.
  • I may never have a better shot at finishing an indie game. Whether or not this thing ends up being a “good” game, it will be a reflection of my work at this time and place, and as such it will have value.

This has been a learning experience, but not in the ways I thought it was going to be. I guess, what’s the point of a learning experience if it only teaches you what you thought it would?

New Project

About two weeks ago, I put Adventure Delivery Service on hold and started work on a new project. I’m very proud of the work I’ve done on ADS and I’m not thinking of it as cancelled right now, but for a variety of reasons I decided it was better to work on other things for a little bit.

The new project is called (tentatively) Team Flag, and it’s live at http://teamflag.io. In a nutshell, it’s something like Fat Princess in the browser—a multiplayer capture the flag MOBA with simple gameplay that’s easy to drop in and play.

It’s using Fleck for WebSockets, Nancy for web logic, Linode for hosting, BEPU for collision detection, with TypeScript and Phaser.js on the client side.