2023 Update
Sorry for the lack of updates, I have had a busy the past month. I ended up catching covid at the beginning of December going into the holidays and have been doing catch up ever since in my work/personal life as I only had about one productive work week that month. The late November – early December deadline I put on my self for the project is well passed. But things are still making progress and shaping up for a release, though I am not going to put any date on it this time, I was using that to force my self to crunch and it didn’t go well.
I’ve still been heavily working on the project and things are really close to release, some obstacles were encountered along the way and some realizations made. These have mostly been rectified and I’m back toward making the finishing touches. These include:
- Trying to go for a hybrid design with sprites and cards similar to Slay the Spires crossed with Darkest Dungeon
- This was cool in theory and is something I’d still like to later implement, but was adding too much overhead to both time and costs. Any new cards and characters would need art (duh on my part) which I accepted but I started realize how much this really affected adding unique one off attacks and abilities while providing proper visuals, and was just going to be a huge time sink and not provide the experience as expected.
- Due to that the game is now strictly cards based and some changes have also been made to the design to expand on this.
- Players now have their pawn card (Character) a talisman that sets and alignment to either order, chaos and neutral.
- Action cards now have an alignment, any card can be played but some added benefits come if your pawns talisman alignment matches the card, and a slight weakness is added if you are attacked with an alignment opposite of your own (unless neutral)
- The chaos based cards are cards that are either highly chance based with a chance of big damage, or do large damage or game changing things with a huge trade off. This means a lot of them can and will damage you.
- The ordered based cards are pretty safe when it comes to side affects but also have less damage or a higher cost per damage dealt.
- Any pawn can play any card, but choosing an alignment via talisman compliments cards of that type. Talismans also let you customize your pawn characters stats to help shape a play style.
- Refactoring my messy card logic, I was using both inheritance and composition and had made a mess after iterating over everything so many times. I went in with some general ideas and expand on them as I went. I was planning on pushing through and changing this later, but while implementing cards it was becoming quite obvious this was a limitation, held back implementing more variety, and error prone on their creation.
- Everything related to cards and their logic is now composition based along with a builder pattern that also validates card logic, so if a needed part is neglected an error will be thrown at startup. This allows for a “strategy” pattern where components can be pieced together to build the logic and new logic can be added at any point that fits the existing system.
- On top of this the cards which are enums for now implement an interface and handle logic themselves instead of being passed with just their data to a separate class, with a default implementation that performs the logic that 90% of card will use, but can be overridden with custom logic for specific cases. This means that anything is possible with them now as they handle their own logic, I had wanted to do this from the start but couldn’t find a good way to do it, now that they are composed with interfaced components that can be swapped out and are an interface themselves they can be melding into doing anything, without needed to each to have their own logic which has been the case all along but the original implementation was pretty limiting. Card have a default playCard method from an interface that has a shared default implementation that does logic via the attached interfaces, but it can also be fully overridden and allow for logic to be fully hard coded in the 10% card that will need it. This allows for endless possibilities, while also keeping the code at a minimum for the 90% of cards that can just reuses the same general logic and calculations.
- I realized way to late that needing a hand of 45-50 cards to play while also requiring them to have a set DID is not very users friendly, though the new Bulk transfer should help this.
- To offset this I implemented that card packs can be got (This will be the sole supported way) through the clients when logged in and automatically are accredited to your accounts DID from the servers view when accepted and minted, until they are transferred at which point they will be fully tracked by their on chain state.
- I’d like to keep this process, but it does add a fair amount of backend overhead to keep track, with the new bulk transfer this is not needed as much, but is still a big help to accessibility and as long as it scales well will be kept at least until some good web wallets implement bulk did transfer.
- On the topic of web wallets, the goal all along has been to implement them and that is still the case, will also be looking into wallet connect, and possibly not relying on just DIDs, but I haven’t looked into it much and have doubts it can provide fully affirmative ownership, if it can that would be great.
- Polish. I was going to release a pretty barebones first release and implement more features later, but first impressions matter and I want the experience to be good from the start. This polish includes.
- You can can card packs directly through the client
- You can see and browse cards, see their full stats.
- On top of browsing you will also be able to see market offers for cards, I will be grabbing offers for the collection and keeping a cached version that is sorted by individual cards, when browsing cards you will be sent the first half dozen or so lowest offers. Data will be slightly stale, but this should work out good, I have to work out the individual cards myself since none of the existing APIs really take into account nfts with editions. It is also something hard for them to track since they can have different ids, I have my own work around for handling this with assets.
- I have also implemented the ability to push offers to dexie from the client, this is all done client side through their endpoint, but provides a streamline experience.
- Okra tokens and potion tokens will also be able to be bought and sold in-client via dexie.
- UI is more finished, it still has a fair way to go, but is more visual appeasing and has an aesthetic now.
I have leaned a lot more into a Dungeon and Dragons style going fully card based, the experience will be a lot different from most card games as it is more combat based a closer to a turn based RPG. This has been the goal from the start but a lot of the changes on the card logic side of this and the format will allow for the ability to craft highly unique game play styles, and lean into letting the player have a bunch of approach via how they build their pawn set and decks. Really interested in seeing how it pans out.
Right now about half the card are implemented, and balancing is taking place. Card stats may change over time as data is collected, even after release. This means the meta data will not include full stats, just basic stats and a description, this is to allow for balancing without the possibly of having to remove or ban a card from play as seen in traditional TCGs.
Most things are finished at this point and the main thing left is finishing the implementations, balancing, finalizing/polishing client-server communications and interactions to make sure they are bug free. Release should be soon, but I am no longer going to set any dates and the project will likely stay fairly quiet until release.
Filed under: Uncategorized - @ January 8, 2023 11:34 pm