Beta Development Day 2


Things get changed

I realized I stall the game when connecting the client to the local server, that caused a lot of issues, and made the game look like it crashed when it was waiting on a socket, so I decided to swap out the simple server-client chat module I've used to a new one.

well maybe not an entirely new one, but still, heavy backend modification are afoot.

a new module is required: the Authenticator/Signer the Client will sign all data with its credentials(not very secure, but simplifies communications a LOT) meaning that I can have a SINGLE SOCKET handling communication of all players, but I don't need to care about issues from this because I'm not making anti-cheat on a single person ALL CUSTOM development process with a 0$ budget*.

that issue will be for future me, that will have a working game, lots of money, bitches and people complaining about hackers in a casual game.(not a real scenario, I will never get bitches)

so I need a few things:

  • Redesign the client module to work in asynchronous mode(startup, send, end communication) and have a thread protected receive.
  • Redesign Server to have an abstracted I/O(input/output) class so it can be swapped with whatever I need at the time.
  • Write a signer class that receives data to send and sign it and authenticator class that checks who signed the data received by the server and inputs it to the game as the correct player.
  • GUI text box with the ability to handle letters numbers and a few symbols as input from keyboard for signatures(currently name only, maybe some more unique signature later) and for commands because making a proper UI will take time and I currently want the game to be functional.
  • Render card backs for Decks and Enemy Hand.
  • Render Numbers for important things: Cards in Deck, Health, Energy, Cards in enemy hand(you clearly shouldn't be seeing what those are).

So, I will now start:

Step 1 - Make the Updated Server-Client Module

Making an "OnlineModule" for turn based games is extremely important, and it actually passed without a hitch.

I found my old Chat program, hacked at it for a while to make it pass the data through a class that decides what to do with the data.

only problem was: it reset my progress back to nothing, I needed to tell my Pipeline class(that will be later overridden by the Auth/Sign pair) to grab the data from my Server_Game and Client_Game classes.

a short* collection of sanity checks later and things went back to how they used to be with the exception of "server broadcasting active player data to everyone" which is something I can either solve by broadcasting ALL data to everyone, or by doing actual Unicast with 2 way authenticators which will be bypassed anyways, so next change will be to, once again, rework the way the game handles packet data and alter it so it package hand data the same way it handles field and graveyard data.

at least with those changes, the Data Processing Function only saves the player data that is relevant to you so unless hacking is involved there will be little to no accidents with data.

I know it's opening the door but if you are a hacker that decides to hack an in-development game from a nobody, you really do have no life or bitches and you probably deserve the small advantage of seeing how much better your opponent's hand is compared to yours because you suck at card games.

Step 2 - Sleep?

as it is a work day tomorrow, I can't really continue into the later hours of the night, I will try to finish the current changes in the following days. today was a bit short because there was a lot of backend and integration to do, and learning that visual studio dislikes files called "Main.cpp" or having multiple files with the same name.

so while fighting the good fight against Visual Studio and working my way through the slew of bugs across 3 projects to create fix and integrate the new player ID System(finally decided on a name for this change) I didn't have time to add any real new changes, but this DID make the future features more easily implementable.

finishing the player ID system will allow me to make the first AI player:

  • if playing against AI and player is not the active player(meaning the AI should act)
  • possible timer ticks down
  • Send command "pass" with player ID "AI".

which in turn will allow me to test the rendering of the field and other elements.

and will also allow me to release an MVP version of the Beta and share with everyone the joys of the Fundamentals CCG, after I work on making a textbox element, hopefully tomorrow I will have more time to do this.

Get Fundamentals Card Game

Leave a comment

Log in with itch.io to leave a comment.