UnitOfTime
[E11 MMO Dev Livestream] Making Client and Server Systems
updated
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
Music by: open.spotify.com/artist/6GTRLqqiBPUqaOgyxOraHp
// Description
Mythfall is a fast-paced bullet hell MMO where skill and strategy determine survival. Battle relentless monsters, loot powerful gear, and grow stronger as you fight to defend your homeland from the mighty wizard Alivarg. Face deadly bosses, forge alliances, and carve your legacy in a world where every fight could be your last.
We currently have a pre-alpha demo on our website. You can play directly in your browser!
Face Relentless Bosses
Every boss fight is a high-stakes showdown where survival is never guaranteed. Dodge waves of relentless projectiles, exploit attack patterns, and unleash your best abilities in a test of pure skill. One mistake could end your journey for good. Will you rise above the chaos, or will you fall like so many before you?
Hunt, Gather, Craft, Conquer
Every battle earns you resources: Rare materials, essences, and legendary drops. Forge powerful gear, enhance your abilities, and shape your character to survive this unforgiving world. The stronger you become, the deadlier your enemies - but every victory brings you one step closer to mastery.
Rise Stronger with Every Fall
Death isn’t the end - it’s a step toward greatness. Every time you fall, you earn Honor Points, unlocking account-wide progression that makes your next journey even stronger. Level up your legacy, unlock powerful bonuses, and prove your resilience. True strength isn’t measured by how long you last, but by how much you grow with every rebirth.
Other Features
Cooperative Multiplayer: Team up with friends or meet fellow adventurers in a world where cooperation is key.
Diverse Skills: Complete quests to earn skill points and refine your build for ultimate power.
Character Customization: Personalize your character with a variety of haircuts, colors, and cosmetics to stand out in the world.
Complete Achievements: Earn achievements and unlock exclusive chat badges to showcase your victories.
Openly Developed: Mythfall is actively developed with frequent developer livestreams and regular devlog updates, giving you an inside look at the game’s progress. Join the community, share your feedback, and watch as we shape the world together!
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Core Keeper. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Play: mythfall.com
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Core Keeper. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Play: mythfall.com
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Core Keeper. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Play: mythfall.com
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Play: mythfall.com
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Music
1. StreamBeats: streambeats.com
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Play: mythfall.com
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Music:
1. StreamBeats: streambeats.com
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Play: mythfall.com
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Music:
1. StreamBeats: streambeats.com
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Links:
1. github.com/traefik/yaegi
2. https://pkg.go.dev/plugin
3. github.com/hashicorp/go-plugin
4. github.com/edwingeng/hotswap
5. github.com/air-verse/air
// Music:
1. StreamBeats: streambeats.com
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Links:
1. youtube.com/watch?v=d8cfgcJR9Tk
2. github.com/Chlumsky/msdf-atlas-gen
3. redblobgames.com/x/2404-distance-field-effects
4. redblobgames.com/x/2404-distance-field-effects/distance-field-effects.js
5. rfleury.com/p/ui-series-table-of-contents
6. reddit.com/r/pygame/comments/xhc4fa/rectcut_for_dead_simple_ui_layouts
7. github.com/ocornut/imgui
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Sebchoof
⁍ Channel: youtube.com/@sebchoof
⁍ Mythfall Video: youtube.com/watch?v=SipIVsXC8cw
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// Description
This week I talk about the current state of Mythfall and all the features I've recently added. Mythfall is a bullet hell browser MMO inspired by games like Realm of the Mad God, Archvale, Enter the Gungeon, and Binding of Isaac. My goal is to make a game with interesting build combinations, and fun, replayable dungeons.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// References
⁍ Boris the Brave: boristhebrave.com/2019/07/28/dungeon-generation-in-enter-the-gungeon
⁍ Planarity: jasondavies.com/planarity
⁍ Force Directed Graph Drawing: en.wikipedia.org/wiki/Force-directed_graph_drawing
// Description
This week I worked rewrote my dungeon generation algorithm to support multiple room sizes and a more natural layout.
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
// References
⁍ Cod Package: github.com/unitoftime/cod
// Description
This week I worked on scaling my game to 100 players. I ended up writing my own code generation package to generate my serialization code. The game is handwritten in Go.
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
⁍ Play: mythfall.com
// References
Continuous Profiling: medium.com/google-cloud/continuous-profiling-of-go-programs-96d4416af77b
// Description
I wanted to add account progression, but to do that I first need user acounts! So this week I worked on adding that. I'm using OAuth for authentication, and then Redis to store user data internally. The game is handwritten in Go.
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
⁍ Play: mythfall.com
// References
Pixelliverse Loot: zrghr.itch.io/pixel-art-loot-pixelliverse
// Description
This week I added item abilities! This made the game a lot more interesting interesting because now there's a few different builds you can go for when you journey through a dungeon! I also added 20 new items. The game is handwritten in Go.
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
⁍ Play: mythfall.com
// Description
This week I optimized my networking in two ways. First I added vision based culling so that I could scale the world size without increasing packet size. And second I did some optimizations and bitpackings to reduce individual component serializations. The game is handwritten in Go.
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
⁍ Play: mythfall.com
// Description
This week I added new weapons, monsters, and walls for the dungeon! The game is handwritten in Go.
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
⁍ Play: mythfall.com
// Description
This week I added dungeons! The game is handwritten in Go.
// Chapters
0:00 - Intro
0:30 - Instances
1:30 - Portals
1:42 - Generation
2:43 - Boss?
3:08 - Boss!
3:34 - Thanks!
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
⁍ Play: mythfall.com
// References
⁍ Redblobgames: redblobgames.com/articles/probability/damage-rolls.html
// Description
This week I added lootbags to my game! The game is handwritten in Go.
// Chapters
0:00 - Intro
0:12 - Cleanup
1:50 - Loot!
2:22 - Inventory System
2:48 - Loot Bags
3:20 - Loot Tables
3:52 - Thanks!
// Credits:
Music by bensound.com/free-music-for-videos
License code: AU8THTN70N7JNYCE
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
⁍ Play: https://unit.dev/mmo
// References
⁍ Archvale: store.steampowered.com/app/1296360
⁍ 0x72 Assets: 0x72.itch.io
⁍ LDTK: ldtk.io
// Description
This week I worked on making my mmo look better. I added a lot of special effects and added some better artwork in from an asset pack. The game is handwritten in Go.
// Keyword Testing
Unity
Pixel Art
2D Art
Game development
Programming
C#
Game design
3D modeling
Animation
Physics engine
Asset store
Level design
Scripting
Visual effects
Game engine
User interface
Character design
Sound design
Gameplay mechanics
Artificial intelligence
Multiplayer
Game optimization
Mobile game development
Virtual reality
Augmented reality
Cross-platform development
User experience
Game controller support
Game monetization
Object-oriented programming
Code optimization
Particle systems
User input
Game analytics
Game testing
Animation curves
Cinemachine
NavMesh
Post-processing
State machines
Timeline
Lighting
Unity Collaborate
Unity Hub
Unity Services
Unity Remote
Unity Recorder
Unity Test Runner
Unity Analytics
Unity Ads
Unity Cloud Build
Unity ML-Agents
ChatGPT
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
⁍ Play: https://unit.dev/mmo
// References
⁍ Archvale: store.steampowered.com/app/1296360
⁍ 0x72 Assets: 0x72.itch.io
⁍ LDTK: ldtk.io
// Description
This week I worked on making my mmo look better. I added a lot of special effects and added some better artwork in from an asset pack. The game is handwritten in Go.
// Keyword Testing
Unity
Pixel Art
2D Art
Game development
Programming
C#
Game design
3D modeling
Animation
Physics engine
Asset store
Level design
Scripting
Visual effects
Game engine
User interface
Character design
Sound design
Gameplay mechanics
Artificial intelligence
Multiplayer
Game optimization
Mobile game development
Virtual reality
Augmented reality
Cross-platform development
User experience
Game controller support
Game monetization
Object-oriented programming
Code optimization
Particle systems
User input
Game analytics
Game testing
Animation curves
Cinemachine
NavMesh
Post-processing
State machines
Timeline
Lighting
Unity Collaborate
Unity Hub
Unity Services
Unity Remote
Unity Recorder
Unity Test Runner
Unity Analytics
Unity Ads
Unity Cloud Build
Unity ML-Agents
ChatGPT
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Patreon: patreon.com/UnitOfTime
⁍ Github: github.com/sponsors/unitoftime
⁍ Twitter: twitter.com/UnitOfTime
⁍ Play: mythfall.com
// References
⁍ Archvale: store.steampowered.com/app/1296360
⁍ 0x72 Assets: 0x72.itch.io
⁍ LDTK: ldtk.io
// Description
This week I worked on making my mmo look better. I added a lot of special effects and added some better artwork in from an asset pack. The game is handwritten in Go.
// Keyword Testing
Unity
Pixel Art
2D Art
Game development
Programming
C#
Game design
3D modeling
Animation
Physics engine
Asset store
Level design
Scripting
Visual effects
Game engine
User interface
Character design
Sound design
Gameplay mechanics
Artificial intelligence
Multiplayer
Game optimization
Mobile game development
Virtual reality
Augmented reality
Cross-platform development
User experience
Game controller support
Game monetization
Object-oriented programming
Code optimization
Particle systems
User input
Game analytics
Game testing
Animation curves
Cinemachine
NavMesh
Post-processing
State machines
Timeline
Lighting
Unity Collaborate
Unity Hub
Unity Services
Unity Remote
Unity Recorder
Unity Test Runner
Unity Analytics
Unity Ads
Unity Cloud Build
Unity ML-Agents
ChatGPT
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Twitter: bit.ly/UnitOfTimeOnTwitter
⁍ Play: https://unit.dev/mmo
⁍ Github: github.com/unitoftime
// Description
This is a brief overview of how stairs work in top down 2d game worlds. We can make the game look more 3D by simply adding a small Y bias as the player moves up and down stairs, making it look like they are climbing up, when in reality they are only moving diagonal.
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Twitter: bit.ly/UnitOfTimeOnTwitter
⁍ Play: mythfall.com
⁍ Github: github.com/unitoftime
// References
⁍ Ebitengine: ebitengine.org
⁍ Javascript EventLoop: youtu.be/cCOL7MC4Pl0
// Description
This week I implemented a wave defense mode, improved the collision detection by using spatial hashes, and struggled through some performance problems in Firefox.
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Twitter: bit.ly/UnitOfTimeOnTwitter
⁍ Play: mythfall.com
⁍ Github: github.com/unitoftime
// Articles
⁍ Left (Sander Mertens): ajmmertens.medium.com/doing-a-lot-with-a-little-ecs-identifiers-25a72bd2647
⁍ Right (Michele Caini): skypjack.github.io/2019-05-06-ecs-baf-part-3
// Description
This week I worked on improving the rendering pipeline of our game, including doing better mesh caching and also adding a minimap. After that I wanted to make my deployments easier, so I ported my deployment system to Docker and Docker Compose. Lastly I added some service health monitoring and dashboarding with Prometheus and Grafana. Enjoy!
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Twitter: bit.ly/UnitOfTimeOnTwitter
⁍ Play: mythfall.com
Since I haven't been keeping up with a devlog on my MMO project, I figured I'd make a video covering approximately the last year of development building an MMO. I'm hoping to make devlog updates more frequently, so stay tuned for that. Also, I didn't really cover it in the video, but I decided to flesh out my OpenSource repo into a full game. So I'll be building the remaining portion of the MMO on a private repo. That said you can still find the point at which I forked here:
⁍ github.com/unitoftime/mmo
I'll also be maintaining some general open source libraries on GitHub. You're more than welcome to use them. But most are still a work in progress:
⁍ github.com/unitoftime
// Socials
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Twitter: bit.ly/UnitOfTimeOnTwitter
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Play: mythfall.com
// Code
⁍ MMO Project: github.com/unitoftime/mmo
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: bit.ly/UnitOfTimeOnTwitter
⁍ Discord: discord.gg/63YeahMKfJ
// Code
⁍ Go Code: github.com/unitoftime/ecs/blob/master/bench/main.go
⁍ Rust Code: github.com/unitoftime/experiments/blob/master/ecs/rust/src/main.rs
// Good Article
⁍ PlanetScale: 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 aren't 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, I'm 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, I'm not sure the limitation there, but I thought it was notable.
c. Bevy isn't the fastest Rust ECS framework according to this: 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 didn't 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."
Full Video: youtu.be/ZuVyxnpMZO4
Don't mind me. Just testing out YouTube shorts.
#shorts
This is a quick introduction to Entity Component System Framework design. Specifically focused on how I built and implemented mine. There's a few interesting challenges with cache coherency, entity management, and entity filtering to tackle; so let's take a look!
Articles about building ECS frameworks
⁍ ajmmertens.medium.com/building-an-ecs-1-where-are-my-entities-and-components-63d07c7da742
⁍ skypjack.github.io/2019-02-14-ecs-baf-part-1
Other links
⁍ Twitter: bit.ly/UnitOfTimeOnTwitter
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Code: github.com/unitoftime/ecs
⁍ Twitter: bit.ly/UnitOfTimeOnTwitter
⁍ Discord: discord.gg/63YeahMKfJ
⁍ Wishlist Spruce: bit.ly/SpruceOnSteam
⁍ Code: github.com/unitoftime/experiments/tree/master/lit
Thanks for watching. Happy to answer any questions!
I was curious how the performance of Golang is impacted by using libraries through CGO. Specifically I wanted to see how the performance drops when I use OpenGL in Golang instead of C++. So I wrote a benchmark similar to bunnymark in Go and C++ to compare average frame times.
⁍ Twitter: bit.ly/UnitOfTimeOnTwitter
⁍ Discord: discord.gg/63YeahMKfJ
Thanks for watching. Happy to answer any questions!
⁍ Wishlist: store.steampowered.com/app/3475620/Mythfall
⁍ Twitter: bit.ly/UnitOfTimeOnTwitter
Thanks for watching. Happy to answer any questions!
Today we explore the basic concepts behind proxy servers: What they are and why they are used. We will discuss the major implementation details of our proxy as well as tout some of the benefits of hiding our game server behind a custom written reverse proxy.
⁍ Series: youtube.com/playlist?list=PL_r0j2F4Hkj-Grm05K5lCOd6yaeeSAaY2
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 I'll try to make an episode where possible.
Thanks for watching! Happy to answer any questions!
// Repository: github.com/unitoftime/mmo
// Play: mythfall.com
Today we will talk about how I used Go's channel concurrency primitive to merge data received from the network into our main set of data used by our game loop.
⁍ Series: youtube.com/playlist?list=PL_r0j2F4Hkj-Grm05K5lCOd6yaeeSAaY2
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 I'll try to make an episode where possible.
Thanks for watching! Happy to answer any questions!
// Repository: github.com/unitoftime/mmo
// Play: mythfall.com
Today we talk about the networking code we wrote in the livestreams to create a networked physics simulation. Specifically, we added both a client and server receive thread for each application. In the main game-loop thread, we create client and server "send Update" systems. Then connected them together with websockets. Enjoy!
⁍ Series: youtube.com/playlist?list=PL_r0j2F4Hkj-Grm05K5lCOd6yaeeSAaY2
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 I'll try to make an episode where possible.
Thanks for watching! Happy to answer any questions!
// Repository: github.com/unitoftime/mmo
// Play: mythfall.com
Today we reorganize some more! The last reorganization (for now) is to add all of our client specific logic into shared packages so that both the client and server can share code when building their physics simulation. That said, input handling and rendering will still remain "client specific". Finally, we built a common struct which will represent our system. This way we can dynamically build arrays of systems and execute them as needed in our game loop.
⁍ Series: bit.ly/MakingAnMMOPlaylist
⁍ VOD: youtu.be/_-Rt3IEZYL4
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 I'll try to make an episode where possible.
Thanks for watching! Happy to answer any questions!
// Repository: github.com/unitoftime/mmo
// Play: mythfall.com
Today we reorganize our GameObjects into an "Entity-Component-System" (ECS) framework. But first to do that, we will build our very own (and incredibly slow ECS framework).
⁍ Series: youtube.com/playlist?list=PL_r0j2F4Hkj-Grm05K5lCOd6yaeeSAaY2
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 I'll try to make an episode where possible.
Thanks for watching! Happy to answer any questions!
// Repository: github.com/unitoftime/mmo
// Play: mythfall.com
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 client's 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 I'll try to make an episode where possible.
Thanks for watching! Let me know if you have any questions!
// Repository: github.com/unitoftime/mmo
// Play: mythfall.com
Today's episode begins the journey of adding online infrastructure to our game. We will start with creating a basic server binary who will host a websocket server, then our client will dial that websocket server and send some data.
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 I'll try to make an episode where possible.
Thanks for watching! Let me know if you have any questions!
// Repository: github.com/unitoftime/mmo
// Play: mythfall.com
Today's episode improves upon the terrain generation we built in Episode 6. We do this in two ways: We overlay OpenSimplex noise at multiple frequencies to make our land look more natural. We also add an "islandification" function which turns our terrain into a single, large island.
This tutorial series is about creating an MMO from (almost) scratch. We will be coding in Golang and we will use libraries where possible/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 I'll try to make an episode where possible.
Thanks for watching!
Techniques from: redblobgames.com/maps/terrain-from-noise
// Repository: github.com/unitoftime/mmo
// Play: mythfall.com
Today's episode is about the basics of using OpenSimplex noise to generate a basic terrain for our game.
This tutorial series is about creating an MMO from (almost) scratch. We will be coding in Golang and we will use libraries where possible/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 I'll try to make an episode where possible.
Thanks for watching!
Techniques from: redblobgames.com/maps/terrain-from-noise
// Repository: github.com/unitoftime/mmo
// Play: mythfall.com


