Friday, December 30, 2011

Notoriously Databased

Over the holidays I've been building a google spreadsheet along with some forms to play a light version of Notorious. A play-by-email if you will. The game is intentionally stripped down as far as I can go while still retaining the higher design elements to test whether there is still any 'fun' or 'game' there. If there is, remove more. If there isn't, add some back in.                      
Notoriously Databased

Dungeon stats
At the start of each round, your dungeon is essentially a couple of stats:
Notoriety: How much the town fears you. Expect an attack each turn at a level based on this number.
Treasure: The amount of gold / equipment / tradeable stuff you have in your dungeon
Dungeon size: The amount of space dug out so far.
 - Minion living space: Amount of space dedicated to housing minions
 - Prisoner Space: Amount of space dedicated to housing townsfolk to help dig.  Prisons can hold 10 prisoners per space.
 - Fortification space: Amount of space for traps / secret doors / dungeon layout.          
Total defense: Total defense = Dungeon security + Minion security
 - Dungeon Security: Provides additional defense, as well as maintaining this amount of gold if a wipe occurs.
 - Minion Security: Total amount of security offered by elites and normal minions.
Minion Defenders: Amount of minions allocated to defence.                      
Minion Elites: Elites are 2x more effective at fighting (Defending / raiding)
Minion Diggers / Builders: Amount of minions allocated to expanding your dungeon size.
Prisoners: Amount of captured townsfolk currently expanding your dungeon size.        
Each turn a player assigns these actions to their dungeon:
Order digging: Amount of minions ordered to dig instead of defend              
Raid town for treasure / prisoners: Choose the amount of minions to send on the raid and the amount of treasure / prisoners to go after. Monsters on a raid will not be in your dungeon next turn. If successful, returns the amount of treasure / prisoners requested. Can choose to disguise as another player to give them the notoriety instead. Raid success is calculated by the amount of town security compared to the amount of monsters sent. The town's prosperity will indicate how deep into the town they will need to go to get the required resources.

Raid another dungeon for treasure / prisoners: Choose the amount of monsters to send on the raid. They will not be in your dungeon next turn. Note that dungeon raids happen AFTER heroes have softened them up.
Ransom prisoners: You will receive 1 treasure per prisoner ransomed and reduce notoriety.              
Increase fortifications: Requires 1 space and 5 treasure              
Equip Minion: Requires 1 treasure per minion converted to an elite. Elites fight 2 times better and are last to be killed.              
Hide Hide this many elites. Implemented as raiding 'no-one'. They just spend time away from the dungeon when you expect a wipe.
End of Turn resolution order                      
Hidden minions / treasure are set aside                      
Raiding parties are set aside                      
Ransom prisoners - Remove prisoner.                      
Convert minion to elite                      
Assign minion diggers                      
Increase fortifications - Remove money                      
Raid town - Add ALL player town raids together to calc total desired resources                      
Raid town - Calc defense per treasure and per villiager                      
Raid town - Assign defense to each player's raid and kill off raiders per defense. If they have minions remaining, raid is successful                      
Raid town - Successful raids either set (disguised) player notoriety to amount stolen, or increases notoriety by 1 if already higher                      
Hero Attack - Heroes (elite) of fighting skill equal to player's notoriety attacks. Player with highest notoriety has 1.5x notoriety heroes attack.                       
Hero Attack - Hero kills off an amount of minions equal to their fighting skill. If any heroes remain, wipe.                       
Hero Attack - If no heroes remain, add treasure to dungeon per hero (= 1/2 fighting power = 1/2 notoriety)                       
Raid dungeon - Add ALL player dungeon raids against that player together. If greater than the dungeon defense, wipe.                      
Raid dungeon - If multiple players attacking, highest army kills others and takes all spoils.                      
Raid dungeon - Successful raids remove all gold & prisoners                      
Amount of space is increased by remaining (diggers + prisoners) / 10                      
Increase fortifications - Assign fortification space if not wiped                      
Ransom prisoners - Add gold, reduce notoriety                      
Successful raids return                      
Hidden minions / treasure return                      
Fill remaining space with minions (or remove minions if space smaller)                      
Allocate 1 notoriety to each player that an adventurer didn't return from.                      
If all actions gain no notoriety for the player, and they have been wiped by the town, reset notoriety to 0.                      
Town report - Build a notoriety list                      
Town report - Add all actions against the town                      
Player report - Collate all actions that the player knows about                      

Wednesday, December 28, 2011

GameLog 228-231

Ahh holidays!

Grepolis (100h) - Holidays started out with a big revisit to Grepolis with many operations and defensive maneuvers to dive back into.

