The feature i was talking about is centralized because relay on my server to exchange information (think it as a game server) so i find hard to share someway
At the same time i find hard to share the same implementation you have done about graphics improvement, or worse, your auction gem system because it relays on custom implementations.
Ok, we can share implementation details and whatever, but if people running my client use a different daemon (i built my client upon huntercoind.exe RPCs) then i can't have a custom game.data like you
A small step that is useful right away, could go like this:
- use the same list of "player sprites", if mithril edition gets a new monster, betterQt would load this too, and vice versa
- a daemon (with 2 patches applied) determines a list of important things to display (just "indicative, client side" like the gem spawnpoint in betterQt safemode),
this can be polled using RPCs or compiled into Qt and displayed in both clients
Any new game element would be designed with this in mind, e.g. 1 of the 2 patches must be able to determine the coordinates of a NPC that will then do complicated things in one client but visually (sprite index, coor, dir, and what it has to say like "5 gems for the ugly head of this annoying hunter") would appear in both.
In this example, players can also do the "quest" with any client, and the reward is kept safe for them. This happens implicitly, without any additional programming, if all input is normal Huntercoin moves and gamestate does all data processing.
Would you need a closed server only for payout?
we could set the rules we want, and if we follow the same implementation it would work but only if we both are running the same "patched daemon", this is the problem
not having consesus rules processing data, you can't be sure that things will work
e.g (may be inaccurate because i don't know exactly how your gem implementation works):
if you spawn a gem on your patched daemon/client, and someone that have not a patched daemon walk over, your daemon would assign it to that hunter while the daemon that the player is running, that isn't patched, don't know about gems and ignore it
so you have an inconsistence here
Even if your implementation depend on transaction generated by the patched, and when one of the managed hunters (hunters in the wallet of the running daemon) step over the gem you generate it to communicate to every patched daemon that you own it, what happens if 2 or more different hunters step on that cell at the same time?
The point is that if you don't have consensus rule that sculpt actions result on stone (blockchain) you can run in problems where different "patched clients" aren't compatible each other, thus generating inconsistency and gameplay bugs
This is why a turing complete scripting engine would fit well
My ideal solution My ideal solution would be to have scripting implemented in daemon and validated each block, where every script processes hunters positions/actions and affect game.data in a dynamic but predictable way (so provably fair results) and in order to "approve" those game script, a voting system would allow a script to be running
e.g.
Imagine i want to create a script that every block it spawn a random gem with a random value like you do:
1 - I'd create a script that every block uses a random number (like the one used by disaster) to chose the dropping tile, and set that info into the gamestate, and every time a hunter steps over the cell, the gem is assigned to his address (or if more hunters are there, with the same random number you chose the winner). The script creator set the Activation Delay parameter that will be used once the script is approved (see below)
2 - I send this script to the blockchain with a special transaction (Script transaction)
3 - This script now is open to be voted, and the vote could be expressed sending some amount of money to the script address (could be a nice way to incentivate game improvement in a decentralized way) or maybe thre should be some form of control that need that some invested "game masters" approve it
4 - Once the feature is approved, it will be active, starting from current approvation block, after the Activation Delay amount of blocks to be decided (so clients developer could have time to implement the needed addiction to the game)
This way, WITHOUT requiring hard forks, we could have an expandable game. It sounds cool to me