More Exciting YouTube Happenstances

Last time I used this title I wrote about YouTube, programming and LinkedIn. I have more updates on two of those fronts.

youtube stats.png

Believe it or not, lowered viewer duration is a good thing when the decision that launched your viewerbase is “my videos do not exceed two minutes”

The YouTube channel is exceeding all my expectations, with a huge boost in subscribers, comments, and views ever since I switched to a Tuesday/Friday schedule and started aggressively promoting it on social media. My main goal right now is to keep this momentum (or, at worse, maintain my current viewerbase) until Overkill releases Overkill’s The Walking Dead, and try to get my foot in that door on the ground floor. Best case scenario for me is that the game has an initially disappointing response, but Overkill saves it through consistent hard work and frequent patches (which is what happened with Payday 2 and RAID WWII, so odds are good that’s how it’s going to pan out). Runner-up situation is that the game is just straight good from the word go, but that’ll mean I have a lot more competition (like what happened to me with Overwatch.) Either way, I’m just super happy that after two years of releasing videos, they’ve finally started gaining traction.

In other news, the newest C++ assignment was kicking my ass until I spoke to the professor. It’s called “the flocking assignment” because it involves creating a bunch of birds (aka triangles) that chill in a big cloud and disperse with the press of buttons. It’s another SFML assignment and even the actual programmers are having trouble with it. After about ten hours with the tutors last weekend, I finally just spoke to the professor because I wanted to work on my final exam instead of this. He crunched the numbers, and I can still pass the class even if I get a zero because I’ve turned every other assignment in, so thank god. I’ll still probably turn in what I got for partial credit. Looking forward to the final project, by the way, its a Clickteam Fusion assignment where the player fights enemies in a procedurally-generated environment by grabbing procedural-generated weapons. Or at least that’s the goal. At the moment I’m still working on the procedural-generated environment. Should have more to report later.

Streaming and Streaking

Lot of cool things happened in various directions, so I thought I’d give a little compilation for the record.

First, I shoutcasted a Forzebreak tournament and it went really well!

The Forzebreak team was really appreciative, we got almost 50 people watching on Twitch because various students tweeted their friends, and I get to add another game to my shoutcasting portfolio. I didn’t do half bad considering they literally didn’t have an observer mode, forcing me to cast the game from the sole perspective of Player 4, but overall it was great practice for the upcoming tournament this Friday for Major League Magic.

Forzebreak is lucky they had their tournament when they did, because my YouTube channel recently experienced something of a boon. Two weeks ago, I released yet another video, this time a lightning-fast chronicle of The Only 5 Weapons Worth Using in Payday 2, and for some reason people really, really liked it. I gained 1800 views, 180 thumbs-up and 40 new subscribers overnight, and to capitalize on this new audience I accelerated my videography pace to twice a week. I also nailed down an exact schedule; I’m now releasing a new video every Tuesday and Friday, each one under two minutes and chronicling a top 5 list in Payday 2. I’ve also started promoting my videos on Twitter, Steam, and reddit, and so far its resulted in my videos gaining far more viewers than I’m used to. Overkill contacted me on Discord and added me to their private content-creators channel, where I’m currently talking to other Payday 2 videographers in the hopes of maybe convincing one of them to do a crossover with me. I’ll keep you posted.

In other news, I ran Bay to Breakers naked yesterday, and holy god am I exhausted. I’d only started running about a week prior, and I hadn’t run nearly as far as the 7.5 miles in Bay to Breakers, but I actually completed the marathon without stopping. Sure, there were many times I downgraded from a jog to a basic walk, but I never fully stopped, and completed the marathon in about 2 hours. Afterwards, I followed a bunch of people to the Uber/Lyft pickup point, where my phone cheerfully informed me it would be $200 to drive home. Not even remotely interested in paying that much (and woefully underinformed as to how the Bart works; most people I’ve spoken to said I should have used it to leave the city), I chose to queue up the route home via walking, then just start hiking. I didn’t expect to finish the trip (it was a 14.5 hour walk according to Google Maps), but I knew every step I took would decrease the cost of my Uber, especially as the hours ticked by and everybody else went home and the surge ended. In the end, I walked another 8 miles over the course of two hours, which adds up to a full marathon-length in total. But my Uber home was only $30, so I’m not complaining. I’m not leaving my room today for anything, though, my legs are sore beyond belief.

rusty metal texture.png

In order to keep this post at least somewhat programming-focused, I also finished another homework assignment for ProcGen class. This one used a new program called Substance Designer, which created textures with stuff like normals, materials, and roughs. The overall UI was like, connecting squares of data with little lines, which took some understanding but was overall really understandable. I feel motivated to get better with Substance Designer because textures are the sort of thing I don’t have much experience creating, and I don’t like using other people’s content, so it’s something I’ll need to learn if I ever hope to move into the 3D space.

