Thursday, August 23, 2012

GameLog 264-266

Pirates: Tides of Fortune (30h) - Level 35 - fB game that seemed to have a good intro. Similarities to Notorious has kept me playing, although the insistence of inviting more and more friends to the game is getting pretty grating.

Fallen Enchantress Beta (20h) - New beta and a significant improvement. Not sure if it's coming off a lacklustre AI in Warlock, but the AI's have been performing much better here. The world itself has come alive a bit more too. Maybe not quite up to Warlock, but certainly holding its own now. Maybe just lots more quests would give it the final spark.

Kongregate: Chronicles of Blood (20h) - Veeyar 22 - fB game converted to Kongregate. What's keeping me in the game are the random drops and crafting. This combined with trading makes for an interesting path for developing your character.

Team Fortress 2 (12h) - New update for co-op mode. Not much co-op, but it's good to get back into 2Fort.

Left 4 Dead 2 (5h) - Picked up in a steam sale. Plays Ok for LAN, but didn't stick.

Realm of the Mad God (2h) - LAN game.

Notoriously Databased v0.31

User Interface

After a couple of multiplayer experiments, the main feedback was that there isn't enough information to show you what's going on in the dungeon. Some of that was intentional, but some was just poor placement (or no placement) due to the lightweight nature I thought this game would have. Now that it's being tested, it's kind of cool on its own to see a dungeon developing. With that, I put a bit more effort into presenting the data.
  - Reading the character's story defaults to only the story rom the last turn so you don't have to keep scrolling down to the end of the story.
  - Redid the Character Submission to more clearly show dungeon state, and how space is allocated. Also added the village state and current defense ratio.
  - Removed a couple of Edit / Delete hyperlinks to turn it into a more consumer experience instead of a database.
  - Highlight public stories
  - More stories about how many minions / elites are surviving
  - Indicator of who is the most notorious and that they are the focus of heroes. 

Bug List

 - Elites not defending properly
 - spelling errors
 - Villages now appearing back in the village when ransomed / released
 - Hero focus on proper highest notoriety character

Notoriously Databased v0.30

Strategy tests

I feel confident that the turn processing is at a point where I can attempt to test individual strategies and see where they would lead in the main game.

The Digger

The first strategy will be just a simple turtle that digs as much as possible. This will be the baseline to judge all the other strategies against as it will have the least amount of risk. If it is also sustainable without going through a wipe, then we'll have a big problem attempting to get the other strategies to eek out an advantage, so the first test is to see how far I can go before a wipe occurs, and also how long to get to, say, 10 spaces.

Since the hero attacks are predictable from your current notoriety, the strategy will be to only leave enough minions behind to fend them off and dig with the rest. It may pan out to be better to drop the defense and go through a wipe rather than holding out on the defense right until the end. We'll see.

Run 1 - Always defend: 15 turns to reach 10 size. Not too bad, but there are a couple of places where treasure could be utilized either for elites or on fortifications.

Run 2 - Defend until defenders more than diggers: 13 turns to reach 10 size (10.8). Seems a little wasteful throwing 9 into digging when it was already on 9.9, but 10 size is just an indicator and I'd rather keep the tests consistent to the strategy for the long run. Start certainly seemed better, and no drawn-out sections of no digging.

Run 3 - 1/2 Defend using elites:  Elites look Ok on the first turn, but then break horribly. More debugging.

Sunday, August 05, 2012

Notoriously Databased v0.26

With the turn processing finished, Notoriously Databased was ready for limited testing. Unfortunately some conflicts with the online database made the LAN tests a bit of a flop, even though I'd been able to test a couple of turns myself locally. Debug phase ...

The first issue was that the cascade on delete that I'd set up locally hadn't been merged over very well. I tried fixing it with a diagram system, but it kept complaining about multiple cascade loops when it was only cascading downward from multiple parents. Wierd. It allowed it on manual update of the foreign key though.

Next issue was that partially filled submissions were causing null errors, so I zero'd out all the null fields at the start of processing. Later on I found out that Characters not submitting a turn was throwing errors too, so created a default blank submission for those. Some other small errors were isolated & fixed in a couple of hours.

Testing the turn processing was getting a little tedious when triggering the proces from the admin panel, so I moved it to the player's screen to keep it all together for now. It raised another problem I've been having with MVC and the modelessness of web design: there doesn't seem to be a built in way of returning back to the previous caller, rather it lets the currently active action determine where to go next. I can see why this might be the case, but it's such a radical shift from traditional functional design, I'm surprised that they haven't tackled it in some way. There are far more complex issues (like entity framework) that have been solved. Hopefully I'm just missing something simple, which is quite likely.

