00:00
00:00
BobbyBurt
No more bananas. This ape only wants powerade.

Aaron Burt @BobbyBurt

Age 23, Male

Game/Graphic Design

Close enough to Toronto

Joined on 3/20/19

Level:
16
Exp Points:
2,723 / 2,840
Exp Rank:
20,934
Vote Power:
5.82 votes
Art Scouts
2
Rank:
Town Watch
Global Rank:
64,523
Blams:
25
Saves:
89
B/P Bonus:
2%
Whistle:
Normal
Trophies:
3
Medals:
451
Supporter:
4y 5m 28d

BobbyBurt's News

Posted by BobbyBurt - 5 days ago


New Tapper game alert! Check it out!

This is a pack of challenging levels designed by the community. We also included some unique unlockable characters and a bunch of new music.


Also, the original game has been updated with some of the quality-of-life features and fixes to match the map pack.

For returning players, it's important to know that on desktop the uppercut action has been changed to a separate button. Check out the control guide menu.


What I'm excited about is that special characters unlocked in the map pack are also playable in the original game. PPP externally accesses the save data of the map pack to see if you've unlocked them. This sorta advanced Newgrounds.io usage has exciting potential I want to keep pushing.


I don't have much to reflect on with this project because I was hands-off with the design and collab organizing. I was busy with implementing content, new features and fixes. I'll say this though: I highly recommend all you programmers do yourselves a favour and learn the basics of software architecture. Messy, poorly thought out code is a nightmare to change later on. This map pack took a surprisingly long time to make, but it could've taken half the time if the original game's code wasn't all hastily put together prototype code. Oh well, just shows how much I've learned since then. Onward and upward!


Tags:

7

Posted by BobbyBurt - December 1st, 2023


I worked on a new game! You played it yet?



I like to release retrospective blogs with each project, going into the challenges and what I learnt. Despite the simplicity of the game, it’s the biggest project I’ve worked on and took me hundreds of hours to develop.


The overall challenge for half of development was finding the fun for myself. For a long time the game was in a bad state, but I was convinced that there was something worthwhile buried somewhere here. Once I had something I found fun, the second challenge was making it fun for others. A lot of issues got in the way of playtesters’ enjoyment, some of them barely getting past the tutorial.


In this retrospective blog I'll go in-depth on my design process and how I tackled these challenges.


Concept

Two summers ago, ProscuittoMan reached out to me to ask about programming this game that they had visuals, music and a vague game concept for. I was in the middle of making Little Fellas at the time, but was excited to work with Proscuitto and Dry once I was available.


iu_1123746_7358011.png

Initial mock-up by ProscuittoMan


This was the first time I worked on a project which I didn’t come up with the initial concept for. I had the interesting challenge of taking premade art, music and ideas, and trying to make a cohesive game design out of it. You'd be surprised how many assets are being seamlessly used in other ways than they were intended in order to solve a design problem.


Super Meat Boy Forever kept being mentioned as the main inspiration for the game concept. An interesting choice, basing the concept on a game with a mixed reception. BUT I think SMBF is a unique game that’s designed very well and unfairly judged in comparison to it’s predecessor. While the game served as a reference, ours would still be unique.


Movement

iu_1123752_7358011.gif


Without many games like this which exist somewhere between auto-run and traditional platformer, I didn’t have much of a blueprint. There were questions that’d be obvious in most other games, like what happens when the player is against a wall? The first prototype had them bounce off it similarly to Nitrome’s Super Leap Day. In this case it was an annoying proposition of controlling an unstoppable object. Instead having Tappy stop against walls gives the player the chance to wait and have some timing control.


The game concept pitch had 5 moves for Tappy. On top of the forward punch, uppercut and dive, there was another that got cut: the ability to drop an exploding egg like the white angry bird. It’s indirectness made it the odd one out, where the impact would often be offscreen. The dive already covered Tappy’s downward attack, so it was redundant anyways.


iu_1123749_7358011.gif


Level Design

The initial pitch to me was that levels would be procedurally generated. I couldn’t imagine how that would work, and didn’t have the technical experience to pull it off. I did have a ton of experience in platformer level editing. The challenge was breaking out of my preconceptions and figuring out what was right for this unique game.


iu_1123747_7358011.png

Initial mock-up by ProscuittoMan


The original concept was more arena-combat centred than a traditional platformer. Levels were non-linear and were completed by defeating all enemies. It wasn’t playtesting well for a few reasons. For one, I’d design a challenge meant to be approached from one direction, but it’d have to be accessible from the other. It was impossible to tightly design challenges that could be approached from multiple directions. Arena playfields work is the player has full movement control, but this game’s autorun mechanics were suited to linear levels.


The other problem was that playtester frustration; Just one enemy that’s tough to take out would be a roadblock. I addressed this by making enemies obstacles that could simply be avoided. The goal switched to being an point at the end of a linear path. This lowered the skill floor, while motivated players could go for each enemy. This was the first big design change that led to a more enjoyable game.


iu_1124116_7358011.webp


Playtesting encouraged this progression towards tight, specific level design. There were a lot of points of frustration, like getting caught on small parts of geometry, long horizontal stretches where the player can’t turn direction, etc. In a game where player control was limited, it seemed to me that the burden was on level design to create a smooth, satisfying experience and guard against these frustrating situations players could be stuck in. That required a lot of iterative work, so perfecting the level design took up half of my time developing this game.


Tutorial

The tutorial went through more revisions than anything else. Each iteration made the levels easier, creating a more gradual difficulty curve. Playtesting also revealed that players have a stubbornness to use the moves they already knew while I was trying to teach them another one. Some playtesters even managed to get through the tutorial without learning the dive or the uppercut, and struggling with the rest of the game without them. I kept having to return to the drawing board until the levels forced the player to use the new moves.


Getting the player to dive was the biggest challenge, as players stubbornly defaulted to punching if possible. I couldn’t design many scenarios where diving was the only possible solution.


iu_1123753_7358011.gif


The only solution that worked was to make an enemy variant that used shields to protect them from punches. Shields became a visual cue to the player that diving is required.


Structure

In the gif above you can see a post-level screen that shows your performance before entering the next level. I originally intended this game to be an arcade score-chaser game with a linear level progression. While ProsciuttoMan had Super Meat Boy Forever as the reference for the core gameplay, I had Super Monkey Ball's arcade mode in my mind for the structure. This is an example of just taking a design idea and thinking it'll work in another context. An arcade structure with overarching score, timers, lives and game-overs wasn't a good fit for a platformer in which the player dies and retries a lot. As soon as I strung the levels together with a overarching score and ranking system, it clearly wasn’t engaging for me or playtesters.


This arcade structure was countering the direction that the game was naturally going. I had made each level a platforming challenge and puzzle that rewarded experimenting and replaying until mastering it. Once I came up with a tertiary gameplay loop that actually encouraged that, the game finally clicked. Putting the post-level score summary into the level select screen was my excuse to boot players back to it after each level. There I could show the score awards for all levels, motivating them to perfect each level. I also decided on an unlock structure that allowed playing non-linearly if you're stuck on a level, and encouraged replaying levels.


Technical

This is my second game programmed in Javascript and powered by the Phaser 3 framework. My first one, Little Fellas, was a spaghetti-style mess of code mostly in one class. Since then I've learnt the basics of software architecture and picked up Typescript. This project's code is pretty messy, but it's a step in the right direction for me!


iu_1123750_7358011.gif


One specific thing I'm proud of is the Newgrounds medal unlock popups. Awhile back I did mock design and animation for a NG medal unlock popup which modernized it and added colour-coding for difficulty / points. I'm pretty happy with the technical implementation. MedalScene an overlapping scene that wakes itself when a global unlock event is emitted, and sleeps when the popup sequence queue is empty. The code is mostly independent, so it’s easy to add to other projects. Adding new medals is just a matter of importing the .json medal data export from the NG medal settings page.


Visuals & Audio

This retrospective has focused on my work on the game, but of course this game wouldn't exist without the team! All the pixel art and animation you're seeing comes from ProsciuttoMan, who's got a distinct cartoony style with a bunch of personality.


With the tileset he had given me, I wanted to use subtle visual cues to help guide the player. Steel tiles stand out by being darker than the others, so I use it to draw the player’s attention to surfaces that they’ll want to wall jump from. BG tiles are also used to make a subtle outline of the intended path or draw attention to areas of interest or danger. For a lot of development I was being a control freak about how the levels looked and overthinking a bunch more visual motifs. Thankfully I eventually handed level decor over to ProsciuttoMan who made them look way better.


Credit goes to Dry for most of the music. The jamiroquai inspired stuff he added late into development were amazing to hear after months of listening to temp music over and over. Knocked it out of the park.


Interview

Speaking of the team, we got interviewed by Bobo and Mata Nui! Check it out here:


https://youtu.be/OKIokah7Xb4?si=JO1mQOdZHSOFKJmN


Tags:

12

Posted by BobbyBurt - August 2nd, 2023


Last Saturday was the NG cartoon screening in Toronto! It was great to see friends from last year and meet new ones. Some pretty great people in this community.


iu_1040590_7358011.webp

iu_1040589_7358011.webp


Big thanks to @NinjaMuffin99 for organizing the event. He did a great job curating the movies shown, and it was an unreal experience seeing some new stuff, old favourites and shitposts at this venue. My one wish was to see a xXsquidwardXx video on the big screen, and damn did Cam deliver. Can't describe how happy I was.


iu_1040587_7358011.webp


Shout out to @spicycoffee, @BrandyBuizel, @Crashtroid and @ConnorGrail for the dope new stickers.


Anyways! As long as I’m here, a bit about gamedev:


Past

Did you play Little Fellas?



This project from almost a year ago was my first game jam entry. A NG mobile game jam was something I HAD to be a part of. It was my first time really collaborating with others, and I got the opportunity to work with four artists and three sound guys. I had a great time working with them, but it was a lot to manage! Coordinating them and managing their visual / audio assets on top of doing all the programming / design was a handful. It was also my first time making a game in Javascript and the Phaser 3 framework. Lots of firsts at once... I feel like I let the team down, resulting in an entry with flawed and rushed game design. But I'm so jazzed about how the game looks and sounds. Very proud of the main team, MrPakoMan, OrkOrk, RedAndrew and 0chin, as well as the sound contributors, Cryptospore, Dry and PKToasty. I miss working with you!


