[data::loss] by ewpratten
[data::loss] is a fast-paced side-scroller platforming game where you navigate a world full of graphical inconsistencies that have a habit of causing physical consequences.
This game was written purely in Rust, and interfaces with bindings to the raylib graphics library. For half the team, this has been their first experience with Rust. The other half have extensive experience in the language.
The Team
This game was developed by a team of 9 students from Sheridan College and Trent University.
- Evan Pratten
- Team lead
- Software developer
- Graphics library maintainer
- Other LD games: Micromanaged Mike, Deep Breath
- Carter Tomlenovich
- Software developer
- Marcelo
- Software developer
- Level design
- Luna Sicardi
- Software developer
- UI design
- Emilia Frias
- Character art
- Animations
- Kori
- Concept art
- Tilesets
- J.J.
- "Composer? I hardly know her!"
- Playtesting
- James Feener
- Playtesting
- Taya Armstrong
- Playtesting
A special thanks goes out to: James Nickoli for insight on 2D collision detection, as well as Ray and the members of the raylib community on discord for their support with the past two game jam projects.
Ratings
| Overall | 353th | 3.806⭐ | 20🧑⚖️ |
| Fun | 789th | 3.389⭐ | 20🧑⚖️ |
| Innovation | 1043th | 3.028⭐ | 20🧑⚖️ |
| Theme | 78th | 4.333⭐ | 20🧑⚖️ |
| Graphics | 162th | 4.333⭐ | 20🧑⚖️ |
| Audio | 151th | 3.972⭐ | 20🧑⚖️ |
| Humor | 586th | 3.194⭐ | 20🧑⚖️ |
| Mood | 299th | 3.833⭐ | 20🧑⚖️ |
| Given | 10🗳️ | 0🗨️ |
How would you rate experience working with rust for game development? And is it suitable for game development during jams, where fast iteration on ideas is needed?
My only issues is that it is hard for me to tell what is a platform and what will kill me. Maybe telegraph that with a different color for killable platforms?
Thanks for the experience!
It could use a better way to tell you which platforms will kill you and which platforms won't.
Overall a very good game!
Game plays pretty well, movement is pretty nice. As others have mentioned the difficulty is up there and it's definitely frustrating. I made it through the first lvl and to about half way on the second and that was enough for me. One thing that would be real nice is an immediate reset. Often I knew I'd fucked up and just wanted to start again but had to wait to collide then use the mouse to click restart. A restart shortcut would be really nice and make the gameplay less stilted in an environment where many cycles is inevitable.
Overall this is a great game, the art and music is awesome, and there's a good dose of humor and sass to the game.
Awesome job!!
Anyways, neither the Linux build nor the Windows build (using Wine) seems to be working for me, unfortunately.
Anyways, this game does **not** work with Wine, but feel free to send me an email to mail@va3zza.com and I can help you get it up and running on linux.
I personally love rust in game development. Mainly because of a mix of the heavily standardized library ecosystem, and how incredibly easy it is to cross-compile to other platforms. I develop on linux, and to create the windows builds, I just have to run a single command:
```
cross build --release --target x86_64-pc-windows-gnu
```
No extra work to install and manage another system's toolchain, and (almost) no cross-platform issues.
I think the only part of the distribution side of developing in rust that could be improved is tools for code signing. I would love to be able to generate signed windows builds for everyone (maybe in LD50?)
The builds are also *fast*. It is pretty hard to create something in rust that will have unplayably slow framerate. Although this game does have some framerate issues, but that's due to a decision of mine to let some newer programmers do some less-than-ideal computations for the sake of learning, at the cost of speed.
In terms of weather Rust is suitable for the fast-paced environment of a game jam, I will say yes. As long as you have a CI pipeline (GitHub Actions for us) and a team who can use git well, everything goes very smoothly. The strict compiler has the benefit of ensuring that whenever one of us picks up someone else's work, the code will function exactly how we expect, and the compiler/clippy will report anything that needs critical work.
Another major point that I thought of last night when we first read your comment is that, this is now the second game jam game I have worked on where most of the team went in with minimal or no rust experience, and managed to simultaneously pick up a new language, and produce a high quality game.
I don't think I have ever worked on another project in another environment that can match how easy it was to pick up rust (my first big rust experience was in LD48 too). The common comments that have come from my teammates across LD48 and LD49 is "the initial learning curve is very hard, but once you pass it, everything goes smoothly".
I agree with this. I have a habit of describing Rust's learning curve to people as "a brick wall". This is mainly because of the completely different though process the borrow checker forces on you as a programmer.
Anyways, to sum that all up, I'll be using Rust again in LD50.