Pages:
Author

Topic: Crypto Kingdom Ultima Version Development Thread (Read 24680 times)

hero member
Activity: 763
Merit: 534

Crypto Kingdom Fork/Relaunch



Let's show baldie how to make a blockchain game!

No gods or kings. Only blockchain.

Discussion in the uncensored thread:

https://bitcointalksearch.org/topic/cryptokingdom-uncensored-1905349

hero member
Activity: 714
Merit: 504
Sorry I had completely forgotten about this and that I was supposed to write a second tune. I've been a little short for free time recently. :-/

Nonetheless, I've configured the first track so that it is now downloadable from Soundcloud as an MP3. Hopefully that should loop well (at least musically speaking), but MP3s tend to auto-inject metadata into the situation which can often translate as a minor skip.

https://soundcloud.com/user-763969972/tracks

See how you get on with it. I'm happy to make any changes accordingly.

Cheers!
legendary
Activity: 1276
Merit: 1001
Currently, when I try to buy or consume something, press enter, it just goes to a new row instead of completing
Dunno, where to write it, hope I didn't miss the thread  Cheesy

Yes, it's borked again. goin2mars found that the command boxes on the lot pages work, however. So you need to look at the market on one page, and enter your commands on a lot page box, such as https://cryptokingdom.me/land/lot/details/22.

Hopefully will be fixed once PJ notices the new update went wrong.
legendary
Activity: 2198
Merit: 1150
Freedom&Honor
Currently, when I try to buy or consume something, press enter, it just goes to a new row instead of completing
Dunno, where to write it, hope I didn't miss the thread  Cheesy
legendary
Activity: 1750
Merit: 1036
Facts are more efficient than fud

IRC-channel moderation

need social media accounts setup with a person who will be managing them


I can mod 5am-8am UTC Tuesday-Friday

I set up a Twitter and Facebook page and can manage them or pass the credentials over at HM's discretion:

https://twitter.com/Crypto_Kingdom

https://www.facebook.com/profile.php?id=100010878341124

legendary
Activity: 1276
Merit: 1001
This can be done in 2 ways, so that it's possible to change it from the game, or so that it is the unchangeable fallback option that might give some security against compromized account.

It could also be made to be changeable in game to a new key signed by your previous key.
This does not protect against losing the key, but protects against the key being compromised, and/or you wanting to start using another key (ie, larger size, or different algorithm). I think this is a good compromise.

If you lose they key, but still have your password, you're in the same position as currently. If you wish to make a new key without knowing the previous one, you can create a new character with that new key, and transfer. However, this means an attacker who gets your password but not your key can also do this. Maybe withdrawing could be made contingent on either a signed message (if a public key was given), if the player chooses so when registering. Kind of a balancing act between security from loss and security from compromise.
donator
Activity: 1722
Merit: 1036
Uniform ID-space requirements

No id may clash with an existing id across the Uniform ID-space, case-independently.

Therefore,
- char_id's are all numbers, no other id may be all numbers
- lot id's start with a number, no other id may do it
- regardless of case, no id string may be identical to an existing one (eg. your char_shortname cannot be "dividend" cause "DIVIDEND" is a command)
- no id may be more than 12 characters long and may not contain spaces

Application: NEW (item) , new character registration (shortname). Validation required.


Following id's are part of Uniform ID-space:
- char_id
- char_shortname
- item_id
- item_type_id and all future similar id's
- lot_id
- command name
- embedded_resource_id (eg. CKG)
donator
Activity: 1722
Merit: 1036
Please add what is needed in the registration routine! Smiley

I would love to see an optional public key.
This would be used to prove you are the owner of an account, by signing some message with the corresponding private key, and is much secure/private than an email fallback.


This can be done in 2 ways, so that it's possible to change it from the game, or so that it is the unchangeable fallback option that might give some security against compromized account.
legendary
Activity: 1276
Merit: 1001
Please add what is needed in the registration routine! Smiley

I would love to see an optional public key.
This would be used to prove you are the owner of an account, by signing some message with the corresponding private key, and is much secure/private than an email fallback.
donator
Activity: 1722
Merit: 1036
New Player registration specification

