top of page

Scallywags Postmortem

Writer's picture: Jonathon SherwoodJonathon Sherwood

Overview

Scallywags was a side project that I began so I could work on a few programming concepts I'd never touched before. One of the issues with my first releasable game is that it is coming from place of ignorance. There are plenty of things I'd like to do, but without knowing how, I chose to stick with what I know for a polished product and spend my time on Scallywags for future understanding.

I'm actually very pleased with how everything turned out considering it was a learning project. Given that this was an experiment for learning, I was willing to put in whatever sounded fun like fog and particle effects. The overall result is a fairly clean looking game, with rudimentary AI, saving, multiplayer, and more. Frankly, this is some of the first work I've even done on 3D, yet it all went a lot more smoothly than I anticipated.


My Role

I like adding this section because I want to clarify the hard work that went into it by anyone else. While nobody else was literally working on Scallywags itself, the audio and visuals all came from open sources. Instead, I focused on the design and the programming. Everything from powerups and visuals to AI personalities and menus.


What Went Right


Learning

Honestly, it's hard to come up with only a handful of things that went right, but one of the biggest things I'm proud of is how well the new concepts worked out like saving, multiplayer, AI, and radar. Before this project, these would have terrified me! I didn't even grasp how to start, let alone implement them. The nice thing I'm learning about coding is that everything is a lot less complicated than it sounds. They worked so well because it was all skills I already knew just used in a different way. This is great for bridging my understanding of smaller concepts into grandiose ones that I've always wanted to implement into a game.



Powerups

The powerup system wasn't especially complicated to pick up, but it was nice to see how you can make them a lot cleaner than some of my previous projects. With this new system, I was even able to make a "negative" powerup, by applying the same logic that adds benefits on pickup to adding negative effects on touch instead. This was then put on the chain shot which was designed to give the player hit by the projectile "powerup" a loss of speed instead.



Strengthening Skills

A few programming concepts like foreach and lists I already knew but was fairly timid to use them. The nice thing about cranking out dozens of small projects for practice is that I don't just use one shaky programming concept once and then hope to avoid it forever, but instead spend the time to use them again and again in multiple projects. I think by the end of Scallywags, I can officially say that many of these have become permanent parts of my toolbox that I will be using much more often in the future.



What Went Wrong


The Ships

I chose to go with ships pretty early on into the project because I thought that would be a fun theme. The trouble is that the models I found were all extraordinarily large, and I hadn't realized when placing them into an empty world. With each new little issue that came up, I finally realized too late that everything needed to be scaled way too high to compensate. Likewise, the narrow angle of ships is incredibly hard to score a good shot from the front, and I hadn't programmed the game to have shots come from the side. I was able to salvage a bit by increasing cannon size and their hitbox radius but I definitely know to watch out for that in the future.



New Concepts

As said in what went right, some of that was also what went wrong. I really do believe that in order to have a concrete understanding of something you need to do it much more often than once so you can learn subtle nuances rather than how it worked this one time. A lot of the code feels a little spaghetti, like I figured out how to make it work but not why it worked. This led to a few functions not working properly, or working in very roundabout ways. Moving forward I'll just be sure to keep implementing them as often as possible so that I can absolutely nail their execution.



Stiff AI

Given that this was my first attempt at AI, I wasn't really looking to come up with earth-shattering logic trees that made them truly feel alive, but it was still a little disappointing to see how dry the game looks fighting even the "complex" red ship. I love how well they interact with the world and the player with obstacle avoidance, patrolling, searching, and chasing, but once the fight actually begins, I only really know how to make them sit perfectly still and shoot at the player. I may have been able to come up with something more clever if I had more time, but as it stands they really don't do much, and almost look like they aren't doing anything at all if your cannons line up too perfectly. But, it was a good first step into AI design. Now that I get how, I'll be able to do better at what.



Lessons Learned


What Wasn't?

Honestly, this whole thing was lessons learned. Almost nothing put into this game was something I've ever even touched before, so this entire project was nothing but lessons learned. The main lesson to be learned, then, is that there are so many lessons to learn. Scallywags did a great job of showing me what I did and didn't know, how to learn them, and what more can be learned. Moving forward, I think I'm going to make sure to keep incorporating old concepts like saving to reinforce them, but make sure that I add new ones that I'm nervous about. You can only learn if you try!



Time Management

It was the darndest thing. When I prioritized other work until the last minute, I had a lot of work to do on Scallywags! Who would have seen that coming? Halfway through the project I finally decided to start taking smaller bites and putting much more attention into each detail. It's a little frustrating because I always hate to stop working on something if it isn't finished, even if I have time, but it was much better for my own mental state and the quality of the game. From now on, I'm going to fight a lot harder to split up projects into smaller pieces that I work on consistently rather than cramming a full milestone into one weekend night.



Ask For Help

One of my favorite quotes is "programming is easy, if it's ever hard then you just need to get past the single roadblock." Or something like that. Point being, I really have noticed that days of lost time was usually due to one single issue I couldn't solve no matter how much I beat my head into it. The more I beat my head into it, the more I start using spaghetti code to do everything in my power to get around actually solving the problem. During Scallywags I was having one of those issues, and nothing I did could solve it. One quick question to someone more knowledgeable than me pointed out a subtle error I never would have caught, and I was immediately back to work. It's absolutely imperative that I get more comfortable asking for help in the future, as it will save both time and quality.


Overall

The best part about this project really was just getting the chance to play with so many different tools. It was so much fun getting to see these out of reach concepts that I really wanted to learn and making them come to life. I think I did a little jump when I saw the saving work for the first time. Once I got the first few attempts to work, I was able to keep plugging along and figuring it out better and better. I will always be incredibly thankful for all the resources online that offer guides and tips to overcome obstacles, and look forward to using them for future projects!



7 views0 comments

Recent Posts

See All

Comments


©2020 by Jonathon Sherwood

bottom of page