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.