- it is mentioned that email is not a mandatory field but warned that without it, there is currently no way to claim the account if password is lost
- character Full name is asked
- shortname must conform to Unified ID-space requirements and be 12 char max
- sex (M/F) is asked
- possibility for Advanced start as follows:
* pay 50 XMR => character starts as FOC (Foreign-Owned-Corporation) which is an ingame corporation with no ingame stockholders. In practice, speculators that don't want character management might want to use this option. FOC don't die.
* pay 100 XMR => character starts from level Baronet (just below Baron). Suitable for power players who want to skip commoner living totally.
* pay 50 XMR => character that is offspring to an Earl+, start from Jungherr
* upon application/recognition, there have been instant promotions to noble levels if the player has a high standing outside of the game. So far the following have been worthy of the honor:

HM The King (rpietila) started as King L20 (1400)
HG The Prince-Bishop (David Latapie) started as Earl L13 (1400)
HE The Prince of Forte Spagnolo (fluffypony) started as Earl (1420)
HH The Duke of NewLiberty and HE The Prince of Soul (Dr.Choo) started as Baron L12 (1418)
HE The Marquess Cryptoluna (smooth) was promoted Baron straight from Beginner (1428)
Roopatra (1418), eizh, tacotime, othe and NoodleDoodle (1600) started as Knight/Dame L11

Please add what is needed in the registration routine! Smiley
legendary
Activity: 1276
Merit: 1001
FAQ

As promised earlier, here's the FAQ:

http://fpaste.org/302485/95893145/

If you would like to see more questions, please feel free to list them and I will add them in.


Edit: and for those who already know the answer to "How do I register ?", the FAQ's on the CK site wiki now.
donator
Activity: 1722
Merit: 1036
It might feel that there is work for much longer time than "2 weeks". But we are talking about the last fixes here, most of the stuff has been on the pipeline for weeks if not months and only requires the irresistible final push to be live. Similar numbers of new features have been implemented all the time, with many of them being admin-only so the ordinary player does not see but the tip of the iceberg.

1900 CKG left in the Holiday Fund of James Daniel
donator
Activity: 1722
Merit: 1036
This list is just to show what we are about to finalize before switching on the marketing

If you want to help in these or some other thing (and are not member of Town admin sheet) chime in to this thread!! Smiley


Related to: General Game Core
New Gold Creation by Proof-of-Play
Unified ID space
Admin Rights / Permissions
API features
API rights management
DB tables cleared of bogus data
Chapelry wallpapers installed
Ability to put a note for divs, tax, etc to know what it relates to
Building Enabled (will be after "release")

Related to: New Player registration and first contact

Tutorial, EXP-scripted events
check the register page works with and without email, and maybe send a confrmation mail
start page with some intro text, links to wiki, links to bct forum and irc until we get chat stuff working better

Related to: Playability

Agora market categories organized into sub categories
Transaction id's showing price/quantityof item in the individual page view
health challenge status at top of page
Individual notification/list of what changed when txes get cancelled - otherwise, it can be very confusing as you don't know what happened and still see your balance changed
Add basic info about wines tastiness to each wine's page - since they change, expiration etc
A voluntary confirmation button/popup that would confirm transactions from the command line, i.e. to prevent spurious line-break transactions or if somebody remembers a command syntax wrong. It would be turned off by default.
Daily quests with meager rewards (together obviously with a system to prevent abuse, or maybe only cosmetic rewards)
Fixes on the fields that do not currently update correctly: Land/Built on Character page, CKG amount on Admin Page
In the "View My Items" page there should be an option to not list items that the character currently owns 0 instances of

Related to: Ingame-"out-of-game" Communication

