Upcoming project: Noise in Unity

posting from my iPad because I’m exercycling and my desktop is streaming Overwatch League. The doctor informed me yesterday that my blood pressure and cholesterol are both slightly high, which I partly blame on there being nowhere to eat near college except a McDonalds and a Jack-in-the-box.

Another homework assignment for ProcGen class, this time we need to make a 20×20 field of cubs whose top side has a randomly-generated height. But we gotta add a noise function so each cube tapers into the next, so basically we’ll have a nice “calm waves on an oceantop” feel. I’ve completed part 1, spawning a single cube, since we just had to paste the code from class into MonoDevelop, but I’m struggling with the next step, duplicating said cube into 20 via MonoDevelop, not just duplicating the cube within the Unity visual editor. I meet up with Ahmitt tomorrow, hoping he’ll be able to help me going forward, and I’ll report what I learn here.

In other news, a friend of mine is submitting their novella to a publishing contest, and they were acting really scared and self-deprecatingly fatalistic, so to show them they had a good story I wrote a quick rap summing the plot up. I originally synced it to some royalty-free beats but it made the song really repetitive; if I can learn to make my own music I’ll reexplore adding music but for now you can listen to the raps a cappella. If they win the contest, I’ll link you to their novella!

Final result on them particle systems

The C++ one is now downloadable from the same URL You can get all my other SFML projects: https://aabicus.itch.io/c-plus-plus-projects

My initial Unity effect, an explosion with shockwave and smoke, is admittedly really bad.

I was still wrapping my head around how to do anything, and I hadn’t gotten into the “lets really fuck shit up” mindset that usually leads to creative results. Case in point, the rainbow hellfire I somehow stumbled into after setting enough sliders to bizarre places:

I mean, I’m not gonna toot my own horn, but that actually looks decently cool. I replaced the default texture with my own, added tails, and streeeetched those tails out; they’re actually the majority of the effect. I originally had the camera at a birds eye angle, showing a big circular ‘radiating out’ effect, but it looked a lot cooler when you stuck the camera right in the middle. Looks like you just got nuked by Lisa Frank or something

How to make a particle system in C++ and/or Unity

I’m just gonna write down everything I remember from the crash course Ahmet gave me tonight on the two particle systems I just had to make for homework.

For the C++ one, we had to make a particle, a particle system, and a main for where the two interact. The particle started off with a header file, where we defined the particle and the various pieces of the particle that made it what it is (initial velocity, initial size, initial color, initial texture, and I think a few others.) Then we created a .cpp file where we typed functions that defined where the particle spawned and what it did. Most of these weren’t literally what the particle did, more like “a bunch of variables showing what the particle will be doing once the ParticleSystem tells it what those variables are gonna be” since 90% of the project requirements involved making sure everything was variable.

So once you had that, the ParticleSystem mostly housed useful functions for determining random numbers, and it had the actual functions that spawned particles using for-loops. There was a header file for the ParticleSystem, which defined what it was and what variables it needed to call, and then the Particlesystem.cpp actually did so, and added variations for all of those attributes we defined in the particle header. The main seemed to mostly define the game’s window itself and then call/draw the ParticleSystem and particle so it would actually appear in the game itself.

Unity was different, because it has a built-in engine for particles, so we didn’t have to code at all. We downloaded a bunch of free textures off the Unity Asset store and then grabbed an in-house item called a ParticleSystem from the repository. It came with all the settings caked right into a giant HUD, and you fiddled with them to get the shapes, sizes and behaviors you wanted. The way you string multiple pieces of the particle system together (i.e. explosion->shock wave->smoke) is by setting time delays on the last two so they don’t start playing until after the one beforehand finishes.

The way you made the shockwave was by creating a single particle, set to position 0,0 and speed 0, given a ring material and set to increase slowly in size. I spent way too long trying to make a circle of particles behave properly until Ahmet just told me the right answer to that one.

On C++, Unity, and things I’m actually good at

This quarter has been going great in some ways, not so great in others. On one hand, it’s going great in the ways that are actually important, but on the other hand…I guess I’ll get into that.

One of the classes, Procedural Generation, is kicking my ass. The first assignment is to make a particle system in C++. I have no fucking clue how to do that. Three different students have been helping me, but I’m literally just sitting there doing whatever they tell me, I just can’t make the mental links myself. Even after over five years of trying to learn how to program, I feel just as clueless as when I first tried to make that checkers game in September 2012. I know the adage is that you get better at something the more you do it, and the only way to fail is by giving up, but I have five years of blog posts showing just how terrible a programmer I still am after many, many different attempts to tackle that hurdle.

Said first assignment was actually due Wednesday, the professor gave me an extension. The second assignment, making a smoke effect in Unity, is due today, and I can’t figure out how to do that one either. Apparently it “doesn’t require any coding” and is done entirely in the Inspector, but that’s not doing me a hell of a lot of good because I can’t seem to get the inspector to do anything. Once again, other students had to walk me through opening the Inspector, spawning objects, applying textures to those objects, fiddling with those objects’ settings, and now I’m at the point where I need to spawn a new object that represents the explosion before the smoke. I don’t even know how I’m supposed to transition between these objects; is there a ‘timeline’ object that lets me disable the smoke effect until the explosion effect happened? I guess I should ask somebody but everybody else already went home for the night. I’ve been working on actual useful shit like marketing Major League Magic.