Future

For awhile now I've been working hard on an unique platformer action game concepted & visualized by ProsciuttoMan and composed by Dry. I'm hoping to get it out soon, but my time estimates are always a joke so we'll see.


iu_1040588_7358011.png


Keep an eye out.


Tags:

11

Posted by BobbyBurt - August 22nd, 2021


Inspired by @GiantOatmeal's cartoon and egged-on by @BrandyBuizel, I've added a speedrun mode to Highschool Bathroom Simulator! Use every movement ability and glitch you can to beat the game in record time. Get to streaming your thousands of attempts, start working on those TAS runs and get SummoningSalt on the phone.



I was gonna go all-out and add dumb speedrun related stuff, but I'm between living situations right now and had limited time.


This update also fixes a mobile compatibility issue which prevented a significant number of people from playing, as well as several spelling mistakes I was too lazy to fix for months.


I also wanted to say thank you. I know this is a dumb shitpost game, but the response has been unreal. Every day the game inches closer to hitting 100K views on NG, and my account isn't far from 1K fans. Winning 3rd best of July, seeing comments and playthrough videos is the coolest thing ever. Everything that's come of the game has added to what's already been an impactful summer for me. Thanks guys.


Newgrounds 4 eva.


Tags:

15

Posted by BobbyBurt - March 19th, 2021


After finishing up my last game in June, I wanted to have some buffer time before my next project to spend learning new programming tricks. They wouldn't be of use, as my focus quickly wandered outside of the realm of the Unity engine. I had thought about switching to another game creation toolset for awhile. Eventually it was obvious that the compatibility and performance I wanted out of my HTML5 games wasn't something Unity couldn't deliver for me. After around four years of using it, I was ready for something new and started looking around.


I was convinced for awhile prior that the Phaser framework was perfect for me, but I could never scratch the surface. It seems like a versatile, great-performance framework. But it was inaccessible to me due to a small community, few good guides / tutorials, pseudo English API documentation and specific, scattered, undocumented sample code demos. I'll be keeping an eye on Phaser 4's development though; it seems like no game developer has yet brought out the potential Phaser has.


I considered and toyed around with a handful of other engines / frameworks. I was really close to going with Godot since it's workflow promised to speed up development and it left a good impression. Similar to Unity, but simplified and streamlined. Mobile compatibility and performance left something to be desired, though. I ended up dropping it when Haxeflixel took my full attention.


I started learning the Haxeflixel framework In August. Had some pretty bad issues getting Haxe set up, which held me back years prior. Pushing past it, I fell in love with the new process of making games. Using a framework is a more DIY approach, with less tools (and no UI) to help you. The appeal of it is simplicity, independence and control. All of it was a breath of fresh air.


What's more, Haxeflixel is open source. I had no idea how helpful and satisfying it is to peak behind the curtain and see how the tools I'm using works in the same programming language I'm working in. And it's invaluable having open source demos and games out there to learn from. In some ways the framework / language is a harder process, but the community has always been there to help me figure things out. Seriously, huge shout out to the Haxe discord server for always being quick to help. For most of my time making games, I was lucky to get a forum reply the next day when I was stuck.


As a retrospective on my ~4 early years of making games with it, I don't think Unity was a good fit for me or the games i wanted to make. Everything takes longer to setup and make, which especially hampers prototyping. It's an engine, it was made to handle relatively ambitious projects. I've always wanted to make simple ones, like the Flash games I grew up with. Using an engine to make a simple 2D game is like driving your car next door; You're accomplishing the same thing, but it ends up taking longer and being less efficient. For that reason, I'd hesitate to recommend Unity as an introduction to making games, like I did. You gotta start as simple as possible.


I've been too busy with college to spend significant time on this stuff :(:(:( but hopefully I'll have something to upload to NG soon.


Tags:

9

Posted by BobbyBurt - January 18th, 2021


I killed him.


lmao anyways I've been learning a new programming language / game framework and making a dumb spam game with it


iu_226986_7358011.png


2

Posted by BobbyBurt - June 10th, 2020


I recently finished an infinite runner game I’ve been making in the Unity engine for the past 7 months. In this blog, I’m gonna go in depth explaining and reflecting on the development of City Escape 2. While I’m partially writing this for my own sake, hopefully it’s interesting or even educational for anyone who stumbles upon this. I recommend playing the game first for context.


Focus


First I’m going to skip ahead and explain my ultimate lesson from this project: Focus is crucial to keeping game development going smoothly.


That probably sounds obvious, but it's a trap I've fallen into multiple times. Games are complicated and have many aspects, so it’s hard to pace myself and take things one at a time. Development of City Escape 2 was off to a good start for about a month. I was focusing on the core gameplay loop, and only spent time trying to make it feel right. Work was slow but steady, and progress is archived by version builds I’d export every few days. But the dates of these builds show evidence of a halt in progress; there’s a sudden gap of time, (not quite a month,) between version 11 and the previous one.