activity marker on the map, so people can find places where chat happens
Notifications (ie, message at page top when something happens we want players to know, like "oh, health challenge was just fixed"
The Terms/Agreements drafted by HM should be on the front page in character creation and also somehow in the login page
Chat (with private messaging)
Push messages / Announcements
An in-game forum to discuss and announce things

Related to: Document creation

Health Challenge guide
Wiki pages with useful content
Rulebook
FAQ

Related to: Security, Antifragility etc

Upgrade security in accounts and server side, perhaps an external evaluation or stress test (Injections, DDoS, etc). As more people will come, it will also attract more hoaxers, abusers, hackers, especially given that there is a potential monetary gain.
Daily backups
IRC-channel moderation

Related to: Other

Halls of Fame
need social media accounts setup with a person who will be managing them
CK theme song
donator
Activity: 1722
Merit: 1036
Duty Paid (3rd party module)


Background of IC

IC is an ingame imports currency, which is currently generated at a rate of 3000-4000 IC/year. For comparison, the IC generated and spent in the Ancient era (200 years) was about 50,000 IC. (In real-time, the difference is not so big since it would take about 100 days to generate 50,000 IC now, whereas the ancient era lasted only 140 days realtime.)

IC can come in 3 ways:
- New characters get personal IC after a few hours of playtime
- Many NPC types yield CUL, which always comes with half its amount in IC
- Residences and cultural institutions yield CUL (+IC).

The "gamemaster book value" of IC is 100,000 m. If rental income is diverted to CUL, solely to gain IC, the conversion efficiency is about 200,000 m/IC. IC is tradable and its price in the market has reached up to 500,000 m/IC due to scarcity. Now we have ended the scarcity, but are also expanding the uses of IC greatly.

Background of Items

Items have many attributes and will have even more when combined with Skills module (coming "soon" = months). The unifying characteristic is item level "K". The levels of items range from K1...K10, with the level in theory based on the IC cost of the item as follows:

K1 = 1 IC
K2 = 2-4 IC
K3 = 5-9 IC
K4 = 10-19 IC
K5 = 20-49 IC
K6 = 50-99 IC
K7 = 100-199 IC
K8 = 200-499 IC
K9 = 500-999 IC
K10 = 1000+ IC

There are many exceptions, however. Financial and other immaterial products are typically K0, regardless of their price. Material products (such as consumables) are K1 even if much cheaper than 1 IC equivalent. Products with embedded value (gold) get level only based on their remolding cost, not the price of gold. Backdated items cost more IC but the backdating does not increase their level. If level is to be assessed for an item that can not be converted, it is gamemaster decision. Historically some items got +1 level bonuses, and this may still happen as a promotion.

Item Parameters are (from Items table, can be populated with NEW command, API accessible with permission):
year <- current game year or any past year no older than 1600. Backdating adds to price in calculator)
level <- is calculated from the price IC (and other parameters/attributes)
name <- user specified, the listing name
itemType <- it_type_code for sorting, mandatory
ckg <- ckg contained
cks <- cks contained
stone <- stone contained
desc <- description of the item, mandatory
history <- stories of the item, perhaps to add flavor and resale value
specialNote <- if the item has encumbrance or other important info
adminNotes <- reserved
material <- code (for lookup), mandatory
colCode <- color code (for lookup), mandatory
repair <- always start at 1 (100%)
Attributes <- take value of 0...3, where 1=Attribute, 2=Most Attribute, 3=Very Attribute (upping by 1 typically doubles the price)
ancient <- always 0
elaborate
powerful
imported <- always 1 in this shop (range 0/1)
cultural
scientific
historical <- not used
royal <- King only
noble <- admin only
blessed <- church only
cursed <- church only
legendary <- (range 0/1) general population only
untradable <- (range 0/1) will appear in listing but cannot place bids/asks (currently does not work)

Duty Paid shop feature specification

Some might remember the time of AIC in March-2015 and the "AIC shop" in Google DB. With the help of calculators there, it was possible to add new rows to the Items tab. What we seek to do now is the same, in Ultima context.

The shop needs to have Ultima authentication. When the user is in, he sees item converters and can enter the values for the item attributes. Upon "calculate price", he gets to see the price in IC. Upon "convert", the item is NEWed (new line created to the DB) and 1 instance created to the owner. The IC is consumed.

Example: Imported Wig
"You know, we have not had wigs before, but they are in high fashion in France and the places where we get our influences from. So I want to buy one to join the ranks of the people who know how to dress."

Wig item type is (currently) GIP, "Personal Item". After this is selected, a simple questionnaire is given to the willing importer with the following fields:

year <- current game year or any past year no older than 1600. Backdating adds to price in calculator)
name <- user specified, the listing name
desc <- description of the item, mandatory
history <- stories of the item, perhaps to add flavor and resale value
specialNote <- if the item has encumbrance or other important info
Size of the Item   <- 1=small, 2=handheld, 3=tabletop, 4=large, 5=very large) this is not saved as such but will determine the price
material <- code (for lookup), mandatory
colCode <- color code (for lookup), mandatory
elaborate
powerful
cultural
scientific

