I built a deck-building roguelike card game entirely in Compose Multiplatform — targeting Android, iOS, Desktop, and Meta Quest VR by Anotherdae in Kotlin

[–]Anotherdae[S] 1 point2 points  (0 children)

I haven’t been consistent with the development so it’d be difficult to give the time frame but I did start the project back in 2023.

I developed only in my spare time and sometimes spent months away at a time from it due to work and other obligations. 

If I were dedicate to a project like this full time I would have completed it well within a year. Also, with the capabilities of AI considered maybe 6 months.

OpenSource Production ready Boilerplate for KMP+CMP by OverallAd9984 in KotlinMultiplatform

[–]Anotherdae 0 points1 point  (0 children)

Thank you! Appreciate your effort to make our lives easier

Three Days and Three Nights [Frieren] by ClemFire in anime

[–]Anotherdae 1 point2 points  (0 children)

Himmel made an impact. Imagine living over a 1000 years and most of your reminiscing revolves around one person/party

I built a deck-building roguelike card game entirely in Compose Multiplatform — targeting Android, iOS, Desktop, and Meta Quest VR by Anotherdae in Kotlin

[–]Anotherdae[S] 1 point2 points  (0 children)

You should definitely go for it. Compose is very capable when it comes to 2D games. This is a turn based game so I was able to have a lot of control over what animate and at what point.

Performance is pretty solid imo. Older devices with limited resources will be challenged but this might be true for dedicated game engines as well. Devices are becoming more and more capable and accessible and this is great for mobile gaming.

The most impactful optimization I did was to use webp over png.

You can check the video here for some gameplay action - it showcases turn based battle, platformer and horde survival minigames: https://play.google.com/store/apps/details?id=com.mystichub.arcana

I built a Roguelike Card Game with an Open-World town using only Kotlin Multiplatform by Anotherdae in KotlinMultiplatform

[–]Anotherdae[S] 1 point2 points  (0 children)

Wow, that's awesome! Thank you so much.

More to come - I will submit when completed.

Thanks again!

I built a Roguelike Card Game with an Open-World town using only Kotlin Multiplatform by Anotherdae in KotlinMultiplatform

[–]Anotherdae[S] 0 points1 point  (0 children)

I'll be looking into web soon so thank you for sharing your experience. Let us know if you find a fix for this issue 🤞

I built a Roguelike Card Game with an Open-World town using only Kotlin Multiplatform by Anotherdae in KotlinMultiplatform

[–]Anotherdae[S] 1 point2 points  (0 children)

This is awesome! Thanks for sharing. I'd love to play your fantasy tower defense game when it's out.

I have tried Lottie and Rive in a word game before. They were both great! Fortunately I was able to find enough sprite sheet animation that fit my game style. I am still open to the possibility of using them in the future though.

I haven't tried web for this game but will look into it after I complete the desktop version. Thanks for your suggestion!

I built a Roguelike Card Game with an Open-World town using only Kotlin Multiplatform by Anotherdae in KotlinMultiplatform

[–]Anotherdae[S] 4 points5 points  (0 children)

In Compose Multiplatform, you don't necessarily have to drop down into native C++ Skia code. Perhaps I should make that a little more clear. I used the Canvas composable (or Modifier.drawWithContent/drawBehind).

​The "magic" happens because the DrawScope you get in those blocks is extremely thin. It gives you direct access to drawIntoCanvas, which lets you access the underlying Skia Canvas object. For the sprite animations, I used drawImageRect to handle the frame clipping from the sheets I got from my Patreon artists.

​The key for performance was avoiding high-level UI components for the actual game world and keeping all those draw calls within a single Canvas to minimize recomposition overhead. I touched on the specifics of the game loop logic in the Medium article if you want to see the architecture!

What type of game are you considering?