The notes I kept with each version made it easy for me to look back and see where & what exactly went wrong. A month in, I suddenly started thinking about playtesting. I figured I had to make the game presentable, so I made temporary player character animations, a tutorial and improved camera effects. None of these things were necessary at the time; I wasn’t ready to work on them. I had begun to lose focus.


I tend to add more and more features and systems in a desperate attempt to make my game fun. For this project it happened pretty rapidly when I started working on the code that randomly generated the level layout. A complex and important system, yet I scrambled to get it playtest worthy in only a few days. I kept adding functionality without spending time to polish or test anything. This big, crucial system barely did what I needed it to, and the code was a tangled mess. This burnt me out.


I’ve made this mistakes before, and what it leaves me with is a mess of features and systems that are only half baked. Continuing to work on the project was very daunting because there were so many things that needed to be done. And the longer I spent away from certain unfinished areas of code, the harder it was to return to it.


At this point I just didn't know what to work on. I only got less focused as I shifted to working on small details that had nothing to do with the core gameplay loop. In reality, I was doing this to distract myself from the harder, more important core gameplay I should’ve been figuring out.


I came to a revelation about this one night while looking through my old notes. I decided to get back on track, focusing on what I needed to and working on things one step at a time. Luckily, I had a backup of the project from right before things went awry. (Always backup your files.) From there I went back to focusing on core gameplay and adding features one at a time. I was careful to make sure each feature was fully implemented, tested and polished to a degree before moving on to another one. I never regained the same energy and consistent progress I had at first, but from this point on things went fairly smoothly until I was able to actually finish the project!


Concept


City Escape was my first significant, original game project. Though “original” may be a stretch, because halfway through development I restarted the project and followed a tutorial. Since then I’ve learnt a ton, especially from the following project, Death Chamber. Afterwards, I wanted to make something simpler, but give it more polish. A successor to my first game was a safe idea, since it’s something I knew I could make. Only way I could go was up, right?


I started thinking about the project and scribbling out ideas as late as March 2019. That said, I wasn’t married to any of these ideas. In the past, I’ve made the mistake of thinking up game designs in my head and imagining all it could be, instead of letting prototyping lead the design. (See the last link.) This time I wasn’t going to make that mistake. I only had a vague idea of the core gameplay, and I would experiment to figure out the specifics. I had a stronger idea of the feeling I wanted the game to provide: fast paced action with occasional panic.


The main design idea came from dissatisfaction with the fact that in most infinite runner games, game overs are immediate. At any given point, a small mistake in player input can immediately make them lose. My theory was that, despite being more difficult, this design actually makes games less tense and engaging. The survival state of a player is binary; either they are still playing or they lost, no in-between. I don’t know about you, but I feel way more tense and invested in a game when I only have one life left compared to five. It changes my mood and behaviour. In most games, the player can be doing well or be close to failure as a result of their actions. This takes many forms, and can be based on many factors depending on the complexity of the game.


My thinking was, could I apply this kind of non-binary survival state design to an infinite runner game? I realized that the unforgiving difficulty may be a draw of these types of games, but I wanted to make a game that’s more approachable and engaging. My idea was to use speed as the survival / success factor. The player’s goal is to go as fast as possible, and going too slow would lead to failure. Inspired by playing Dino Run when I was younger, the main concept of the player being chased was an obvious fit for my game.


The main inspiration and reference for this game was Canabalt. I must've read through Adam Atomic’s blog on the game’s development a hundred times, and I ended up stealing some of his ideas. Having that game as a source of inspiration was a bit disheartening though. My game project was taking me months and months, and Adam Atomic was able to make a much better game in five days.


Early experimental phase


Technically, development started a year from release. Not long after starting, my hard drive corrupted itself to the moon and back. I lost everything on it. Thankfully I hadn’t worked on it too much at that point, and was able to easily redo that initial work when I returned to the project months later.


For a game with speed being a main mechanic to work, there had to be ways to gain and lose speed. Obstacles would be sprinkled throughout the level, and they slowed the player down significantly if not avoided. Speed would be gained automatically from acceleration, but I needed a risk-reward mechanic that would payoff skill with more speed.


My first solution was a parkour landing roll, inspired by Mirror’s Edge. Timing a button hit after landing from a high place would boost your character forward. This mechanic made verticality more important and was the type of solution I was looking for, but presented its own issues. I didn’t know how to effectively telegraph if / when the player could pull it off, since they needed to be falling from a great enough height. More importantly, it confused the game’s goals. Intentionally jumping from the platforms to the ground and rolling was rewarded, but the main goal of the game was to stay on the platforms. I had a hunch both of these things would cause confusion to players.


I went back to the drawing board, and soon had a breakthrough. Instead of asking the player to risk falling, I could ask them to risk hitting obstacles. By timing a button hit right before running into an obstacle, the player would boost instead of tripping. This made the game more engaging by frequently giving the player the choice to either jump over an obstacle or try to “vault” it, the kind of risk-reward system I was looking for. It also gave the obstacles more purpose. Late into development this move was balanced by being made more strict and punishing in some ways.


iu_131261_7358011.gif

Here’s what the game looked like around this time