Cubes.png

We had to create a rusty metal and a more creative texture. Mine was like golden liquid with a blue moss on top, I guess. Reminds me of UCSB’s colors.

Making trees in Unity

Turns out trees are blessedly easy to make in Unity, so for once the assignment went swimmingly. Well, the second time: the first time materials were bugging out and we downloaded three different tree packs from the Asset store and they didn’t come with the properly-designed textures.

Unity literally comes with ‘tree’ as an available 3D object, and when you add it you can just start fiddling with its settings to make trees. Though I did keep getting this crash when trying to add textures to leaves, but I got around it by creating my own texture and applying an alpha channel.

Procedurally-Generated Terrain

Completed another homework assignment for ProcGen class.

This is a procedurally-generated terrain. You can adjust the sliders and it’ll make it look different.

And, uh…I guess this is the same thing??? I don’t know, I made these with Quinn walking me through every goddamn step. It feels like outright lying for me to turn these in as my own assignments, I was a glorified AutoKeyboardPresser as he just explained every little step and walked me through the most basic of actions. I’m not blaming Quinn, he did his job as a tutor getting paid by the university, but I’m not learning. This exercise felt completely pointless because I can’t even recall a single step about how these terrains came into existence.

But I mean, working in Unity in any capacity, no matter how small, can’t hurt can it???

Unity noise-filtered procedural mesh

Noise homework completed, with Quinn’s help. We created C# scripts, named MeshCreator and CubeMaker, and used them to spawn the 20×20 grid of cubes. We then downloaded a Perlin noise function from a professor-supplied website and tied that function to the height of the cubes. This caused the cube’s height to change depending on the noise function, creating this wavy-water effect.

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 Almir 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!

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.

dev diary #4

Prompt: – Write about the week’s lecture and readings as they relate to your project 
– Write about this week’s industry guest speakers (if any)
-Write a description of your progress (both positive and negative) on your current project
– Must include at least one piece of media:
GIF, link to video, screenshot, sketch, etc.

A few days ago we got an email about a one-hour UCSC seminar on Imposter Syndrome. I was planning to attend before I tried to find the location and realized it was happening on the main campus. Bummer. But that is an issue I feel I’m struggling with at this point in the program, most of it directly stemming from the difficulty I’m having with C++ and my overall fear of programming. I know it doesn’t look great that I’ve waited three dev diaries to start admitting that I’m halfway expecting to get kicked from the program, but there’s this massive C-shaped hole in my skillset that’s negatively affecting my ability to contribute meaningfully to the duo project or to complete my assignments on time for C++.

Pretty much the only thing I’ve done for the duo project is asset creation. I’ve created over a dozen animations and four dozen sprites to populate Tyler’s vision, and as Emily pointed out when she learned this, “the program isn’t testing for that.” You want programmers and Tyler has programmed the entire game on his own. It’s also his concept; as mentioned in my last diary, I decided to withdraw my suggestions on fields and music in favor of going with Tyler’s office space and basketball mechanics because both concepts were equally usable and I figured Tyler would do a better job programming something he was invested in. I don’t have access to Tyler’s dev diary so I have no clue whether he’s pleased with my level of contribution to the project, but he certainly seems pumped about things when we talk. I’m quite satisfied with him as a partner as he’s open to suggestions, flexible with reacting to setbacks, eager to overcome obstacles and an overall hard worker. While we’ve both contributed plenty of suggestions and design concepts to the game, and I’m very satisfied with the final project, I can’t help but feel I’m regressing into my lifelong habits of avoiding programming by filling the void with content creation. I should have taken advantage of the solo and duo projects to learn Unity, even if it would have resulted in substandard products, because the proficiency disparity between me and the other students will only grow as the program goes on.

It’s just so easy to let him do all the programming and insert myself into more of an asset-creation position because that’s playing to my strengths. I can crank out sprites (I don’t think they’re particularly good but Tyler insisted he wanted to use my artwork and not default assets so apparently they’re of adequate quality in everyone else’s eyes) and I don’t know Unity as well as he does, so it’s logical and easy to let him program. But I didn’t come to this Master’s program to learn sprite creation, and we’re going to have an entire University of San Jose to do that for us for the next project. I need to find a way to serve a useful role on a team, especially considering nobody’s games from any point in this quarter have required a writer.