The lookup fields must work with the looked_up (plaintext) display, but save the code.

Press "Calculate price"

Then the formula which I will supply will calculate the price in IC. In this case the wig is "tabletop" size and "elaborate" so costs 20 IC. They are not cheap! Most elaborate would be 50 IC..

Level <- is calculated from the price IC (and other parameters/attributes)

From here, it is still possible to edit the descriptions.

When it is ready, then ->"Create item" will:
- calculate the final price after possible changes
- try to consume the associated IC from the active_character
- if successful, NEW and CREATE the item.

Example: Imported Wine Store

Wines and silver are bulk products that can be directly converted for some time after their introduction. They are listed with fixed prices denominated in IC. There needs to be a script to bill the town tax (10,000 m/wine bottle) as well and it needs to work as one-click shopping.

Admin UI

Admin needs to be able to edit the products for sale in the fixed price section. This happens rather often. Also the pricing etc formulas in the other converters. This does not happen often.

donator
Activity: 1722
Merit: 1036
SPOIL item_id_or_item_type_id percentage_spoiled

The command is used to randomly destroy a percentage of instances of item_id_or_item_type_id.

validation active_character must be senior admin, else print "You do not have the permission to spoil (needed: senior admin)." and abort
if no percentage_spoiled is given, print "Command SPOIL syntax is 'SPOIL item_id_or_item_type_id percentage_spoiled'." and abort
if percentage_spoiled is not a positive integer between 1...99, print "Percentage to be spoiled must be a positive integer (which the system will divide by 100)." and abort
if item_id_or_item_type_id is not a valid item_id or item_type_id, print "No such item or item type." and abort

loop through all instances of the item(s) in question and assign each item an equal probability P=(percentage_spoiled / 100), eg. if percentage_spoiled = 33, then P=0.33 with the result that as n=>inf, the fraction of all instances destroyed tends to 33/100 of the original # of instances.
transfer the instances destroyed back to #5.
print "Spoil successful. instancesdestroyed items destroyed."

The random die roll must be done separately for each instance of the item. This command will be used for stuff like VEG with an average holding of 200-400 instances per character and percentage_spoiled=50. If it consumes too much resources, it needs to be threaded, or I may be able to give concession to the rule if the expected

User note: The command SPOIL is also used to kill NPC and animals, we skip the need for a KILL command (or the name can be saved for more troubled times Tongue ) SPOIL is the original "d100 kill roll"  Grin


PROMOTE item_id percentage_promoted promoted_to

The command is used to randomly mutate a percentage of instances of item_id to promoted_to.

validation active_character must be senior admin, else print "You do not have the permission to promote (needed: senior admin)." and abort
if no promoted_to is given, print "Command PROMOTE syntax is 'PROMOTE item_id percentage_promoted promoted_to'." and abort
if promoted_to is not a valid item_id, print "No such item to be promoted to." and abort
if percentage_promoted is not a positive integer between 1...99, print "Percentage to be promoted must be a positive integer (which the system will divide by 100)." and abort
if item_id is not a valid item_id, print "No such item." and abort

loop through all instances of the item in question and assign each item an equal probability P=(percentage_promoted / 100), eg. if percentage_promoted = 5, then P=0.05 with the result that each instance of the item has 5%=1/20 chance to be promoted.
transfer the instances of item_id that will be promoted, back to #5.
create 1 instance of promoted_to per each instance of item_id destroyed, to its original owner.

print "Spoil successful. instancespromoted items promoted."

The random die roll must be done separately for each instance of the item.


MERGE item_id percentage_remaining

The command is used to scale down the number of instances of an item proportionately for all owners.

validation active_character must be senior admin, else print "You do not have the permission to merge (needed: senior admin)." and abort
if no percentage_remaining is given, print "Command MERGE syntax is 'MERGE item_id percentage_remaining'." and abort
if percentage_remaining is not a positive integer between 1...99, print "Percentage remaining must be a positive integer." and abort
if item_id is not a valid item_id, print "No such item." and abort

calculate each character's holdings of item_id, multiply by percentage_remaining / 100. Everyone gets to keep this many items (always rounded down (floored) to nearest full item. The rest are destroyed and transferred to #5.