Early on I wasn’t sure whether this game would be an infinite runner or be separated into levels. Infinite runners are more common and that might’ve been a little easier to make, but I liked the idea of making multiple levels of differing difficulty and visual distinctiveness. Ultimately I settled on a level structure, as I felt it would give the game more varied pacing.


Physics and collision detection, as simple as they need to be for a game like this, were implemented poorly and remain wonky in the final game. The Unity engine provides physics tools that are easy to misuse, as I did. Later in development, replacing collision methods with something more reliable seemed like pulling a tablecloth out from under a house of cards. While I was able to improve it in some ways, the final product has very rough physics. Tightly tuned physics can be important to making a game feel just right. In the future I’d like to learn more about how to do that, maybe by not relying on a system included with the engine.


iu_131257_7358011.png

Each of these is a separate hitbox. I think all but one are deprecated, but I never bothered to remove them…


As I explained earlier, I lost focus a month into development. I reached a point where everything was in place for the game to be presentable, but I wasn’t happy with any of it. I had burnt myself out trying to get it to that point by self-imposed deadline. I was not happy with the game, but threw caution to the wind and got someone to playtest it. They stared blankly at the screen while he played, no hint of fun or engagement. I knew the game sucked, but having someone’s reaction confirm it was very discouraging. I cite a loss of focus as the reason for I made no progress during the following months, but looking back, I realize that discouragement had an impact on my motivation.


The “No progress” phase


Cute name, huh? I didn’t get significant work done on this project for 3 months. As I explained earlier, my focus kept shifting between small details and visual experiments that didn’t end up contributing to the final game. It began to feel like this game would never be finished. There were a lot of moments where I felt the need to cancel the project, not realizing why development stopped going well.


Overwhelmed with everything that needed to be done on the game, I distracted myself by trying to figure out the game’s visual style. I was initially excited to make the game visually appealing, maybe even cinematic at times. I have some ability with visual art, but ended up struggling to come up with a visual style I was happy with. I focused on the player character design, the look of the cityscape and a general style that wisely used contrast & value to make the game visually clear. This was frustrating, and most of the effort was wasted because I ended up using a simple style and sticking with temporary player assets.


At one point I noticed a problem where test builds were displaying at a different scale than I had set them to. I posted to a bunch of support forums, chats, and wherever I thought I could get help from. Couldn’t for the life of me figure out the problem, and it bothered me so much that I couldn’t focus on anything else. Eventually I found out why: my laptop’s display setting was at 125% scale. A stupid mistake, but from it I’ve learnt not to let small details or issues stop me from constantly moving forward.


I honestly don’t remember much about what I worked on at this point. I eventually just stopped working entirely, but knowing that this project wasn’t finished kept nagging at me. Realizing why the project stopped going well, I became determined to get back on track and finish it. I dug up an old backup of the project and restarted development from there.


Late experimental phase


The project’s title became “Hot Fuzz Rush” after resetting to distinguish this new phase of development. City Escape 2 was not intended to be the final name, but my inability to think of good names prevailed. I think of this game as a successor, not really a sequel.


When I regained focus on the project, one of the first things to do after fixing up old code was remake the level generation system. It was at the core of the game, yet the code was sloppy and rushed. I reused code where I could, but most of it was remade. This time I focused on making sure each aspect was polished, one at a time. Some of the game’s mechanics were disabled until I was ready to rework them in.


Randomness is a great tool in game design, as long as it’s randomness within strict control. For example, something as simple as the vertical placement of platforms is subtle but important in this game. Simply having the code spit out a random Y value within a certain range resulted in platform’s that were often very similar in height. I spent significant time trying to mitigate this, and vertical platform placement actually became the most complicated part of the level gen code. Other systems in the game had to feel random but provide the player with a fair experience. Platforms low enough to reach from the ground, for instance, are guaranteed to appear around a certain frequency.


The police force chasing the player is an important element to the game’s feeling, and I found it difficult to balance. It’s obvious function is a failure state, the punishment for not being fast enough. But I felt that it’s more important role was to keep the player tense. To accomplish the former function without feeling unfair, it couldn’t reach the player too fast. If I wanted the game to still feel tense when the player was doing really well, I needed it to speed up. “Rubberbanding” was the solution I needed to make it feel just right. It’s a controversial game design trick, but I’m confident it was the right choice. City Escape 2 is less tense yet more frustrating without it.


Another game feel feature I added around this time is what I call “velocity hold.” It’s a subtle effect that holds the player at the peak of their jump for a few frames if they’re still holding the jump button. I wanted to add a sense of suspense to jumps, where the player is held at the peak for a bit before falling.


It was around this point I cut one of the player moves from the game. I haven’t mentioned this yet, but a wall run mechanic was in the game since version 1, even before vaulting. Walls were set up throughout the level, and by holding a separate button the player would preserve their velocity until they reached an edge of the wall or jumped. it could be used to gain a lot of distance and height. It was a cool move! But that’s all it was. It didn’t have a specific gameplay purpose, and as the design evolved it became apparent that this feature didn’t really fit. The mechanic was inspired specifically from Mirror’s Edge 2D, which was made by the same guy as the Fancy Pants Adventure games!


iu_131258_7358011.jpg

This was better than Catalyst


Version 18 is when things really started to come together. I made the player jump much higher and snappier. It was an immediate improvement, and I couldn’t believe I hadn’t done it sooner. The builds before this point feel shockingly bland in comparison.


Up until this point in development, all the player could do to get back up if they fell to the ground was dodge the many obstacles down there until they got to a platform low enough to reach. I had a feeling that players would find this boring and frustrating. Around this time, I noticed a glitch where the player’s jump would sometimes be much higher than it should be. I eventually figured out that it triggered by jumping into the side of an obstacle, causing the code to not reset the vertical velocity. After figuring this out, I found myself using it myself in gameplay to get back up from the ground to the platforms. It hit me that this solved the problem of the ground being too frustrating; it was a skillful move that let players get back up manually. It was a natural risk-reward mechanic, too. Originally a glitch, “springboarding” turned out to be the final piece of the puzzle.


Not long after this breakthrough and fixing up some other systems, I finally felt like the game was fun. To put that into perspective, I reached this milestone on 4/20 (haw-haw) which is exactly half a year after I clicked “new project.” The game was far from perfect, and of course it would never be all the things I wished it could be. But after all that time I had something that I enjoyed playing. The game finally felt the way it was meant to. I could finally stop experimenting.


Polish phase


By this point, I was eager to get the project over with. For that reason, the ratio of time spent experimenting with gameplay vs time spent polishing is way unbalanced. I spent so much time trying to make the game fun, but little time on the visuals, audio and whatever else that would really make the game shine.


Making the game’s tutorial was a pain and took much longer than I had hoped. It required the reworking of systems that weren’t set up to handle the tutorial’s unique gameplay. At first I thought that the tutorial should be incorporated into normal gameplay, and my early attempt at a tutorial paused the game every now and then without warning to show text. I shouldn’t have to explain why that’s bad design. The final tutorial was designed to be seperate from the main game but be 100% interactive. I’m happy with how it turned out.


Vector graphics in Unity became much easier sometime before development began, as SVG files became supported. I liked that Flash games still looked sharp when played at a higher resolution, (try turning on fullscreen mode in the Newgrounds Player app,) and I wanted my game assets to have a similar effect. Admittedly, I was overly excited about it, and started making my assets vectorized without considering if it was a good idea. For geometric graphics, I made assets in my graphic design program, Affinity. For authentic flash style sprites, I animated in Flash mx 2004 and used a separate program to convert each frame from a SWF to SVG file.


The problem is, Unity is made to render triangles, and these vector assets are rendered as if they’re a flat yet polygonal model. Even a simple drawing will use a lot of triangles. As far as I know, they also can’t be animated like a sprite sheet. Accomplishing the same effect requires different vector sprite objects to be set to visible / invisible. Both of these factors could potentially cause performance issues. So I guess it didn’t make a ton of sense to make the player sprites vectorized…


iu_131259_7358011.gif

Wireframe view. Compare this to the two triangles needed to render a normal sprite


The exact effect this has on performance, I’m not sure. But it’s certainly far from efficient. I think vector graphics in Unity are great for some things, but not others. While my dream would be to make a game that’s 100% vector and thus has a lot of camera zooming freedom, for the near future I should figure out how to use this graphic method smarter.


Actually, you shouldn’t even be seeing that version of the player sprites. They were meant to be temporary. Sticking with temp assets is one of many ways I cut corners with the visuals. I just wanted the game done, and figured that these sprites were serviceable. The player character appears very small on screen, so it was even harder to justify spending a lot of time making him look good. Still though, seeing these 3 frame animation loops pains me, especially because I know the sprite animation in the original City Escape is better.


Originally I wanted to do a lot of interesting things with the visuals, such as incorporating graphic design into the world like the original wipE'out" games. But late into development, it was more about getting this game presentable at all, let alone making it look good.


All that said, this game looks more finished and has more detail than anything I’ve made before. I’m disappointed that it doesn’t live up to what it could’ve been, but this is still breaking new ground for me. I guess I should be proud of that.


From early on I had the idea to make every level visually distinct by changing the colour scheme. To accomplish this, the level’s visual elements are all made white, allowing them to be set to different colours at runtime. Deciding on the colour schemes seemed like it would be fun, but ended up being really difficult. It’s a shame that I never bothered to change colours of the character sprites to match; they stick out like a sore thumb, especially in level 4.


The visual execution of the thing chasing the player was a challenge, and I’m not confident that my solution was effective. Since early on you could always see how fast it was going and whether it was gaining on you or not. In the final game it takes the visual form of cop cars and choppers. The player is running from a blinding wall of police lights, and the cop vehicles all travel at the same speed as it. I’m not sure how clear that is to the player. I also find it awkward how slow the vehicles are moving.


Moving trains are a visual element I have a lot of fondness for. It might have to do with how much I enjoyed Thomas the Tank Engine as a kid, or living in a place with a really nice view of a train that passes by multiple times a day. The train in the original City Escape was one of the first things I made, present from the very first build. Of course I had to include a train in this one. It’s cool that I was able to give it an actual gameplay purpose, being the player’s means of escape at the end of each level.


By the end of development, I was sick of how messy my past programming was. It made changing or adding to it a pain. Yet wanting to get this project over with, I kept writing messy, garbage code. In the future I’m going to get better with planning out code systems ahead of time, and keeping my code clean, lean and mean.


I have very little to say about the game’s audio because I spent little time on it. The final product still uses sound effects that were meant to be temporary. I hate working on audio. This may be the aspect the most corners were cut on. I hope it doesn’t drag down the game experience much. Thankfully, I had help with the music.


Before this project, game development had been a complete isolated process for me. I always wanted to work on projects with other people though, and prior to this project I had become fed up with doing everything on my own. I’m happy that this project turned out differently! I reached out to users, and others reached out to me. @CryNN and @Technomatics offered to make original music. I stumbled across @RaIix’s Unity package which made NG.io easy and authentic to classic Newgrounds games. He was really cool about letting me use a beta version, and was incredibly helpful in helping me with technical problems and offering feedback on the game. I ended up using code and audio from some other users too. All of these interactions were thanks to Newgrounds. So it’s fitting that the game is NG exclusive, at least for now.


I’m excited that I was able to get Newgrounds.io working for the first time, though I feel that it wasn’t utilized to its fullest potential. The scoreboard was a last minute decision, and unlocking medals for beating levels isn’t all that interesting.


I’ve always had trouble with playtesting my games. The design decisions of City Escape 2 could’ve been better informed if I playtested at every stage of development with a bunch of people. But it can be hard to find good candidates among the people I know, and I don’t want to bother anybody by asking them to play my game. At the tail end of development, I did a little playtesting remotely. This is difficult, as I can’t watch them play and only have their feedback to go off of. A lack of clarity in communication became an issue, making it even harder to get to the root of the issues playtesters had. I’m not sure how to do playtesting better.


I hope this post mortem didn’t seem to down on myself, as I’ve pointed out a lot of mistakes and ways I’m not happy with the final product. Ultimately, this game is more polished than anything I’ve made before, and development has gone better than ever. I had a somewhat unique idea and worked hard to get it feeling the way I envisioned. I’m proud of that. Looking at my initial “design doc”, it makes me happy to see the things I was hoping to make and did. Figuring out Newgrounds.io for medals and scoreboards, programming save data, controller input, an interactive tutorial and such were all pipe dreams at one point.


I learned less big development lessons from this project than my last, but I see that as a good sign; much less went wrong this time. I learnt from the mistakes of my last project, and created a more polished game in a fraction of the time. I know that next time I make a game, I can do it even better >:)


Tags:

4

Posted by BobbyBurt - March 6th, 2020


Please, please, please pace yourself. Learn a few coding tricks, and then make the simplest game possible using what you learnt. After that, learn some more and make a game that’s just a little bit more complex. Your games are going to be shit, just accept that. The idea is to quickly make something, learn from it, and repeat. At this stage, the final product doesn’t matter nearly as much as what you learn from making it. Because of that, don’t be afraid to bail on a project that isn’t getting you anywhere. It can be easy to overthink your games, but try not to. Despite how frustrating it’ll often be, stick with it, and try to have fun with this phase of your skill development.


I know you’ve got some great, ambitious game ideas. That’s great, use those as motivation, but you aren’t ready to tackle them. Baby Steps. Also, know that those ideas aren’t as valuable as you think they are. We all have game concepts in our heads; ideas are cheap. You have no idea what works until you make it. Most games worth their salt are changed drastically from the original concept for the better anyways.


Here are some good resources that might help:

This is a video I found to be really helpful and inspiring. It’s in relation to storytelling but the advice applies to all forms of creativity: Ira Glass on Storytelling

I’m basically stealing this advice from these guys. This is a very good series of advice for starting with game development and sticking to it: Extra Credits on Making Your First Game

Also check out this fantastic Reddit post, written by people a lot smarter than I: A no nonsense "How to get Started" Guide

And recently I've been loving Yahtzee's Dev Diary series. As entertaining as Zero Punctuation ever was, but it also has a lot of good productivity advice from someone who's been a hobbyist developer for years.


That’s my advice. It’s what I wish I did when I started out. I heard similar guidance back then, but didn’t follow it. I had ideas I was too excited to work on, and I was too ambitious. For that reason the first 2.5 years of me doing gamedev were rocky; I was slow to learn because I was focused on getting projects done instead of learning.


On January 28, 2017, I set out to make a small game as a personal project- an energetic, arcade-style survival platformer. It wouldn’t be my first significant project, but it would be the first that I wasn’t following a tutorial for. I would be on my own for this one, no hand-holding. I had been thinking up this cool game idea and, despite knowing in my gut that I wasn’t ready, decided to start making it. I was just too excited not to. How difficult could it be?


The following project would take close to two and a half years of my life. I completely restarted development five times. Finally, on February 25, 2019, I had a finished product that was significantly cut back from my original vision and, in many ways, was unfinished. It was a terribly over complicated and inefficient process that resulted in a project that should’ve taken a few months at most, and a game I wasn’t really proud of.


What the hell happened?


I consistently made a number of key mistakes. Below I will retrospectively explore each of them Despite being an overall bad game dev experience, I learnt a lot from my errors and pitfalls. My process sucked hard, and I hope that I can steer you away from making the same mistakes.


Putting too much stock in ideas

The project was flawed from its conception. Before starting work on it, I would often think about the concept in my mind. I grew attached to my vision of the game, it's visuals and music. This is in contrast to Nintendo’s process: focusing on making strong gameplay and coming up with the theme, visuals, audio and everything else later. Never get attached to an idea, because once it exists you'll likely see just how bad it actually is. You need to be brutally honest with yourself to fix or even trash an idea that you once had confidence in, but it’s well worth it. In the future I hope to focus on prototyping gameplay first, and not get attached to ideas I only think will work.


Unrealistic expectations & overconfidence

Another thing that plagued my project from day 1 were my unrealistic expectations. Because I would always built up this vision of this concept in my head, I imagined a great game and wanted to make that. I had grand ideas for the visuals and music and gameplay which were way outside what I could reasonably do or even find help to pull off. I just couldn’t make a very good game. I should have kept in mind what I was actually capable of, and come to terms with the fact that this game won't be a GOTY.


Prototyping VS overthinking

My expectations for the game's quality lead to me overthinking the game a lot. I have pages and pages of notes, me thinking of every possibility on how to make this the best game it could be. I think I spent more time brainstorming the game than I did creating it! I don’t think any amount of overthinking will tell you if something actually works. Rather, it’s best to prototype and iterate as much as possible.


Unnecessarily complex systems

I had a tendency to overthink the game’s code, too. I remember making a hazard calling system that took me a lot of work because I felt the need to make it as flexible, variable and featured as possible. It was much more complicated than I needed; no playtesting ever suggested I needed to add so many features. Not only was making the system difficult, but customizing this highly customizable program was slow and tedious. The final version of the game used a hazard calling system made up of only a few lines of code.


Getting in over my head

I had a project with a bunch of buggy, unfinished systems, tons of ideas I hadn’t even prototyped yet and all for a game that I couldn’t make into an engaging experience. At this point, the weight of the project makes itself apparent. I realized what an undertaking it was, how unprepared I was to make this game. But I couldn’t just give up on this game I’ve already poured so much time into. That damned sunk-cost fallacy had me.


Restarting

Because of unrealistic expectations, I had a terrible habit of restarting the project. This was the the biggest detriment to the game's development. The first two iterations of the game, V0 & V1, were just experiments that didn't take long. V2, V3 and V4, on the other hand, were all multi-month long developments. I was a fool to restart production even once. I wasted a crazy amount of time working on in a Unity file only to start a new one. I even started to like where the game was going in V2. V2.16 was a breakthrough, finally, this build felt like that energetic, involved platformer I envisioned. If I had kept going from that point, I bet I would have had a finished product much earlier. So why did I keep wiping the slate clean? Largely because I like simplicity. As a Unity project file progressed, it became cluttered with a bunch of systems. Systems that were messy, complicated, interlocking, and sometimes not-quite-working. I guess I'm better with starting from scratch than fixing what I've already got. I liked the simplicity of restarting with a new, clean Unity workspace. The other major factor was how quickly I was getting better. My coding skill constantly improved throughout the project. At certain times I would look at my current project and say 'I can restart this, but make it better.' It’s true, each version of the game had smoother controls and better code. Obviously restarting a project I had already spent so many hours working on was a terrible idea, but it was one I kept making. If I want to be successful at this, I can't do that anymore. I need to get better at fixing my existing work.


Eventually, it came to head. I didn’t care so much about how good the game was, I just wanted to get it done as quick as possible. I decided to dig through my files and to find V3, since it was the most complete version of the game. Instead of restarting yet again, I took what I had, fixed and improved it. I rewrote the code that was outdated and improved everything. At this point, I didn’t care so much about the quality of the game as I cared about just getting it done and released. And I did. 2.5 years after I had started, the game was complete. The game is Death Chamber, if anyone is curious.


This is a repost of a postmortem I wrote on r/gamdev awhile back. It raised a very interesting discussion in the comments, so check that out if you'd like. Thought I'd post it here, so it will hopefully find more people who will take it to heart. I've already learnt at least one good lesson from my current project, and I'd love to dive into it here if you guys are at all interested.


Tags:

5

Posted by BobbyBurt - February 12th, 2020


I've decided to focus on my personal creative growth instead of big, time consuming projects. I want to explore, experiment, learn and improve in a number of creative fields instead of focusing on producing a final product. I'll keep my bigger projects on the side, but give them much less time. This means that my current projects, such as the successor to City Escape, will take a long time to release, if at all.

Hopefully, this change will be more healthy for my creative life, and result in more cool stuff to post here.


2

Posted by BobbyBurt - February 4th, 2020


Still working on the successor to City Escape, which is taking longer than I hoped, (but when is that not the case.) Currently working on the game's visuals as well as gameplay tweaks. Also doing some graphic design stuff, art stuff, and struggling to learn piano. I've got a lot of projects I want to work on, but I gotta take things one-by-one.


Also check this out haha

How many pics can I have in a blog?

iu_92745_7358011.gif

iu_92743_7358011.gif

iu_92742_7358011.png

iu_92744_7358011.gif