Another thing I wanted was a quick way to see the character's story.  Earlier changes to the controller and views made it quite simple to make a method receiveing the character's ID and only outputting those stories. Since it was only called from the player's screen, at least I didn't have to worry about the redirection on completion. Limiting the stories to those involving the character was one step, but I also needed to include all public stories as well. In SQL this would be a simple ID=x OR isPublic=1, but it took a while to figure out how an OR could be imoplemented. Many methods to do an AND, but only one looked like it could also be manipulated into being useful for an OR by simply using C# binary logic in the where() clause. It looks like Entity Framework does a nice job of processing the logic and converting it into an SQL statement. I haven't had to reduce entity framework to SQL queries just yet, although there have been a couple of wierd interfaces to do more or less the same job.

After the turn processing I thought it would be a good time so show the whole story of the turn to whoever processed it (as another debugging tool). Setting up another list was pretty easy, but unfortunately I couldn't trigger it easily with a RedirectToAction() passing a parameter to another controller, but it feels like returning to the Player's screen was a more concise alternative anyway, leaving individual turn debugging relegated to the admin panel.

It's feeling nice and solid. Now for some serious strategy testing ... 

With turn processing triggered of fthe admin panel, and

Thursday, August 02, 2012

GameLog 261-263

Football Manager 2012 (40h) - Boston Utd (2015 League 2: 12th) - Finished the season with a strong mid-table showing, even though I was in with a shot of the title by the midpoint of the season. When the doldrums hit the team it toook longer than usual for them to shake it off and found ourselves 10 points shy of the playoffs. That's more or less where we stayed as hunting for new talent to take us up next season was my main priority. 
Kongregate: Chronicles of Blood (20h) - Veeyar 22 - fB game converted to Kongregate. What's keeping me in the game are the random drops and crafting. This combined with trading makes for an interesting path for developing your character.

Warlock (15h) - Some updates added heroes and it makes another interesting part of the game. The AI is still floundering though, I can't figure out whether they don't expand fast enough or get locked into massive troops and stagnate themselves, but by the time I want to go to war, I'm ploughing through them with no real resistence.

What I'd like is a ratchet system like Empire Deluxe where I can specify how much more of an advantage I give them, then the trick is to see how high you can put them and still eek out a win.

Sins of a solar empire (12h) -  Steam sale. Picked up a couple of copies to try out at LAN. One loong game over 7h, and a couple of multiplayer attempts.

Kongregate: assorted (10h) - Kong is turning out to be more alive than I thought, but is also bringing in major MMO's from the interwebs.

Kongregate: Berserk Cataclysm (2h) -Ticking over the attempts at taking my lands. Somewhere between Stronghold kingdoms and Chronicles of Blood in this game's lifecycle.

Stronghold Kingdoms (1h) - Popped in to see how my castles have withstood any attacks and they have done pretty well. Lot a couple though, so it's not on the gaming radar anymore.

Notoriously Databased v0.25

So much for esxprecting a fairly easy process to get the turn resolution complete. It's been over 15 hours, but finally is taking shape. Lots of effort in outputting stories as they will be the main interface for players to see what happened, and lots of code comments. I think it's teaching year 12 IPT that has made me comment more. It's a good thing, but adds time ...

Resolution Phases

  1. Validate the turn
  2. Town Raids.
  3. Hero attacks on Dungeon. 
  4. Attacks by other Characters.
  5. Returning trops.

Hero Attacks on the Dungeon

The main component of the game will be dealing with the escalating amount of heroes attempting to rid you from the world. in this section there's not too much to do. The Heroes' level will be dictated by the last turn's notoriety, or be found by a level 1 scout if no notoriety. The tricky part is absorbing the amount of damage to the fortifications and elites. I'd solved this earlier in the spreadsheet, but the different variable types made this a little interesting.

Attacks by other Characters

 When other characters attack, there is the chance that more than one will be attacking at the same time. If this is the case, they first all try to get past the fortifications, then combine strength to take on the dungeon. If there are any survivors they fight it out so that only one returns with the treasure. In the case of a draw (both sent the same amount of minions), the prisoners overpower them and escape back to the city. The outcome is that the dungeon is definitely wiped one way or another, and the attackers either havethe winning troops return or lose everything. Once again converting elite strength to overall strength and back again is a right royal pain, but having elites adds an additional way of spending money so I hope it'll be worth it.

Returning Troops

The raiding parties and attacks on other dungeons come back in this phase. Since there are data models set up to hold the results of these raids, it's simply a case of looking for any relevant data and integrating it to the next dungeon state.  There is also an opportunity to clean up the amount of minions ready for the next turn, dig out any new space, build any fortificaitons, or bring back the ransom.

Quite happy how the whole process turned out. Now to debug and make the stories more visible and enable a simple of triggering an end of turn.