print "Merge successful."

Since this command floors the result, it should not be used when the items are of high value so that the lost fraction is significant. In these cases it is fairer to use the random_roll SPOIL command.
legendary
Activity: 1512
Merit: 1012
Still wild and free
I'm curious what is being worked on right now? And what are the development goals/directions short term (for the next month)?

Also when is registration going to be open to new players again?
donator
Activity: 1722
Merit: 1036
TAX taxed_item_id amount recipient

The command is used to transfer amount units of M to recipient per each instance of taxed_item_id the recipient owns. (The character paying the tax is only specified indirectly by taxed_item_id.)

TAX is senior admin command and may cause the M balance of the character taxed to go negative.

validation active_character must be senior admin, else print "You do not have the permission to tax (needed: senior admin)." and abort
if no taxed_item_id is given, print "Command TAX syntax is 'TAX taxed_item_id amount recipient'." and abort
if taxed_item_id is not a valid id in the uniform idspace, print "taxed_item_id does not exist." and abort
if amount is not a positive integer, print "Amount must be a positive integer." and abort
if recipient is not a valid char_id or char_shortname, print "recipient is not a valid character." and abort
total1 = 0

loop through all characters who own taxed_item_id (char_id is the char_id of the character in the loop)
  amount1 = amount * taxed_item_id_owned_by_char_id
  TRANSFER M amount1 char_id recipient   
  total1 += amount1
print: "Taxation successful. total1 M collected from owners of taxed_item_id."

Usual uniform idspace validations apply. The idspace is case-independent meaning that if item DOH exists, no items doh, dOh, Doh may exist as separate items; therefore the command parses all these to mean item DOH. The correct way to output/list the names of items is all-uppercase always.
sr. member
Activity: 350
Merit: 250
Really nice seeing improvements all over the place, I like the retro intro page, may I suggest a page where it list all the user's active sells/buys. With the amount of items to trade it is somewhat easy to forget.
legendary
Activity: 1610
Merit: 1004
I noticed that now when you place ask orders, the appropriate item quantity is reduced from your "available balance". This is awesome!

Is it being considered to also do this with Moneretos on the bid side?

Otherwise someone can place many fake bids that will not execute if they don't have the available moneretos.

Yes, we thought that it might be useful to see both (after some detour of only showing the "available", causing more trouble than good really Wink )

There is currently no intention to do it with the bid side. Reasons:

- Many people/corps in business want to offer buy liquidity for multiple items. It would not be possible if 100% reserve was required. This would destroy the bidside liquidity - the value of non-M items (stuff) in the characters' accounts is 35x the value of M items (money). An obvious mismatch that can be easily remedied by doing what we are doing.

- 100% reserve when placing bids has never been the custom with any reputable financial institution. Even I have used stockbrokers who had this mode of operation prior to the online era starting in late 1990s. The usual reason why online stockbrokers incl. crypto exchanges really want 100%+100% reserve is more sinister than cares to be mentioned. We don't want to even allow ourself the option to do such things and want to have as little customer depository balances (XMR) as possible.

- The practical result of hitting zero funds is that the trade just does not happen, which will be noticeable to the seller, and not cause him any more difficulty than lost opportunity that would never have been there to begin with. A trade cannot make you go negative. Admin command TRANSFER only can make you go negative (and only in M).

=> I will change the policy when it needs changing but going to fully covered bids is so far from rational here that it is unlikely it will happen. Other things that actually improve the system are planned.

Thank you for this explanation also, it makes sense now!
legendary
Activity: 1610
Merit: 1004
CREATE item_id quantity recipient

The command increases the number of instances of item_id owned by recipient by quantity units.

if no item_id is given, print "Command CREATE syntax is 'CREATE item_id quantity recipient'." and abort
if item_id is not a valid item_id, print "No such item." and abort
if quantity is not a positive integer, print "Quantity must be a positive integer." and abort
if recipient is not found from char_id and char_shortname tables, print "No such recipient." and abort
add quantity instances of item_id to recipient and update changelog
print: "quantity units of item_id created to recipient".

NOTE: Required: senior admin.

Request to enable this command via API please. Then I will be able to setup a bot that creates M automatically when a user deposits XMR to their CK account.
Pages:
Jump to: