Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411502 Posts in 69373 Topics- by 58429 Members - Latest Member: Alternalo

April 25, 2024, 03:13:49 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsSmash and Grab [Turn-based tactics]
Pages: 1 [2]
Print
Author Topic: Smash and Grab [Turn-based tactics]  (Read 6360 times)
Spooner
Level 0
***



View Profile WWW
« Reply #20 on: February 12, 2012, 04:52:08 PM »

Well, I spent a few days playing with making Robin, my turn-management server, although a significant chunk of the time was lost to annoying technical problems caused by moving into a completely new sphere (hosting apps in the cloud). You can now create players, upload and download maps, challenge people to games and send your action data to those games - abstractly via a console, at least; I haven't even considered creating a GUI to interact with the server Smiley

As I said earlier, the server has a RESTful interface, which I think was a good choice. It is both significantly easier to test, since each operation is separate, and it also suits the disconnected nature of the game. The intention is to allow people to play at the same time and sync as moves are made, but also allow for submitting turns, or partial turns, at any time. I also realised I had picked a server architecture that was mostly game-neutral, so I thought I might as well branch that off and make it a separate project which conceivably might be of use to someone else making a similar game.

Interestingly, designing the server opened up a few important things about the game as a whole, for example that if I want to avoid cheating, I need to post an action onto the server, then the server pass back a random seed, which is then used by the player to calculate what happens in the action submitted; they will only stay in sync if they both do the calculations from that seed correctly. Perhaps it isn't something I should worry about...

A bigger problem that I stumbled upon is how to manage AI when playing in online COOP mode, as well as how I'm going to serialise its forward planning when the game is saved and loaded (my intention is to make the server entirely dumb and not understand what it is doing beyond a concept of turns; the client can verify the data coming in is reasonable and reject it if it has been tampered with).

Although it was interesting to spend a bit of time on some server investigations, I can't wait to get back to the meat and bones of the game itself Smiley
Logged

Unity of Command (ex-lead programmer) and my personal games
Spooner
Level 0
***



View Profile WWW
« Reply #21 on: February 17, 2012, 11:30:10 AM »

Well, not a lot of progress in terms of code, but I've planned out the next few steps of development. I did some thinking about damage types and came up with a set of dice to calculate the effects (if you have an attack at skill 3 which is crushing/knock-back, then you roll 2 crushing and 1 knock-back dice. If the target is vulnerable to crushing, then you'd roll more crushing dice; if resistant to knock-back, you'd not get any knock-back dice at all).



Dice are, left to right:
* crushing (hp)
* fire (hp over time)
* poison (hp over time)
* electric (hp)
* piercing (hp)
* mental (lose actions)
* hold (lose movement points)
* knockback (move away; may take secondary damage from hitting objects or walls)
* cosmic (each dice will be randomly chosen from one of other damage types each time it is used)

I'm happy with most of the symbols, but really not happy with the piercing/knockback icons looking much too similar, but I couldn't think of a more differentiated pair of symbols (at this resolution). Maybe I'll try again with a pushing hand, but I'm not hopeful it will be clear.

I'm not totally committed to having a dice-based, rather than a more abstract, system, but I do think it makes it easier for the end-user to comprehend the probable effects of their actions. Unless I think of something that is really incompatible with this system, though, I think I'll keep to using virtual dice (though I don't want to make a big deal about rolling them, as some games do; I'll just show the results in the game log).

Full details of what is on each dice, as well as more details of what abilities I'm planning to implement and how they work is on the wiki. Also I've made a preliminary list of all characters in the game and their powers.
Logged

Unity of Command (ex-lead programmer) and my personal games
sabajt
Level 1
*



View Profile WWW
« Reply #22 on: February 17, 2012, 12:01:24 PM »

Cool dice!  Maybe you could try to make the piercing arrow even more narrow (like a spear) and add a little sparkle to the end to indicate it's pointy.  For the knockback, I think the pushing hand is a good idea if you can manage to make it different enough from the crushing hand.
Logged

Udderdude
Level 10
*****


View Profile WWW
« Reply #23 on: February 17, 2012, 01:59:05 PM »

Not sure adding that much randomness is such a good idea.  Ideally you want a game like this to be as deterministic as possible.  But hey, some people like the random crazyness .. :p
Logged
Spooner
Level 0
***



View Profile WWW
« Reply #24 on: February 17, 2012, 03:19:35 PM »

I had another go at the dice and I'm a lot happier with them. Some of the 2s are very unclear, but only some dice will have a 2 on them so it matters less.



@udderdude: Your point about determinism is noted. My system is based on ones quite commonly used in board games like Descent or Space Hulk, which are inherently quite random because they are intended to be more fun, beer-and-pretzel games. Remember, however, that the dice include the effects of to-hit and damage in a single roll, so they aren't as random as they appear. e.g. with a average superheroic melee/crushing skill of 3, you roll 3 dice, each with 0,0,0,1,1,1 on their faces (effectively 3d2 if you are a pen-and-paper RPGer). The probabilities are 0=> 0.125, 1=> 0.375, 2=> 0.375, 3=> 0.125 (average result will be 1.5), so it is a nice bell-curve, but does allow for rare fumbles/misses (0) and criticals (3).

As an alternative, if it had 50% chance to hit, but always did 3 damage, it would have the same average, but would never give a 1 or 2 result. The only properly deterministic result would be to always do 1.5 damage, or 1-2 perhaps as a compromise since I don't manage partial health points, but in both of those cases you can't miss. Sorry if you fully understand the maths; just clarifying it for everyone in case anyone else wants to throw in suggestions.

[EDIT: The other common number of dice to roll are 1, 2 and 4:
       1 dice is: 0=> 0.5, 1=> 0.5 # Not a bell curve here
       2 dice is: 0=> 0.25, 1=> 0.5, 2=> 0.25,
       4 dice is: 0=> 0.0625, 1=> 0.25, 2=> 0.375, 3=>0.25, 4=> 0.0625]

[EDIT2: Hmm, Piercing, which is has 0,0,0,0,1,2 on its faces, is a bit more random since rolling 3 of them gives a range of 0-6 rather than 0-3, although the average is actually the same and you only have 0.5% chance of getting a 6 out of it!]
« Last Edit: February 17, 2012, 03:36:30 PM by Spooner » Logged

Unity of Command (ex-lead programmer) and my personal games
Spooner
Level 0
***



View Profile WWW
« Reply #25 on: February 20, 2012, 10:14:56 AM »

Did quite a few little things:

* Actually implemented elemental combat (Blunt, Electric, etc.) and show overall results of dice rolls in log. Haven't bothered to actually show what dice are rolled and what each die shows yet.



* Gave up on having multiple actions per turn and just have one per character (saves clicks and the main effect I wanted from it, specifically having some abilities use 2 actions, can be mimicked by other parts of the system, such as requiring energy).

* Implemented resistances (roll less damage dice) and vulnerabilities (roll more damage dice).

* Added status effects, like burning and poison. In doing this, I changed a few things:
  - Mental damage prevents action for a number of turns, but can still move.
  - Poison reduces movement slightly, as well as doing damage over time.
  - Burning now does 2 damage per turn, but is less likely to have effect.
  - Changed cosmic damage to sap super-energy over time (if you have any), otherwise acting like poison.
  - Rather than sapping a set amount of movement, hold damage now just prevents movement for a number of turns. Maybe should add a special ability to "break free" when held, using your action to reduce number of turns held.

* Added knockback effect and secondary impacts (you get knocked back N tiles, but can give and take Blunt damage if you hit anything before you run out of impetus).

* Added some powers that use energy, specifically Second Wind (self-heal) and Flurry (get extra action). Probably should try to implement some of the more messy powers, like pet summoning or area effect attacks...
« Last Edit: February 20, 2012, 10:43:01 AM by Spooner » Logged

Unity of Command (ex-lead programmer) and my personal games
Pages: 1 [2]
Print
Jump to:  

Theme orange-lt created by panic