Starting to share bits and pieces of my game, Gun Trails
will write up more tech details later; but a quick summary
- runs (easily) at 50hz on device, limited by the systems full-redraw limit
- written in C99, no external libraries, outside of the playdate SDK used
- within the SDK, most things are not used(sprites, collision etc), in favor of a faster, hand rolled implementation
feel free to ask questions
edit: the game has evolved since this original post, I now plan to release it paid on catalog and/or itch.io
some fun background experiments
here is a slowed down gif as well (I didnt slow it down on purpose, I just dont know how to use ffmpeg right lol)
Great art! Definitely doesn't look like something that ought to be free!
playing with some menu transitions
(re-upload as ffmpeg smites me for my hubris)
got some love from a publication today: DoDonPachi-Inspired Shmup 'Gun Trails' Coming Exclusively To Playdate This July | Time Extension
pretty neat! as far as the release date goes, I hope its within the next month, but I can't promise,
preview of one of three phases for boss #1 https://twitter.com/superfunc/status/1630051680422342656?s=20
keep an eye out for the trailer coming out this week on https://twitter.com/TYMplaydateshow !!!!
Yeah, things have evolved a bit over the last few months, and after talking with Panic and some other people I plan to release it for a fee on itch and possibly catalog.
This is a bit old, but I forgot to share about the port from Lua to C a few months ago. May be of use to others when making evaluations.
Rarely have I had the time for an apples-to-apples port. This was going from well optimized Lua
- Running at ~49fps
- Lua specific optimizations (consts, avoiding global lookups etc)
- Access pattern oriented data layout
- Custom collision detection (faster than the provided AABB)
- Zero runtime user allocation (all memory managed internally, notice flat memory line and constant GC %))
That said, I was hitting the ceiling, and I still had a few more features I was hoping to cram in, so I did a direct port to C99 (I wasn’t using any fancy metatable stuff in lua, just records, arrays, and functions, so it really was as 1-1 as it could be).
This is just one codebase, one data point, so evaluate accordingly. That said, this will hopefully serve as a useful data point for the kind of possible gains wrt porting.
cc @matt may be useful for your perf write-ups/book
edit: for those curious about the memory usage difference, this is because, in Lua, fundamental types are all 4 bytes in Lua, whereas in C, appropriately sized types can be used (uint8_t, int16_t for example)
this memory usage has a impact on cpu performance as well, smaller data => more data per cacheline => faster computation
Wonderful, thanks for sharing.
I guess full screen height update limits you to 49/50. I wonder how high you'd be able to go without the screen bottleneck?
On the current build, I'm floating at 65-75% CPU at ~49.5fps (slight tick up in recent SDK update), so I figure current frame time is about ~15ms, so it could possibly go ~65fps if the limiting factor was removed. Worth noting the version I'm speaking on here has had its featureset grown significantly since the referenced image, so not 1-1 with those two graphs).
cc @willco on this one
data may be useful when providing guidance to devs wrt Lua/C, since (afaik) havent been any documented 1-1 ports
Out of interest, what were you able to change in your custom implementations that was so much faster than the default SDK versions?
heh, probably not something I could fit in a single post. i'll try to do a longer write up of this some time after launch.
A not-so-flashy update
But I found another optimization that shaved a good ~3% of dcache capacity today
I put it on twitter, I'm aiming to be wrapped on 4/24 with the game for people curious. When it comes out depends on if I get accepted into the catalog.
Just popped in to say this is my most anticipated game for playdate by far! Really looking forward to getting this when it comes out, awesome work so far!
looks like itll be in a catalog release around early june
date is locked in
Gun Trails, coming to catalog 7/18/23
Thanks to everyone for your patience!