🎵 Planeswalking across the endless Chronoscapes
🎵 Fellow Human Weather Channel enjoyer
🎵 Riding the Monorail through ዪ̵̝̠̇̄ሃ̴̧̛̣̹̽ረ̴̰̱͎̈́̍͝ቹ̷͖̲̈́͊ⶴ̴̛̻̣ͅ
🎵 Marching to Bran Castle with the Great VINNTASH
🎵 Brooding in Opal Vessel's Dark Ambience & Barber Beats
🎵 Entirely Consumed by t e l e p a t h テレパシー能力者 - 星間性交
🎵 At peace where the desert sand feels warm at night 夢の砂漠
🎵 What is Mabisyo
Year 1 Student of George Brown Game Programming
I love MMO's, and hope to be a part of creating one (or many!) someday.
Currently:
- Trying to keep my head above the math flood
- Learning C# and Unity
- Playing with Firebase + uwsjs + Redis
Game Dev with Phaser and React
Image Editing with Krita and Aesprite
2D Skeletal Animation with Spine 2D
Map Editing with Tiled
Normal Map Creation with Laigter
Android & iOS with Capacitor
Hosting on Ubuntu with Node.js, NGINX, and PM2
Protected with Cloudflare and Certbot
I wanted to make a post at the end of first semester, but ended up getting a very bad cold along with the kids, and by the time it went away, the second semester was starting!
First semester went really well, I got A's in everything except B in English, and I did not pass math (which I was kind of expecting from the start). However, when I realized it would be best to just retake it, it let me put a lot more work in some other courses, and I am really happy with what I was able to learn and create in them. Retaking math this semester and doing one in the summer term is not so bad.
I made a 1 min 30 second trailer for a game concept. I created 3 levels, made a navmesh and setup agents, made waypoints based on where I wanted to film, and manually recorded it. You can tell it was controlled by me holding the right mouse in edit mode because it's a little shaky. Also learned about materials, lighting, importing and modifying 3d models, and a bunch more.
Another thing I have been having a lot of fun learning about is the HDRP. I am honestly surprised my laptop can handle it (mostly...) and the built in cloud and water systems are breathtaking. The ship floating is a bit shaky here because it is just matching the position / rotation of a sample of the water surface, instead of actually using buoyancy. The underwater caustics, and fog... I thought at first I didn't care about high fidelity graphics as much, until making stuff with them myself.
under_the_waves.mp4 |
Overall I have spent maybe an equal amount of time between 2D and 3D. The 2D lighting system and 2DShadowCaster components are sweet. Laigter is still the perfect tool for quickly generating some normals. However, I have started to notice situations where it would be handy to know how to manually edit or tweak one.
normals_in_game.mp4 |
Now what I really want to learn is multiplayer. I have had success getting one multiplayer netcode-for-gameobjects example working, and I *think* I was able to create a build I could run headless that would automatically start a server. However, I was not able to get it running on my Ubuntu VPS and connect to it... In fact I think it might have crashed the server (it's a micro vps so pretty limited resources..)
Eventually my goal will be to learn Unity ECS and Netcode-For-Entities, but it does seem a lot more complicated, so that will be a long term goal. I am thinking a 2D multiplayer game built with ECS could get some impressive scaling.
But for now I will be really focusing 100% of any extra time on Math. Because of a conflict, and needing to redo Math 1, I am only taking 5 courses this semester, and will take 2 in the summer term. That should make it easier to ensure I do well in Math.
Math is kicking my ass 🥲
Ran out of time and did not make good use of available resources. I should have asked for more help from the start of the class. Trying to "catch up" on all of high school math essentially from scratch has also been a lot of work. All of my other classes are going well though, I think I am around a 70-80% in them. Personal Finance is one of the more tricky ones, but I actually did enjoy the learning about Time-Value-Money calculations, and taxes.
I am really enjoying learning Unity and C#. Domain reloads, even on a lightweight 2D project feel really slow sometimes. I have to mess around with a couple of the fast reload packages out there. I know there are some other limitations to using those, such as it wont pick up changes to certain levels of code unless a full domain reload is done still. Being able to save changes made in inspector during play mode / have them save when play mode is left would be nice too.
I was able to get one of the small mainly UI-Based games built for WebGL and hosted on my server / website though so that was cool! Now we are starting to get into sprites, player controllers, collisions, and enemies.
I honestly did not think I would go back to school, and I am loving it so far. I know if I refocus my efforts around Math I can learn it.
Really happy with the server setup so far:
- Firebase with Google OAuth
- Firebase RTDB for token revocation status
- Express server for Sign Up, HTTP
- Local MariaDB for my User Data
- uwsjs websocket server
-
Redis for
- Websocket Message Brokering
- Websocket Room Management
- Server Side Active Game Data
I already knew to use Redis for room management, but I did not realize it could be used to help scale something like uwsjs by brokering messages between uwsjs servers running in a cloud environment.
I was wanting to use this backend with Phaser, but phaser-on-nodejs only supports 3.55 as the highest, and I have not been able to get it working with an updated version... yet...
While I still want to work on making that happen, for now I will create an extremely basic engine to use server and client side. I was thinking about using a more minimal framework than phaser (like a stand-aline physics engine on the backend and a simpler render engine for client), but this is a good opportunity to learn and I am kinda excited to try.
I am definitely going to be getting some help from this legendary
article:
gabrielgambetta.com/client-server-game-architecture
There are 4 main parts the article discusses, each being critical for a multiplayer game:
- Client Side Prediction
- Server Side Reconciliation
- Entity Interpolation
- Lag Compensation
I only have a vague understanding of these things, so trying to implement them myself will be really fun. Here is one excerpt from the article I thought was really interesting on entity interpolation:
"...;the trick is how to show the player what happens inbetween. The key to the solution is to show the other players in the past relative to the user’s player."
I found this interesting becuase as a long time MMORPG player, I would occasionally play with someone sitting right next to me. And I would notice if we were running "together" sometimes, on my screen they would appear slighly behind me, while on their screen I would appear slightly behind them.
I can only assume this could have something to do with the aforementioned entity interpolation implementation.
I recently setup a login/auth system using Node.JS, MariaDB, Firebase, and Sign in with Google. Initially I was going to setup the systems directly, but realizing Firebase could handle a lot of the work, and I wouldn't need to pay the Google/Apple developer account fees made me give it a try.
It is very weird having a user system and database and not storing any passwords for them! I also love not having to worry about password reset systems and all the other things required for a secure and functional login system. I managed to get the checks for token revokation to be done through a Firebase Realtime Database. Since it's just a key/value store, I am thinking i could move this to a local REDIS server instead, but it's working quite well so far.
Now to setup the actual websocket server which I will be using uwebsockets.js for.
Trying to catch up on math 🫠
This has also given me an opportunity to look into LaTeX. I first discovered it when looking to document some formula for a space games physics.
Some notes I am making
Play with LaTeX in-browser here: latex.js.org/playground
College Day 1. Game Programming at George Brown. It feels a bit surreal, but I am extremely excited.
I have wanted to make a post over the past two weeks on a multi-part dragon I am drawing and then animating, but every time I started a post, I noticed something I wanted to change.
Here it is with a quick background added. Creating varied landscapes and backgrounds is one of the next things I want to start practising.
The final step is rigging and animating in Spine 2D. I have raised and lowered wings for each side, so I will be able to make flying animation. Pictured are the resting wings.
When I get some more time I will upload some progress pictures.
Sadly noticed my nib was dead on Monday, thanfully replacements are coming.
I found out that I could apply gradient map to textures on brushes, which adds a lot of depth and shading in a single stroke. While all these examples are of "Texture - Reptile", the gradients look very similar applied to other textures. These are beautiful, and this is definitely going to help for metallic surfaces too.
Find the Gold / Pearl gradients here: gold-and-pearl-gradients
Made a rainbow cloud brush:
I found a brush pack that really captures the thick paint amazingly. You can see it in the background undr my name.
Find the brush pack here: Memileo Impasto Brushes
Lots of updates. This week I have been working on clouds, skin, plants and trees.
These are my two favorites from the cloud study:
I also had a lighter background ready so I can see how that changes them. It made me realize I can't rely on the background for shading the clouds and need to mix in the light/darker shade myself if I want it to show on both light/dark backgrounds.
You can see here is where I realized the white cloud didn't really have any darker shades because I was relying on the black background for that. However the purple cloud I added the shading myself.
I need to play with the different pore brushes, but I am getting an idea of how to make skin.
I got a good start on trees and bushes. I want to make a little personal library of pre-made assets.
I am going to do some bushes or trees with a separate branch layer, so if I wanted to let you gather from a bush I could use a particle effect during the gatherng and then remove the leaf layer to represent a depleated resource
Along with Metal this has been a tricky one so far... While there are some canvas textures, there is no canvas brush by default or in any brush pack I found so far.
So I created my own canvas texture brushes. Selecting the texture, and then changing the TEXTURE blend mode to "Lightness Map" was all I needed to do to get this effect. Pixel Engine. (Blend mode under the brush texture pattern options, not general brush blend mode)
Left Texture: "Woof Tissue" for Burlap - Right texture: "01 Canvas" for a finer thread appearance
I decided to draw a model as if it was an artists poseable mannequin. I figure this will be the easiest way to start learning how to make human-ish movements.
First I drew each separate part in Krita, and exported it to another file where I merged each body part as a single layer or group. Then I imported each part into Spine, create a skeleton, and attached the parts to the skeleton.
Then I was able to get a (very rudimentary) wave animation keyed out.
I added a few more colors to the dragon skin pattern. I also realized I will need to come up with something else for actual scales. I reawlly love this texture and how this is coming along. Can't wait to actually draw and animate the dragon.
Dragon Skin Purple & Green
The coming week I will be focusing more on character models and animation. I need to make side-profile versions, and then try making walk/run/jump animations. Also dragons. And fire.
I am getting familiar with different brushes in Krita, and hoarding any good bundles I can find. Advanced brushes can make certian things, particuarilly textures and hair, a lot easier.
I have been trying a few different methods to make dragon scales, this one being made with a reptile texture brush and a few layers underneath.
I also found a cloud brush makes nice looking clouds very easily.
Here are some of my favorite brush packs so far:
FizzyFlowers Essential Brushset V2
For the past month or so I have been learning Spine 2D. Spine lets you create skeletal based animations, which can greatly reduce filesize compared to using spritesheets. It also makes it easier to create natural feeling animations, as it can interpolate between keyframes for you. Spine pro also supports meshes and mesh deformation, which can be weighted to bones so moving a bone can deform specific vertices
Here is a small example of making a butterfly animation