AI War: Fleet Command (50h) - The first of many games to be wheeled out again for the steam christmas achievement list. I'd given this one a go a while back, but I couldn't get into it. 2 things changed, both from replaying the tutorials:
1) The game is more of a puzzle / grand strategy rather than RTS. The unique starting positions with the AI owning everything and you with nothing makes a very interesting tak on the Genre.
2) Turn on the option for ships to be automatically placed into defensive mode, and engineers to be on auto fix / help too. Makes the game actually playable rather than incredibly frustrating that you'd missed one single ship attacking and he'd wiped out half your main base while 100's of ships watch on.

Gratuitous space battles (14h) - Another one that I'd tried the demo of earlier, but couldn't get into. Was the sweetner on a very good Humble Bundle. Once again it was understanding what the game was about; you don't just beat a fleet and move on, the whole game is about beating the fleet again and again with smaller and smaller fleets. This one is definitely for the optimisers, and that's me.

Demigod (12h) - Early 4-pack pickup from Ben for LANs. Older than LoL and it feels like it's from a different time. Plays Ok. No real bugs that I'd heard about on launch.

EYE Divine Cybermancy (10h) - Steamy sales. Had kept a bit of an eye on this one, but for less than 5 bucks it's definitely worth a go. Hacking started of being pretty cool (in all the things you can hack), but turns out to be rather boring. Game itself is interesting enough to continue regardless.

Dungeons of Dredmor (10h) - Interested in this one after listening to a dev chat on Roguelike Radio, and a steam sale + steam chrissy achievement was certainly enough to get me into it. Pushed enough to get the achievement, but will probably leave this one for later.

Orcs Must Die (7h) - Another cheapy with christmas coal at the end. Good atmosphere, but moved on to other coal-givers.

Civ 4 (6h) - LAN game with Levi. Bit of a blast going back after Civ 5.

League of Legends (5h) - Always the LAN staple.

Grand Prix Story (4hrs) - More of less completed it. Once I found out about accessing better cars and parts purely through upgrading the current parts (rather than seeing the investment as pointless) it was pretty easy.

Guardians of Graxia (2h) -  More Coal.

Jametown (2h) - Humble Bundle for coal!

Frozen Synapse (2h) - Indie coal!

Terraria (1h) - New patch with hardcore mode. Lasted an hour by the looks.

Saturday, December 10, 2011

Notorious: Rumour System

In an attempt to kickstart my programming of Notorious, I had a look again at the rumour system for the game:

Rumour System

  As the player interacts publicly with the villiage or other players, the rumour system will transfer information between NPC’s to build their own world view. Ultimately this world view will generate the notoriety that each player needs to advance in the game. Players can also subvert, create or enhance events that others know about in an effort to manipulate the notoriety of themselves or others. 

World Views:
Each individual NPC will have their own world view  of the events that occur in the world. These events can either be picked up as primary sources (the character participated in the event or was an eyewitness to the event) or secondary sources if someone else told them about the event. Characters may have conflicting reports from different sources, but will attempt to resolve these into a consistent world view that they are satisfied with. Players will also have a world view of everything that has been revealed to them in the game, and can use this to compare against others for detecting or interrogating inconsistencies.

A world view consists of a list (or tree structure) of events. Each event will require:
Description: Written text describing the event / rumour.
Source: Person establishing the event / rumour. Primary sources would have their own name here, otherwise it will be the name of the person who passed it on.
Characters: List of characters involved in the event. May also include items if they are unattached.
Evidence: Direct evidence that was used to confirm this event / rumour.
Links:  Other rumours that are related. May possibly be the same event witnessed by others.

There will also be a way for multiple events to be collated into meta-concepts, with links and evidence used to support the concept. As an example, a farmer notices an ogre approaching, the ogre attacking his cattle, then leaving with the corpses. Instead of running to the village and reporting each individual event, they can combine it into an “attack” rumour to talk about and link to each individual event. Multiple attacks with similar characteristics can be combined to generate a “pattern of attacks”. Ultimately these can be used to guide the creation of quests for heroes, and the general notoriety of the player.

When a character interacts with another, they have a list of events that they wish to tell others (depending on their personality; gossipy types will have a long list) ranked by their assumed importance, as well as a list of questions to ask to attempt to resolve internal world view conflicts. If a character hears a new rumour, that rumour is stored with a confidence level of how well they agree with it.Confidence can range from 100% (fully confident, adamantly so) to 50% (happy to accept as true) to 0% (not sure) to -50% (Rejected) to -100% (absolute rejection). Events left between -50% to 50% are contested and are issues that the character will attempt to resolve through conversation with others.  [May need a sigmoid function for confidence]

Player interaction with the Rumour System
Any character holding a linked gem will give the player complete knowledge of their world view. The player can automatically merge this information into their own world view, bring in any consistent events / rumours and manually handle conflicts, or manually process each event. Even if the information is merged automatically, it should be up to the player to agree or dispute certain events to create a consistent world view. This would entail viewing all the known details of a conflict, highlighting what the general consensus is so far (eg: 3 in favour, 4 not sure, 2 against), and allowing the player to shift their opinion either one way or another.

