Uploaded May 2026 | Updated September 2026, 1 week ago
Welcome! Here we do all things programming. Mostly in Golang, but sometimes in other languages. My main objective is to write games and game dev tools in golang, but feel free to ask any questions and we can learn golang together. Happy to answer any questions!
⁍ Play: mythfall.com
⁍ Twitch: twitch.tv/unitoftime
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Github: github.com/unitoftime
⁍ Past Streams: youtube.com/playlist?list=PL_r0j2F4Hkj8KZ6jNJPCW3aDH--aWrn-T
Welcome! Here we do all things programming. Mostly in Golang, but sometimes in other languages. My main objective is to write games and game dev tools in golang, but feel free to ask any questions and we can learn golang together. Happy to answer any questions!
⁍ Play: mythfall.com
⁍ Twitch: twitch.tv/unitoftime
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Github: github.com/unitoftime
⁍ Past Streams: youtube.com/playlist?list=PL_r0j2F4Hkj8KZ6jNJPCW3aDH--aWrn-T
![[Making an MMO] Episode 1 - Opening Windows and Drawing Sprites
⁍ Wishlist: https://store.steampowered.com/app/3475620/Mythfall/
If youre interested in learning what it takes to make an MMO then youre in the right place. The goal of this series is to investigate all of the common software problems that you might face when building your own MMO. In that sense, the goal of this series is to be educational. We will explore a variety of topics in a reasonable amount of depth: Rendering, Networking, Deployments, Organization, Algorithms and much more.
When people say MMO, they typically mean a massive game. We might not be able to reach that scale, but we will design our systems with scale in mind. A more precise name for what we will build is a persistent, distributed online game. Thats kind of long to say, so Ill just stick with MMO. Because MMOs require several different domains of knowledge, I will definitely need to learn a few things along the way. Ill try to give each subject the explanation it deserves, but in case I miss anything - feel free to let me know.
The language we are going to use for this project is Go (Also known as Golang). Go is a relatively simple language, but packs an enormous punch when it comes to features and libraries. In my opinion, these characteristics make Go a great choice for teaching software and software architectures.
Well thats all I have now, I hope youll stick around and let me know what you think.
Credit to asciiquarium for the introduction ASCII aquarium.
// Repository: https://github.com/unitoftime/mmo
// Play: https://mythfall.com [Making an MMO] Episode 1 - Opening Windows and Drawing Sprites](https://i.ytimg.com/vi/dsabHK_TspA/mqdefault.jpg)





![Golang Physics Performance
⁍ Wishlist: https://store.steampowered.com/app/3475620/Mythfall/
In this video I spent some time benchmarking my ECS (Entity Component System) framework against the popular Rust ECS, Bevy. We had to do some performance analysis and optimize a few things, but all things considered, we ended up doing pretty well. Specifically, we optimized by doing bounds check elimination (BCE), inlining, and using the recently released Go generics
// Socials
⁍ Twitter: https://bit.ly/UnitOfTimeOnTwitter
⁍ Discord: https://discord.gg/63YeahMKfJ
// Code
⁍ Go Code: https://github.com/unitoftime/ecs/blob/master/bench/main.go
⁍ Rust Code: https://github.com/unitoftime/experiments/blob/master/ecs/rust/src/main.rs
// Good Article
⁍ PlanetScale: https://planetscale.com/blog/generics-can-make-your-go-code-slower
// Errata
1. Calling Monomorphization The other end of the spectrum from GC shape stenciling is a bit overblown. Go stencils (ie monomorphizes) its generics based on the GC shape, so there still is some monomorphization happening which can give you nice performance gains for things with different GC shapes. The actual Other end of the spectrum is probably something like doing a full dictionary-based boxing and doing no stenciling at all.
2. Why does Bevy Run Slower than Go?
I apologize for not covering this in the video. I think number 1 and 2 are probably the biggest contributors to Bevy running slow.
a. Bevy has A LOT more features than my ECS, each of those features might contribute to a global optimization for most cases, but in my benchmark contribute to a slowdown. I expect that most people arent disabling multithreading and the system scheduler and manually executing every game loop.
b. Bevy has a few different layers at which you can use the ECS, Im not a bevy expert, so I may have written the code in an abnormal way where bevy ran slower than it usually would have. Very specifically, Bevy seemed to slow down the more I started adding and deleting components, Im not sure the limitation there, but I thought it was notable.
c. Bevy isnt the fastest Rust ECS framework according to this: https://github.com/rust-gamedev/ecs_bench_suite - I learned this actually kind of recently after all my code was written for bevy
d. Pointed out by laundmo in the comments:
1. by default, bevy uses what it calls Table storage for components - this is fast to iterate but slow to update. In use cases where you might want to add/remove components a lot, you can switch to SparseSet storage on a per-component basis. - I didnt know this, but it does align with what I saw where Bevy slowed down once I started deleting entities every frame.
2. The ECS benchmark [in errata C] you mentioned is outdated by 2 years, and was also recently archived to represent this. Bevy has had multiple optimizations since then. I see you using bevy_ecs 0.7 - in 0.9 there were some decent performance improvements which would be interesting to see. Golang Physics Performance](https://i.ytimg.com/vi/i2gWDOgg50k/mqdefault.jpg)


![[Making an MMO] Episode 9 - Client/Server Rearchitecture
⁍ Wishlist: https://store.steampowered.com/app/3475620/Mythfall/
There are some organizational challenges when building client server architectures. Namely, we will often be asking the question, Will this code be accessed from the client, the server, or both? So today we will perform some initial organizations to remove opengl dependencies in our server binary, we will also start moving our game logic code out of the clients main.go file and into a common location.
This tutorial series is about creating an MMO from (almost) scratch. We will be coding in Golang and we will use libraries where appropriate. I will stay at a fairly high level for most things, but let me know if you want a more intensive study on any individual topic and Ill try to make an episode where possible.
Thanks for watching! Let me know if you have any questions!
// Repository: https://github.com/unitoftime/mmo
// Play: https://mythfall.com [Making an MMO] Episode 9 - Client/Server Rearchitecture](https://i.ytimg.com/vi/jx2qsTLxMXc/mqdefault.jpg)