This all boils back to my fear of programming, something that’s plagued the majority of my life. When I was 11, I couldn’t wrap my head around a month-long tutorial of DarkBasic, so I used Multimedia Fusion (nowadays called Clickteam Fusion) to make games. As an undergraduate, I briefly considered switching my major to Computer Science but a terrible experience in a C class squashed those plans and I continued using Clickteam Fusion for my portfolio projects. After graduating, I took an online Unity class but eventually gave up after six months had passed and I couldn’t program anything more complicated than a text-based adventure game. Even in this class, I chose to use Clickteam Fusion for my solo project when I probably should have created an inferior project in Unity. I feel like the metaphorical elephant who learned as a calf that he couldn’t uproot the stake tying him to the ground, so he remains rooted even as a 15000-pound adult who could easily escape that stake if he tried to.

This is the part where I’m supposed to tell you that I’ve tried my absolute hardest to learn C++. I know that’s Andrew’s opinion on himself, but I feel like I should (and could) have worked harder, instead of constantly distracting myself by putting 110% into my other homework assignments. I love every other class in this Masters’, but I bet if I’d spent less time creating sprites, writing 2-page dev diaries and pulling all-nighters on The Wolf and the Waves I could have probably learned C++ at the same time. Instead my vision just swims when I stare blankly at Visual Studio and I do something superfluous like programming Tic-Tac-Toe instead of Connect Four. I can see the massive potential of games programmed in C# and I’ve wanted that knowledge for years, and this degree is probably the greatest chance I’m ever going to get to learn it. If I fail now, I’ll forever regret losing this opportunity.

Our lectures and reading discussed how the game designer uses the formal elements of a game. As a sandbox-style game, “Explore” would probably fit best as our player’s intended motivation. We found that most players clicked on everything once they were bored of shooting paper balls, so we didn’t to worry as much about telegraphing what items had scripted actions tied to them. (We added a few for the Inbox anyway, since the player misses a huge chunk of the game if they don’t click it.) The thing about ‘Calmness’ is, we had to avoid most of the things that video games use to create challenge because challenge isn’t calming. Our player character has infinite resources, no objective, and no stress because otherwise the player might not feel calm. We didn’t even have a clear ending (everything fades away and you’re now relaxing in the Rockies with nothing to do) until the very last build; we intended to let the player sandbox forever but playtesters didn’t find it calming when the game never clearly ended!

Believe it or not, Andrew Corcoran’s lecture actually helped us in a major way. He discussed dynamically adjusting your game so that it catered to people with different preferences. Originally, we tied the “slacking off” mini-game as calming and the “working” event as neutral. After Emily playtested our game and had the opposite reaction to both mini-games, we realized that some people found work more calming than laziness. So we tied the calmness mechanic to the player’s progress in either mini-game. Now people can finish the game through whichever playstyle they prefer, just like Corcoran’s UI and menus cater themselves to the player.

end sprites

Dev diary #1

Hey all. So, this master’s program is intense. I’m loving it, but it’s sapped a lot of my free time so I haven’t been updating this blog even though I’m learning tons of stuff and working on projects right and left.

So, since I’m already writing weekly dev diaries for one of the classes, I figured I could publish them here! With names changed to protect the innocent, of course.

Dev Diary prompt 1: Your assignment (should be no longer than one page):
– What do you hope to get out of the next 12 months in this program?
– What are you most excited to learn about?
– Is there anything you’re worried about?
– In your spare time, what kinds of games do you prefer to play?

GAME 270: PROTOTYPING is of the classes I’m most excited about when scrolling through the quarter’s itinerary. The C++ sounds terrifying and the art class sounds promising but I suspect it’s less about making art and more about intelligently choosing pre-existing assets, when one of my favorite parts of game development is creating all my own art. I have always operated under the philosophy of creating many tiny games to learn new mechanics, and so I look forward to this class pressing me to the limits of what I can accomplish in a short time.

I can even get behind the philosophy of writing these diaries. When I took a Unity course over the summer preparing for this course, I wrote a daily diary keeping track of what I’d learned that day. I was less focused on what I’d hoped to learn, since it was just Unity, but this time there are three major tiers of knowledge I hope to explore:

  1. Programming. I want to learn Unity well enough to make my own games on that platform. Other languages like C++ and Unreal I hope to master well enough to pass the courses.
  2. Game Design. As mentioned, I’ve made several games on my own, so I’m not a completely newcomer to the design aspect of games, but I have never been formally trained so this opportunity is an invaluable asset.
  3. Networking. The other kids in this program are driven, ambitious, and knowledgeable in this field. I’ve never met so many people my age that I can bond with like this class. I need to befriend as many as possible and nurture connections to help me break into the industry proper.

My biggest weakness is my lack of programming experience. I passed a C class in junior year of bachelor’s, and I’ve taken multiple online courses attempting to learn Unity, but I’ve never felt like I was doing anything but stumbling through those classes and aping the instructor. I want to be able to make Unity games with the same proficiency I can create games in Clickteam Fusion 2.5.

In my spare time I play multiplayer shooters like Overwatch, Left 4 Dead 2, and Team Fortress 2. I specialize in healers and support classes.