Rust, Bevy game engine, and Data-Oriented Design
SummaryRob is learning Rust, and feels like he's total beginner again. Rust's concept of ownership and its handling of strings are just different than any other language he has worked with, but JD ensures him that this is how everyone feels when starting with Rust...JD spent the last week working on their game, starting with rewriting everything. He explored using a game engine instead of React for the visualization, and really likes the approach. He set up the new game engine Bevy, and hacked around to integrate it with a gRPC API. One problem he didn't anticipate is that querying state in the game can only happen during the game's core loop. Running at 60Hz, this means any API request takes at least 16ms. 😫 This will require some research in the future...Diving deeper and deeper into game design and development, JD is amazed and inspired by the experience of the community. Looking specifically at user experience and Data-Oriented Design. For anyone who's interested in this, here are a few talks JD watched this week:- Understanding Data-Oriented Design for Entity-Component-Systems (Unity at GDC '19)- Building a Data-Oriented Future - Mike ActonAnd here are the two blog posts mentioned in the episode:- Introducing Bevy- Specs and Legion, two very different approaches to ECSSorry for the audio quality in this episode. We had a small technical glitch and lost one of the high-quality recordings.Stay in touchWebsite: https://www.devnlife.comJan David: https://twitter.com/0x6a64Rob: https://twitter.com/RobPando
Open Source, Community, and Monetization
SummaryRob is back home after a stressful trip to renew a passport. For JD it was the first week after his vacation, and he had to readjust to work again. He also wanted to shape some work after their discussion in the last episode, but didn't manage to get as far as he hoped. JD wonders if it makes more sense to focus on game development, or invest equally in building up a community around the project. Rob's concerned that someone might steal their work, and is not too enthusiastic about the idea of open source. The two start a long discussion around this, diving into the pros and cons of open source, the difficulties of monetization, and their fears and concerns regarding the success of the project.Stay in touchWebsite: https://www.devnlife.comJan David: https://twitter.com/0x6a64Rob: https://twitter.com/RobPando
Rust, Singleplayer vs. Multiplayer, and a First Sprint
SummaryRob and JD catch up after their last episode on Shape Up. Rob has been studying game engines, and bought a Rust course. JD just watch the talk Bending the Curve from RustConf, in which Esteban Kuber talks about the difficulty teaching Rust to experienced programmers, and shares how it is necessary to unlearn certain assumptions from other programming languages.JD has been thinking a lot about how to really start the project he wants to do with Rob. Both are freaking out a little bit given the complexity of the goal they set themselves. JD expects a lot of research ahead of them, while Rob fears that this might demotivate him. The two discuss ways how to reduce the risk, and get to a playable prototype as fast as possible. This puts many earlier ideas into questions, and brings back a discussion about game engines and multiplayer. The two discuss building a singleplayer game first, and only if it is successful start working on multiplayer. But with so many unknowns, they probably simply have to start and learn more about their project before making such a choice.Special shout outsPassionate game developers mentioned in the podcast and their most recent games:Ryan Ford https://ryanford.itch.io/goobers-in-the-mix Cody Loyd https://codyloyd.itch.io/bugStay in touchWebsite: https://www.devnlife.comJan David: https://twitter.com/0x6a64Rob: https://twitter.com/RobPando
Shape Up for a Two Person Team
SummaryYEAR 1 ANNIVERSARY! Rob and JD totally forgot that they released their first episode one year ago, and didn't prepare anything special...Rob has been reading Shape Up by Basecamp, and the two start discussing its content. Rob got hooked when he read that Basecamp doesn't keep a backlog. (And he now wonders how the Hey support team passes feature requests to the developers.) For JD, the concept of Fixed Time, Variable Scope resonated the most. Regarding backlogs, he thinks it is really helpful to reset every few weeks and ask what is most relevant now instead of blindly following a backlog that was created weeks or even months ago.Rob is still not convinced that it is worth taking the time to shape ideas, instead of just going ahead and implementing them. JD on the other hand thinks the more planning upfront the better, as it allows to focus on execution later on. Rob is afraid that shaping is unproductive and takes time away from implementation and demotivates, while JD hopes they learn how to become efficient in planning and reducing risk upfront to then enjoy the coding more.JD wrote a blog post covering the first feature the two are thinking about implementing, which can be found here https://jandavid.co/turtles-all-the-way-down-2 and here https://dev.to/jdno/turtles-all-the-way-down-10on.Stay in touchWebsite: https://www.devnlife.comJan David: https://twitter.com/0x6a64Rob: https://twitter.com/RobPando
Games, Prototypes, and gRPC
SummaryRob is back after moving to Austin, Texas! And JD survived a heatwave in Europe that made it very tough to be productive. Nonetheless, JD managed to think more about the game he wants to build. And he set up a prototype with some technologies he is interested in exploring. To get Rob up to speed, he introduces the game Screeps, which is an MMO strategy game for programmers and an inspiration. From there, the discussion turns into a general reflection on video games, and what will be important for their game.JD then shares his vision for the game's technical architecture, consisting of a game engine, the player's code, and a UI at the minimum. For the game engine, JD is thinking about writing it in Rust. It's fast, has good memory management, but it is still young and the comparatively small ecosystem might make things more complicated. For the UI, JD wants to go with React since that runs almost anywhere. And finally for the API between the engine, the UI, and the player's code, JD was considering a REST interface, GraphQL, or gRPC. JD really likes the features of gRPC, and intents to use it in the prototype.Feeling a little bit overwhelmed by the complexity of designing a game, the two discuss a good strategy to get started with a very small feature. One idea is to generate events, and have the player react to them. This could be easily implemented without the need for a feature rich UI or advanced rules in the backend.Stay in touchWebsite: https://www.devnlife.comJan David: https://twitter.com/0x6a64Rob: https://twitter.com/RobPando