Thursday, July 12, 2012

Notoriously Databased v0.24

The interface for submitting a turn is more or less complete, and I'm happy with the progress of MVC in this design. The next thing to work on is the turn resolution itself. Since I'd completed most of it in the Google Doc version, I was expecting it to flow fairly quickly...

Resolution Phases
For this version I'll be breaking down the turn resolution into 5 phases.
  1. Validate the turn: If there are any commands that will not be possible, drop to the maximum achievable number (Eg 5 minions available and request 6 to dig = 5 digging)
  2. Town Raids: Calculate all attacks on the town. Initially the attacks were to occur simultaneously and impact on the amount of guards for that turn, but for now a simple ratio of defenders to resources will suffice.
  3. Hero attacks on Dungeon: Process all incoming attacks from the village. 
  4. Attacks by other Characters: Any incoming attacks from other dungeon will occur after the hero attacks. This will allow for potentially easier attacks, but also potentially nothing if the heroes wipe it first. If there are multiple people attacking the same dungeon, only one will survive (or none)
  5. Returning trops: Any successful raids or ransoms or dungeon attacks come back. Any digging or fortification building is also completed if not wiped.

Validate the Turn
 The validation itself was pretty easy to set up as I'd already done the logic for it, but the main sticking point in this section was creating a function to update the story with any errors. The story table will mainly be used to tell the player what happened in a turn, but it will suffice to also be the error reporting section for validation. The function itself should be pretty easy, but where to put it?

After another chat with Andrew, I decided on using a StoryRepository in the Models. Even though it's not technically a Model, the utility function does in a way act as a conduit to the model, and will not be doing much else apart from formatting and saving the Story into a new record. I played around with null values to allow optional parameters and unknown IDs, but it was cleaner to simply force IDs by seeding the optional parameters.

Town Raids
Initially I was hoping for the amount of defenders to be proportional to the amount of attackers as they would be pulled in different directions to defend all the resources (or go only one way if only one attacker). In the Google Doc version I'd dropped it in favour of a simple ratio of defenders per resource becuase of difficulties calulating all town attacks at once, but now that I can process them any way I like, I'll still use the ratio for now because it turned out to be simpler to calculate whether your attack will workor not by analysing the village state from the previous turn. It seems a little too controleld at the moment and I'd like a little more randomness, but for this large scale test it should be fine.

Once the raid has been calculated, the successful minions will return in phase 5. I could possibly merge this phase down to there, or merge up into validation, but I'm really unsure whether the town raid will need a different calculation method in testing, so it should be better in a self-contained section. Doing this means that I need a way to hold all raid data until phase 5. With my new-found love of Models, I made up a new class to act as a memory storage unit for raid data. This way I can create them into lists and process in much the same way as if it were table data.

Tuesday, July 10, 2012

GameLog 253 - 260

Hmm, 8 weeks of reports. Things are definitely going to be left out and times will be guesses.

 Football Manager 2012 (120h) - Boston Utd (League 2: 2nd) - Got a hankering for Management again and fired up the 2012 version I picked up a while back when it was on sale. 6 months unemployed to let the game settle, then accepted the first offer coming my way: Boston United in Conference North. Got them into the Playoffs that year, but didn't have the firepower to go up.

Next year was a completely revamped team and we finished 2nd only to be knocked out again in the 1st round of the playoffs. 3rd year we picked up another couple of gems and wouldn't settle for anything other than automatic promotion. We finished the season on 95 points, 15 clear of our nearest rival. 

Last season we were to bravely fight relegation, but after a mid-tier start, the team found their form and we moved up the ladder. Even I was a little suprised that we took over 1st, but the confidence in the team and our attacking style seemed to be working well. We've been having a poor showing in the cups, and with the League Trophy nearly in our grasp, we lose out in the quarter finals to an equally impressive FC Halifax who have risen along with us out of Conference North. Final game of the season and we're 1 point ahead. The stands are packed to see us win 2-1 and advance once again into the professional league.

Currently 4 games in with a somewhat understrength side. Hoping for mid table or possibly playoffs while the squad and stadium catch up to our rapid rise.

Kongregate: Berserk Cataclysm (40h) - An autoplay CCG with some interesting deck building choices. Cards are dribbled out fairly regularly to build some different decks, but the obvious advantages of rares over commons means that gaining cards is like levelling up. Unfortunately this leads into a direct pay-to-win option as the best cards are exclusively via the paid service, and having thousands of cards right off the bat is even more useful for the competitive side of the game.

World of Tanks (10h) - Some LAN attempts, but the 2-person platoon limiter is really pretty ordinary for any coordinated action.

Stronghold Kingdoms (10h) - Big long stints with nothing. Game over I'd say.

Kongregate: Chronicles of Blood (10h) - Veeyar 9 - fB game converted to Kongregate. Probably the best feeling action-point limited game I've played. Drop rates and proc rates are varied and I think I'm finally coming to an effective overall strategy with mostly PvP and some PvB planned.

Kongregate: assorted (10h) - Some new things appearing on Kong, but it still feels like it's playing second fiddle to fB and iOS

League of Legends (10h) - LANs and first wins.

Diablo III (5h) - Real money auction house is out now, but I can't see any evidence of anything selling on there. With Blizzard charging at least a $1 service fee per transation, I would say that its usefulness will be pretty bad for the general public. In beta people had a starting credit as well. I think this would have been a good choice to loosen up the AH. If there's no trading, then people are less likely to post stuff, then there's less liklihood of trades, etc. It has a real chance to turn into a ghost town.

Notorious Monetisation

Random thoughts on ways to monetise a Notorious server as we drove home from Mackay. I'm not a fan of secondary economies, but this might be a way to set one up with a clear distinction between in-game and out-of-game interactions.

