Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411423 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 06:50:52 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogs◎ Ring of Worlds ◎ Digital Card Game
Pages: [1]
Print
Author Topic: ◎ Ring of Worlds ◎ Digital Card Game  (Read 673 times)
Schmolt
Level 0
*



View Profile
« on: October 28, 2018, 04:10:23 AM »



Put runes on the ring to unlock their devastating potential.
Be careful though, for they will tear this world apart.




Ring of Worlds is a digital card game based on the things I love about physical card games. It's a highly interactive back-and-forth that plays like Magic's stack turned up to 11. The game comes down to working out the odds, reading, baiting, bluffing and praying that their last card isn’t a Fireball.

The latest build supports quickplay, private matches, AI matches, replays and spectating. My focus right now is on improving the aesthetics/gamefeel. It's open source on GitHub which should be interesting reading as it's written in Haskell and Elm.



Thanks for reading this far, all feedback welcome!

◎ Play for free on the web ◎
◎ Join the community ◎
◎ Check out the source ◎
« Last Edit: June 01, 2019, 09:17:18 AM by Schmolt » Logged
Schmolt
Level 0
*



View Profile
« Reply #1 on: November 03, 2018, 05:51:04 AM »

This week I’ve worked on creating a basic signup form and made lots of visual tweaks. There’s not much to talk about here, so I’ll take the opportunity to discuss the game engine.

The game uses a custom scripting language for card effects and rules. Interpreting the language doesn’t just update the game state on the server, it also generates a list of state diffs and animations for the client.

The scripting language can also be modified on the fly, which is a great way to implement effects that change other effects. For example, the card “Sickness” changes all healing to do damage instead, so it simply replaces all healing with damage in the scripts it cares about.

This approach has proved to be really powerful. Not only is it easy to write cards with complex effects and animation logic, it’s also made game replays trivial to implement. Replays are just an initial state paired with a list of all the state diffs and animations in the game.

The great thing about Haskell is that it gives a lot of this stuff “for free” using Free Monads. The custom language is embedded in Haskell itself so gets all of Haskell’s features (including type safety and control structures!), and we didn’t have to write a single parser.
« Last Edit: March 03, 2019, 04:11:57 AM by Schmolt » Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic