070 - Particle Effects

June 7, 2020

It's been a year and a half since I last worked on the akigi.com website, so it needed some tender loving care.

I started the week by making some improvements to the home page.

Website improvements Could use a little more spacing above the play buttons, but not too shabby!

Since I was in website mode I made a couple of improvements to percy, including merging in a long outstanding PR that extended the html! macro.

I also set up Stripe Checkout. So it's now possible to pay for the game!

I just need to make it worth it by building something unique and fun.

Particle Effects

I spent the last few days of the week working on the foundation for particles effects.

I wrote a tutorial on particle effects a few years ago, so I re-read it as a refresher for the general concepts behind particles.

Next time around I'll take the time to tweak the particle values to look more appealing, but my goal this time around was to just get it working.

After getting the particles rendering in the WebGlRenderer I spent another two days getting them working in the much younger MetalRenderer.

Last week I wrote about some of my new tooling for iterating on the user interface's look. Right now that tooling depends on the MetalRenderer since the WebGlRenderer needs a web browser and is thus harder to tool around.

So in order to more easily tweak the look and feel of particle effects going forwards I needed to get the MetalRenderer up to speed.

I ended up gaining a better sense of how to write Metal applications and have some nice new data structures to manage my data buffers in a way that allows them to automatically grow when a larger allocation is needed.

As I continue to gain experience with more modern APIs like Metal I'm getting even more excited for WebGPU since once it's well supported I will never need to write WebGL again.

I'm hoping to be able to deprecate the WebGLRenderer in the next 2-4 years, but we'll see.

Particle system design comments When I'm first designing a new system the data structures look a lot like this. A lot of comments with thoughts and considerations for the future. I don't try to design the perfect system upfront. I just jot down thoughts and add to or remove from some of those original ideas over time. It can take months or years for me to run into some of these sorts of TODO statements, it all depends on how much I need to develop that system.

Art Practice

I started practicing art every morning on April 19th. Haven't missed a day!

This week I started using my morning sessions to practice Photoshop.

Specifically, I'm going through tutorials on how to make icons.

Pool icon I followed a tutorial on creating a pool icon as a learning exercise. Far from perfect - but if from now on my icons are this quality or better I'm fine with that as a starting point. I can just improve over time.

Building these skills is going to help with creating a good looking user interface.

Other Progress / Notes

  • I added two new commands to my CLI: ak deploy auth-server and ak deploy site-server. They're used like ak dist site-server --ecr-upload --tag some-tag && ak deploy site-server --tag some-tag

  • Some improvements to Percy, psd and landon.

  • In the video above you can see little seams in the terrain. I'm looking to solve that later this month so I've started to lightly research potential approaches. Currently considering the 4-tap technique in WebGL and then texture arrays for the other more modern renderers. But I still need to do more research and thinking.


Our financials for May 2020 were:

itemcost / earning
revenue+ $4.99
aws- $189.92
adobe substance- $19.90
GitHub LFS data pack- $5.00
photoshop- $10.65
total- $220.48

AWS bill increased from $148.30 to $189.92 this month, but otherwise our costs are as per usual.

Next Week

One interesting mechanic in Akigi is that there is no on screen game map.

Instead you have a compass (and perhaps a few other navigational tools), and an NPC might point you towards a city that is Northwest.

This week I'll start by adding more polish to the Tutor of War and then move on to the Tutor of Navigation that gives you your compass.

I'll also continue to improve the tooling around visualizing aspects of the game.

Right now I can generate a PNG of any world state. I have it in mind to also create a way to open a window that re-renders and calls a function each time to transform the world.

This would be useful for things like visualizing a particle effect where seeing multiple frames is necessary.

I'll also be working on the user interface. I plan on starting to add in the interface for seeing skill levels.

Cya next time!