Creating Rumours
To create a rumour, the player can inject a new event into the memory of a linked creature, then give the creature an action of gossip in town (if needed). If the new event is consistent with other NPC’s world view, it is likely to be adopted and spread.

If there is an internal conflict within the linked creature there will either need to be more changes to make space for the rumour, or more power to add additional certainty to an idea. Complex changes may have even more difficulty in conveying to others.
There should be a way of predicting whether the changes will “take” before accepting the use of power. Rejected rumours stay within their memory as an “idea” that was eventually thought to be inconsistent, which will make successive attempts even harder (and possibly even make the creature doubt themselves as a primary source)

This is also the technique for removing events or modifying events, although care will need to be taken to make sure that these events are not re-exposed to the creature through talking to others.   

To make use of the rumour system, the player may wish to use a reliable villager to start rumours. They may be able to capture a local farmer, give him a gem (in a ring), link to it, then modify the event of him receiving the gem so that he thought it was given to him from his mother. Once you release the farmer, they can then be used to keep track of what is happening inside the city, as well as injecting and denying rumours. The credibility of the character is damaged if injected rumours are found to be false, or they are disagreeing with the general consensus on a rumour. Reduced credibility makes it harder to get others to support their primary sourced events / rumours. This could be used for “boy who cried wolf” scenarios too. 

*NOTE*: Unsure whether power use should be continuous to support a rumour, or a once off that is either accepted and assimilated, or rejected.

Saturday, December 03, 2011

GTX560 & PSU

Friday was also a good day. The new parts I'd ordered to help with my failing computer had arrived and was waiting for me when I got home. I only had a couple of hours between packing up at school and the staff Christmas party, but it was enough to install my new GTX 560 and NeoECO PSU. Not as big of a step up from the GTX260 as I'd have liked, but it definitely looks like it's solved the lockups 10mins after starting. Not sure if it was the PSU or the graphics card, but with the salt air down here, parts don't seem to last that long and both were the only things left from the last upgrade

Fans ... Lots of fans.

Last day

Open space ...
Last day at St Luke's came to a somewhat sad close as I packed up my desk. Everything I needed to keep all fit into my backpack, and a lot of paper went in the bin. I guess I'm lucky that most of my work is already digital and constantly with me anyway.

Thanks for the year must go to:
Chris: An excellent mentor and unfortunate neighbour to cope with all my questions.
Cassie: A great HoD who gave me a lot of support with my wild ideas for teaching. Thanks for all the help in verification, moderation and reporting.
Martin: Helped guide me into teaching when it was really only a wistful idea. His support and that of the school has given me the absolute best transition into teaching that I could have hoped for.

I know I'll be back next year in a limited capacity, but it really felt like leaving for good. St Luke's has been a wonderful place to work at for the past 6 years, and I'll have many fond memories & friends from the experience.

So why leave?

I'd been constantly asked that by all sorts of people at St Luke's. I had a standard response, and longer response and a how-long-have-you-got response, but really it came down to a feeling of entrapment. I've been heavily involved with computers and IT for the majority of my life, and even while teaching I would have put IT as about 2/3rds of my focus. Without the ability to teach IPT in the senior curriculum there's a big chance that I'd have to lose more and more of that IT experience as I become more heavily teacher focused. If I kept going, there would be a good chance that I would be teaching for 3 years or more, and that would pretty much rule me out of returning to the IT industry. I still like teaching, but resigning was a way to force me to look for other opportunities that may have both an IT and teaching focus.

There are many companies that are getting close to my vision of future learning and maybe I should be working heavily in that area. I know I don't have the entrepreneurial drive to go out by myself, but if I could guide some other companies a little closer to the end goal, then that would be a worthwhile contribution.

I'm still keen on giving University lecturing or some form of adult education a go. I have strong reservations about the way Universities are when MOOCs and open learning are becoming viable alternatives, but I'm not sure how to monetise the new breed of courses. What I definitely want to do is to put more work into my own model. Flesh out all the parts into a full design. Hopefully this will both force me to look beyond my own ideas and see what else is out there for referencing, and also help isolate specific opportunities to aim toward.

There is also some local opportunities to get back into tech support and business analysis. I must say that the best part about contract programming was getting right into the heart of a business and looking for ways to improve existing processes (whether that was through a program or not). If that opportunity comes up like I imagine, it will be a good change.

On the programming front, I'm also keen on getting back into working with Notorious. I'd made a bit of progress last time Andrew came down, but when I'm teaching it really felt like any time devoted to anything else was guilt-ridden. I think that'll be another post...

Like David, I'm also keen on getting back into more regular blogging. This one is a pretty good sign that being out of teaching mode will help.