Yeah, Magebrawl got renamed, and I wasn’t super jazzed with the new name until I started writing it everywhere. People seem to really like it, and it’s made marketing honestly a lot easier. Right now I’m scripting out a 20-second promotional video, and I’m also in talks with Mixer, the Microsoft-founded Twitch competitor, to get a developer’s account, which will stick us on their front page whenever we stream. That’ll be huge for exposure. It frustrates me how I’m actually enjoying this marketing element, and I’m good at this marketing element, and yet I’m forced to keep sitting here feeling like a moron as Unity and C++ duly refuse to do anything I want from them. I don’t know what else I need to prove that I’m just not cut out for programming.

Am I sabotaging myself by mentally giving up? Probably, but for fucks sake, five years and I can’t even spawn a goddamn object without getting help. I have over a dozen completed Unity projects, you’d think I’d know how to do something in the engine by now. I paid $75 for PlayMaker, whose reviews wouldn’t stop crowing about how it makes Unity a billion times easier to use. Perhaps it is, but a billion times zero is still zero.

RIP Medical Necessity

Bad news regarding the most important video game project I’ve been talking about this year. I only mentioned it once on this blog, but it’s had more of a presence if you follow my other communication channels, and it was definitely the most difficult of the many assignments. But it has come to something of an inglorious end.

I am talking, of course, of Hurdles, which got only 25/30 on Google Classroom, including a teacher comment that I’d made a classic rookie designer mistake of making the jumps too pixel-precise, leading to nobody being able to make them except myself. He is absolutely right; I’d needed to make the jumps easier because nobody can see the rest of the game which I’d painstakingly balanced so no jump was possible that shouldn’t be. The intention was that the player progress through the life stages of the main character, crafting their life story through making decisions at each stage of the character’s life, and that failed jumps would signify failing at said life choice, leading to lesser options and locking off parts of the map. When the jumps are too hard, this is all really difficult to see. Alas.

Bad news for the other game, Medical Necessity, too. The final hurdle in pre-production was to convince a panel of judges that we’d finished adequate work on the project to justify continued development next quarter. We failed.

First, let me say that their criticisms were 100% valid. Medical Necessity just wasn’t fun. It had been fun at first, and people really enjoyed the early prototypes as we hammered out the foundation of the project, but as the game came together, it lost that spark. We’d marketed it as a fast-paced puzzle game, but it was neither fast-paced nor tactical. We’d lost sight of what our playtesters had enjoyed in the early builds, with each design decision slowing down gameplay even further.

Part of this blame falls on the programmers, which constitute the other 3 people on the dev team, but I firmly believe that the buck stops with the leader, and I was creative director. My premise was called out for being part of the problem, and I’d also failed to provide my team adequate directions, as I’d feared would happen. I was too tentative; I hated having to tell a tea member that something about their work wasn’t perfect. Worst conversation in the world is when a teammate comes back on Monday with his weekend work and I’m staring at it, and I have to find a way to say, “This work is well-constructed, I have no particular complaints or criticisms I can point to, and it fulfills the requirements I gave you, but it doesn’t work for the project. You need to make changes.” I always copped out and avoided telling them, instead I fell back on my common strategy of praising its positives and trying to pitch my request as “That’s really good! Can we add onto it by doing X?” More than anything else, I favored their contentedness and ensured my teammates felt like they were contributing to the vision of the game, as these were qualities I’d always wished to see in my leaders. However, this led to my team having inadequate guidance, and contributed to the lack of focused identity the game perpetually suffered from.

I can’t decide whether we didn’t playtest enough. We playtested with multiple people each week, and most of them enjoyed it. The high schoolers in particular thought it was a blast. The seasoned panel of game developer judges and program directors were the only playtesters who flatout disliked the game, but I don’t consider this a case of Critic-audience dissonance because multiple factors nourished the divide. Playtesters are subtly encouraged to be nice, and most are affiliated with the program and/or knew us personally. That being said, I’m not sure what we could have done to alleviate the problems. We took what playtesters told us, analyzed their feedback for useful kernels of enlightenment, and improved our product thusly.

One of my biggest regrets was listening to a piece of feedback the program directors gave us two weeks before the vertical slice. At the time, our gameplay looked like this:

The levels were segmented into individual arenas, which the player defeated or restarted upon failure, and progression to the next level happened with the spacebar. This was the design we’d envisioned from my first pitch, as it allowed the player to move at their own pace and ensured the gameplay remained fast-paced. But for that same reason, the program directors disliked it. They mentioned that good gameplay is supposed to have “peaks of intensity and periods of inactivity” that let the player take breathers after particularly intense moments. Everyone on my team, myself included, resolved to fix this problem by revamping the levels into connected campaigns, where the player progressed physically to reach the next level. See the below GIF, where we’d successfully reached this goal after two weeks:

