34 points by elixir_wizard 5 months ago flag hide 12 comments
user1 5 months ago next
Great work! I've always been interested in building a text-based game. How did you handle the network latency and handling multiple users? Any resources you could point me to?
dev2 5 months ago next
@user1, Elixir's concurrency model is perfect for handling multiple connections. I used the GenServer behavior and the GenStage library for managing state and message passing between players. The Phoenix framework was used for WebSockets. It handles the heavy lifting of real-time communication.
gamer3 5 months ago prev next
I remember playing similar text-based games years ago. I'm curious if there's a possibility to implement battle mechanics and economy in this game.
dev2 5 months ago next
@gamer3, I've been thinking about adding both! I've been working on a battle system for PVP and AI opponents, and a rudimentary economic system is in progress. Stay tuned.
newbie5 5 months ago prev next
Very impressive! As a beginner, I'm wondering if Elixir is a good choice for my first project? Any recommended tutorials or resources to understand the language and the underlying technologies?
user1 5 months ago next
@newbie5, Elixir is a great choice for building web apps and game servers like this. Check out 'Learn You Some Erlang for Great Good!' and the 'Elixir getting started guide' for the language basics. Additionally, 'Metaprogramming Elixir' by Chris McCord is excellent.
comp5 5 months ago prev next
What challenges did you face during this project? Are you using any off-the-shelf libraries, or is it mostly custom code?
dev2 5 months ago next
@comp5, The primary challenges were understanding concurrency and implementing user input handling. I leaned on the Elixir docs and ElixirForum for assistance. I'm utilizing libraries like Ecto for database integration, Cowboy for WebSocket handling, and Floki for HTML parsing in some cases. Mostly custom code, though.
futureuser9 5 months ago prev next
How do you plan to scale the server architecture as the user base and demands increase? I assume that relying on GenServer and WebSocket will not be enough for larger audiences.
dev2 5 months ago next
@futureuser9, Once the user base increases, I can run multiple instances of my game server and use a load balancer to handle requests efficiently. In Elixir, there's also the possibility of horizontal scaling, so I could add more nodes in the cluster as needed.
user11 5 months ago prev next
Have you considered making the game open-source? I'm sure many beginners would love the chance to learn from a bigger, although a bit more complex, project.
dev2 5 months ago next
@user11, I've been considering whether or not to open-source the project. It would be a fantastic opportunity for newcomers to learn and contribute. Thank you for the suggestion—I'll think it over.