Elixir Wizards is an interview-format podcast, focused on engineers who use the Elixir programming language. Initially launched in early 2019, each season focuses on a specific topic or topics, with each interview focusing on the guest's experience and opinions on the topic. Elixir Wizards is hosted by Eric Oestrich and Sundi Myint of SmartLogic, a dev shop that’s been building custom software since 2005 and running Elixir applications in production since 2015. Learn more about how SmartLogic uses Phoenix and Elixir. (https://smartlogic.io/phoenix-and-elixir?utm_source=podcast)
ECS / Game Development with Elixir vs. Python, JavaScript, React with Dorian Iacobescu & Daniel Luu
In Episode 4, the Elixir Wizards are joined by Dorian Iacobescu, author of the ECSpanse ECS library for Elixir, and Daniel Luu, founder and CEO of the game development studio AKREW. The guests compare notes on backend game development using ECS, the Entity Component System approach.
Akrew is currently building the multiplayer game Galactic Getaway using the Photon Unity networking framework, which employs ECS. They discuss challenges like collections of component types and persistence beyond runtime, building games for various platforms like MacOS, and handling inventory storage in a backend database.
Game development is complex and has many technical hurdles, but open communication across different programming communities and game development approaches can foster collaboration, innovation, and continued learning.
Topics Discussed in this Episode
- Dorian explains the ECSpanse ECS library and component-based architecture
- Dorian took inspiration for ECSpanse from the Rust library Bevy ECS and its component-based API
- The guests discuss popular game development platforms and languages, including C#, JavaScript, and Godot
- Owen and Daniel translate ECS concepts to familiar database and backend terminology for devs without game-specific experience
- ECSpanse uses many tools from the Elixir Erlang toolbox, including GenServers, ETS tables, tasks, queries, and Phoenix LiveView
- ECS challenges representing inventory collections that broke typical ECS singleton patterns
- AKREW is developing Galactic Getaway using the Photon Unity framework
- Relationships between parent and child entities in ECSpanse
- Persistence, serialization, and replay features to save game state
- Optimizing assets and code for performance on various devices
Links Mentioned
https://en.wikipedia.org/wiki/Entity_component_system
https://iacobson.medium.com/elixir-for-fun-ecspanse-2852a7993ecd
https://hexdocs.pm/ecspanse/Ecspanse.html
https://bevyengine.org/learn/book/getting-started/ecs/
https://www.photonengine.com/quantum
Add Galactic Getaway to your Steam Wishlist: https://store.steampowered.com/app/2012390/Galactic_Getaway/
https://godotengine.org/
https://unity.com/
https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html
https://www.tiktok.com/@galacticgetaway
https://docs.rs/bevy_ecs/latest/bevy_ecs/
Special Guests: Daniel Luu and Dorian Iacobescu.