"The Club"
As the players are ethereal beings ‘competing’ for notoriety in the game world, there exists a number of services for these beings to interact with directly through the ether. Most of these services revolve around trading information. For now I’ll call this “The Club”

-       Provide access to a gem: The club has people scouring the world looking for suitable gems to link to. For a fee they will provide the location of an unlinked gem. Price is dependent on both maximum power of the gem and the closest city size and current dungeon layout. Possible selling methods:
o   Auction system with random gems being placed on there with a price. 15% value to AH for player-listed gems.
o   New gems generated in clumps on the frontier zones, with some generated in more settled locations for people to advance to.
o   Offer a static price to ‘locate’ a new gem. ~$1 for a village level gem to ~$5 for a capital gem
-       Player power graphs: For a very small cost, players can see power graphs of other players. It should indicate long & short term notoriety. From this players should be able to deduce the best time to attack that player. Inactive players should have a fairly regular graph. Active players should show advancement in fits & spurts.
-       Player dungeon layout/minions. For a small fee, players can look up the last known dungeon layout of the target player with possible minion information.
-       Possible black market for minions. Include minions that are already linked with gems. This service provides access to the gem and possibly free teleportation to the home stone. Minions bought this way may or may not know of the existence of the ethereals. New gem keepers can be picked up this way.
o   Player auctions – additional 15% added to them
o   Football manager contract system opening payment goes to either the originating player or the “Club” if newly generated. Once the initial price is agreed upon it allows access to talk directly to the minion to negotiate. Once the 1st negotiation for a minion has been set, give 5 mins for competitive bids.
o   Possible alternative is that once a price is settled upon with the original owner, they give access to the minion’s gem for a non-refundable fee
o   Look at introducing a ‘trade band’ that has a gem inside it specifically for talking to minions to set up contracts. Original owners would then pick up a trade band from The Guild and place on minion. All discussions and memories are then accessible through the new band. The Guild can then use these to monitor the trade, set up filters of likely candidates to accept a trade, and give independent information regarding the minion to the buyer.

Multiple dungeons
An auction house would potentially mean having multiple gems for the player to link to. Look into whether only 1 is active with an interface to select the next active gem or have multiple gems active at the same time.
- If multiples active want so it is beneficial to have gems in better places.
- ways to mitigate gem spamming. If pay a power maintenance cost to link to a gem, maint cost increases by the amt of gems linked to. Eg: an inactive gem 5 power, 1st gem 50 power, 2nd gem 100, 3rd 150, etc.
- potentially have 1st home gem link for free. Look into a base amt of power for characters

Players may have the opportunity to tailor their character toward a certain playstyle:
-       To mitigate the multiple home gem links cost
-       Mitigate multiple gem links to monsters
-       Decrease costs of scanning
-       Decrease hiding/masking costs
-       Raise base power

Information tracking
Use roguelike monster info (observed weapons / damage / HP etc) for what they know about your minions. This will be used in knowledge discovery for the “Club”.

If creatures are resurrected at the home stone with nothing on them, how do they maintain the gem for communication?
-       Make the equipment they are carrying when bound be brought back too.
o   This would be the same as WoW / EVE and expected of the NPCs In the city. Problem with this will be NPC heroes would not bring anything into the dungeon to drop. 
-       Make equipment that has gems attached also returnable.
o   This would give the minions and NPCs a reason to desire gemmed items.
o   Requires the Ethereal to pay an additional fee to link to gemmed items? Maybe a link for returning purposes is not as strong as a link for communication.
o   Look into linking gemmed items to the minion / NPC. This way any binding of the minion / character will also include the cost of the items.
o   If an item can be returned to a home stone, what would happen if another Ethereal managed to establish a link to the item? Could they return it to their own dungeon?
o   Gems allow access to sentient thoughts, so there would be nothing to link to in the items themselves. Maybe a cost to return the item itself is cheaper.
o   Once a link is established with a mind, maybe other close gems can be added to the link for a minimal cost to strengthen the link (allow more power). New items linked this way don’t add to the total gem linking increases, but have an independent power cost escalation. Eg 50 power for original link, 5 power for secondary, 10 for tertiary, 20, 40, 80. Items linked this way must be strong enough in their own right to support the link.

Running a City
-       Have a high amount of NPC Heroes linking to your home stone.
o   Require a different build, with attributes heavily focused on new minion link reduction to cope with the amount coming through. Possibly too much for more than one stone’s worth.
o   Access to NPCs, but virtually no power left to manipulate them.
-        Charge a service fee for the resurrection power that you will need to use to pull them back. This will typically be through a front man, quite possibly a reputable person established in the city, or a gemkeeper working undercover.
-       Use access to NPC heroes to sell dungeon layout / minions back to “The Guild”
o   Offer NPC heroes an in-game reward for information regarding layouts / minions / etc.
o   Offer NPC heroes information on layouts for a fee (miniature version of “The Guild”)
-       Use access to Heroes to sell their links to the club for people wishing to raid targets
o   Make up bounties for certain dungeons with potential upfront payment, confirmed wipe payment and loot division options.
-       Act like the “Adventurer’s Guild”
o   Branding all services as part of a corporate entity provides all players that run individual sites to share the power.
o   New Adventurer’s guilds can be set up in the city by paying for a large enough gem to be moved into place (and secured, they are rather expensive in the game world too. Wouldn’t want anyone walking away with your home base.
o   Run by exclusive members of “The Guild”
-       Power mainly generated from “good” thoughts about the owner. “Good” thoughts ½ as effective as fear thoughts and reputation harder to maintain. Also less amount of population concerned about the service (adventurers) compared to the impact of character actions (whole city/village)
o   Good rep mutually exclusive to bad rep. linear linked scale.