I was the only one who didn’t like this new system, and I couldn’t put my finger on why. It felt like an unnecessary lull in the gameplay; forcing the player to physically march upwards between rounds took a lot more explaining than “Press Space to start the next level”, and the benefits of the new system felt incredibly minor compared to the effort of making it. A friend later added another good point, that it conflicted with the mobile-based gameplay we were gunning for, where users enjoy constant little levels that can be left at a moment’s notice, not long PC-styled campaigns with checkpoints. Even worse, we were going to use those two weeks for polish, to make our game look better and improve the gameplay we already had. Instead, by spending those two weeks implementing this system, we entered vertical slice looking significantly less flashy and put-together. If I had to name a single choice that most resulted in our game dying, it was the decision to implement that campaign system instead of commit to the bite-sized levels.

We were not plagued with any of the typical problems besetting a cancelled game. The four of us are good friends and worked hard every day creating new features, improving the old and remaining on schedule. Week after week we completed everything on our to-do list on time and under budget. I personally spent over $400 securing commissioned sprites and music, something we’d been told is an important step in passing vertical slice. Shame I couldn’t afford to spend more, as Tyler took our environments directly from the Unity Asset store, and they looked bland and generic as a result. This problem wasn’t completely our fault: the university had initially told us that we’d be cooperating with graphic art students at the University of San Jose, and it wasn’t until a week into pre-production they’d admitted the deal had fallen through. I’d leaned heavily on building my team around programming rather than artists for this reason, but I should note that we weren’t the only group severely-affected by this, and every other game survived vertical slice. Several other groups had artist/musician friends who agreed to work for free on their projects, but I paid mine market rates because I feel like professionals deserve to be paid for their work. Every freelancer, myself included, has found themselves in the situation where friends are begging them for free work, and it sucks. Harlan Ellison was the focus of a documentary called “Dreams With Sharp Teeth“, and he has an amazing scene where he explains why artists who work for free are negatively hurting the entire creative industry:

So I guess I can be proud that I wasn’t part of this problem from the contractee side. Medical Necessity paid for it, though. But honestly, in the long run I can’t help but feel a little relieved. Sure I’m disappointed the project got canceled, but I’d never wanted to be a creative director, and it was really difficult trying to lead other people. And it was really stressful to watch as the game slowly transitioned away from what I envisioned. Honestly, I didn’t even find the final product fun, and if I ever reattempt the premise, I’ll be tackling it from a completely different perspective. (Probably an arcadey, unrealistic shoot-em-up with powerups and no reloads.) And more importantly, I’ll be doing it alone.

Hurdles, a New Game not on Itch

For my level design class final project, I needed to make a platformer in Unity, and my god is it terrible. I’m not sure if it’s possible to be dyslexic but just in Unity, because I think I’ve got that. I mean seriously, you nonexistant readers have been following my adventures trying and failing to learn how to code since 2012, and I couldn’t believe how hard this still was. And all it was was just making a bunch of squares out of ProBuilder and adding a free-to-use third-person platformer dude from the Asset store, but it was an act of congress to get anything to work properly. I needed other students to help me with literally every single step, but Hurdles is finally the absolute bare minimum of what would consider itself a completed game. So if you wanna try it, here’s the link, only on darwinssoldiers.com:

Hurdles.png

https://drive.google.com/file/d/1qehGMtKxGuVE8fVV7amrkq-bcAtQ5O84/view?usp=sharing

I’m only doing this because I firmly believe that any work unpublished is being under-used. Half of my success in this industry involves forcing myself to finish any projects I touch, in order to bolster my portfolio. Normally I’d spruce up Hurdles and add shit like music, but it’s really, really not worth it. Just give it a go if you want to see a game trying desperately to have a plot when the author doesn’t know how to add textures and can’t program any mechanics other than jumping puzzles.

The Aabicus Dragon

Kinda unusual situation happened tonight. Be warned, this whole blog post is entirely pointless. If you’re looking for something about game development, look no further.

Basically, while trying to find something unrelated I stumbled across this wiki page for an MMORPG I’ve never played called “Shroud of the Avatar.” It looked like just a gigantic list of random dragon names, including the ‘Aabicus Dragon.’ Now, this isn’t the first time my avatar appeared in a bizarre, probably procedurally-generated list (aabicus was also the subject of a word pronunciation video that somebody’s bot spat out), but I do like to get to the bottom of whenever it happens because it’s a weird enough word that it rarely appears anywhere by accident.

And it turns out, this wasn’t an accident at all. The Domesday Book of Dragons was a Patron reward on Kickstarter. Anyone who donated $200 could choose to have their name included in the book (though the codes appear to still be sold for as low as $20, which would explain why the list is so huge). That’s really weird to think somebody else willingly chose the name Aabicus in a username setting. I can’t help but wonder if they were referencing me, since it’s not really a string of letters that would come about on accident. When I was young and just starting out on the internet, I chose the name because (1) abacuses are cool (2) the double A would help me show up first on any alphabetical lists, (3) it had the letters A, B and C in alphabetical order, and (4) grossly misspelling the name would make sure nobody else on the internet was using it.

Until now, I guess.  I wonder if that guy’s gonna start using it anywhere else. Guess it’s a good thing I’ve got it SEOed to the nines.