Welcome, Guest. Please login or register.

Pages: [1]
Print
Author Topic: Game Play  (Read 5414 times)
zenbitz
Moderator
Community member

Posts: 1164



View Profile
« on: March 17, 2010, 11:53:36 PM »

This document superceeds all previous "Main Story" threads.  It's still a work in progress however.

Comments welcome.

http://wiki.parpg.net/Draft:Main_Story
Logged

We are not denying them an ending...
We are denying them a DISNEY ending - Icelus
shihonage
Community member

Posts: 22



View Profile
« Reply #1 on: March 18, 2010, 12:55:16 AM »

Quote
What I envision is that when combat is initiated between 2 sides, the game will use some kind of heuristic to determine which NPCs in the "local map" area are close enough to be "involved" and if they are friendly/enemy to the PC or neutral. We could also have NPC-NPC fights, with the PC/party as neutral. Some NPCs in the local "area" will be close enough to "note" but not close enough to be in the fight. These could arrive in later rounds as reinforcements to one or the other antagonistic sides (probably there should be some "belligerence" check for the NPCs, so you don't get grannies involved, etc.)

When Shelter's combat was still turn-based, I spent a lot of time trying to solve problems related to implementing this sort of mechanic for it.

One of the biggest problems was the concept of the "fight" being understood by the engine as a localized "zone" containing a specific fight encounter.

More precisely, the problem lied in the game determining:

a) The center of the fight - is there a center ? Or do we simply monitor the boundaries of the fight from the farthest members currently aggroed in the fight ? If its the latter, then we start a chain reaction throughout the map... which was likely part of the reason why Fallout games went ahead with just aggroing the whole map against you.

b) How do you localize a fight ? When do you decide that you have two fights in close proximity to another ? What if through people's movement and "run-by shootings" they merge into one ? What if one fight splits off into two, by someone chasing someone else away ?

Given the complexity of these problems, I would recommend avoiding any circumstance where the engine is forced to determine what a "fight" is, and limit its scope to individual "fighters" managing their immediate surroundings, rather than managing "fights".
Logged

Developer of Shelter - Fallout-influenced isometric CRPG. Videos: gameplay_11/08 (re-annotated), introteaser_01/09.
zenbitz
Moderator
Community member

Posts: 1164



View Profile
« Reply #2 on: March 18, 2010, 04:03:34 AM »

Great points.

This is why I think isolating combat in a "battle map" will be better.  Also, Shelter is the game with the living world with NPCs/monsterts fighting each other all the time.  I think that's cool, but if we implement it, I would partition it and abstract it out rather than doing it "in time" (but I could be mis-remembering or mis-representing what your game does from the original video)

Here's what I was thinking.  On the local (normal, RPG map where you talk to people), combat is initiated.
Let's start with the obvious case where PC is hostile with 1 enemy.   Immediately, the game calculates and "initial battle" between the PC+Party and enemy + enemy faction, restricted by some radius ON THE LOCAL MAP.     Those initial belligerents are "transported" to the battle map, which is constructed semi-randomly from the terrain in the local map (probably using the same "aggro" radius) to determine who is fighting.
The radius could be calculated from the PCs position, or the center of mass of the "initiators" (whomever triggered the battle in the first place)

In the case of zero neutrals and zero "reinforcements", the battle proceeds, the PCs win (don't they always) and the battle ends.   Some time is "run off the clock" in the game for the battle, but nothing really happens in the local map.  Battles, at 1 sec per round or so shouldn't take more than "Minutes" at 60 rounds each, and we can realistically blow off anything significant happening in the game world on the order of minutes.

Now there is a "battle aftermath" - PCs reputations are updated (with various factions) -- this could include of other NPCs moving into a "belligerence on sight" state, quests are updated as necessary.  Probably some other things that I am forgetting...

So then we are back at the local map, now with dead bad guys (yes, there is a discontinuity in where they "are" but in the local map is something of an abstraction anyway, unless one intends to model the entire population of a town...).   If the PCs just pissed off the whole town, then it won't be long before the NEXT batch of guys initiates combat (although they will have a chance to sneak off), and the same thing repeats.

This can be extended easily to neutral parties in the original combat radius - they just don't attack until they are attacked.   The "reinforcements" come in by making a second radius outside the main combat radius and "marking" all the NPCs there in.  They will either be marked as "belligerent" (i.e, willing to fight) or not, and will of course have a faction or side associated with them.  If they are both belligerent AND "have a dog in the fight" (i.e they are closely aligned with one of the parties fighting) then they will "arrive" in the battle map at some time determined from their distance from the "center" (as mentioned above, there are a couple ways of doing this).

This may seem like a huge break from Fallout and other "classic" turn based RPGs, but it's actually not.  Most of those games switch from real-time to turn-based on combat anyway.  This just changes the distance scale and map as well as the time scale.   Note that REALLY old games like Wasteland and Ultima IV did something very similar to this.

One thing I didn't consider (until just now) was LOOT.  Can't have an RPG without looting the bodies.   If you think about it - is there interesting game play value of "walking up to a corpse and searching it?"  Not really.  We could just add a "loot bodies" phase to the "battle aftermath"  where the player has to decide how much time to spend searching the bodies...   Another idea would be to just drop a loot object on the local map "somewhere near the player" that can be dealt with on the local map.

Hmmm... it seems like a combination would be best.   The problem with only allowing looting via the "aftermath" is that if the player decides NOT to loot, and gets into more fights (because he's a psychopath that is fighting the city guard, for example) then how do we go back and get the loot when it's quiet again?  So we need to leave something "permanent".

I do rather fancy the idea of it taking (game) time to search corpses, cabinets, rooms, ruins, what have you.
Logged

We are not denying them an ending...
We are denying them a DISNEY ending - Icelus
shihonage
Community member

Posts: 22



View Profile
« Reply #3 on: March 18, 2010, 09:43:45 PM »

Why bother with an artificial mechanism, separated from much of the gameplay engine, and then playing slave to that mechanism (i.e. handling looting, incoming reinforcements in unnatural ways) ?

I understand you have ambitious ideas about scale of settlements which is dictating how you want to frame combat... but how will this scheme handle combat with a stray wolf ? Is it worth transporting everyone into a separate map just for these small encounters ? If not... this means you're sticking to the "Auto solve" button idea ?
Logged

Developer of Shelter - Fallout-influenced isometric CRPG. Videos: gameplay_11/08 (re-annotated), introteaser_01/09.
zenbitz
Moderator
Community member

Posts: 1164



View Profile
« Reply #4 on: March 18, 2010, 10:26:00 PM »

It's because I find combat at cRPG scales to be bad -- except in the case that you mention -- 2 single opponents engaged in HTH combat. 

I can see that "ideally" you would have an RPG map that was large scale enough to fight on properly, but it would take you 1/2 an hour or more of real time to walk across town.  And no one wants that.  And that's leaving aside the art assets needed.  I don't see that it's any more artificial than world map/talky map or indoor map/outdoor map that all these 2D games use.  Nor do I think typical RPG "looting" mechanisms are anything but artificial.   Most of the the time you cannot even loot them for the weapons/armor they use against you!

I suppose it can work if your environment is fixed - i.e. a true dungeon crawler... but anything "outdoors" (which is a big part of this game) is going be "bad" I think.

Possibly this idea sucks, but I listed in the doc as an "option".   It should be trivial to "collapse" it into the version where there is just a world map and a "walky/talky/fighty" map.



Logged

We are not denying them an ending...
We are denying them a DISNEY ending - Icelus
shihonage
Community member

Posts: 22



View Profile
« Reply #5 on: March 18, 2010, 10:36:08 PM »

By artificial I simply meant having a system that isn't part of the original system, that needs to be connected "through a series of tubes", if you will.

I.E. if you handle combat in the settlement, the enemy reinforcements are natural result of walk-by aggro, and looting is "standard", i.e. corpses lying around.

If you handle it separately from main gameplay, you have to write a ton of extra code for handling the same functionality. That's what I mean by artificial.
Logged

Developer of Shelter - Fallout-influenced isometric CRPG. Videos: gameplay_11/08 (re-annotated), introteaser_01/09.
zenbitz
Moderator
Community member

Posts: 1164



View Profile
« Reply #6 on: March 19, 2010, 12:46:07 AM »

By artificial I simply meant having a system that isn't part of the original system, that needs to be connected "through a series of tubes", if you will.

I.E. if you handle combat in the settlement, the enemy reinforcements are natural result of walk-by aggro, and looting is "standard", i.e. corpses lying around.

Sure, that's what I mean by this is the default way.  But if it sucks, why bother.  "Combat" is already an extensive subsystem in the game.  It's not like a simple skill check (although you could do it this way).  It's not like a dialog interface.  It's not like searching or picking stuff up.

Quote
If you handle it separately from main gameplay, you have to write a ton of extra code for handling the same functionality. That's what I mean by artificial.

What functionality is repeated?  Moving and animating?  That's already done by a distinct engine.  All that changes is the map and how you interact with stuff.  Note that this also prevents the hyper-unrealistic stuff you get when you let PCs "do stuff" to the map (talk, search, interact with) during combat.
Logged

We are not denying them an ending...
We are denying them a DISNEY ending - Icelus
shihonage
Community member

Posts: 22



View Profile
« Reply #7 on: March 19, 2010, 11:45:57 PM »

The added functionality is "determing when to spawn reinforcements based on their position on the real map" and "handling loot".

Also, you will need to design a separate set of combat maps, it looks like.
Logged

Developer of Shelter - Fallout-influenced isometric CRPG. Videos: gameplay_11/08 (re-annotated), introteaser_01/09.
rowanthepreacher
Community member

Posts: 139



View Profile Email
« Reply #8 on: January 27, 2011, 11:42:50 AM »

Combat in the normal map has many advantages, though.

Fleeing civilians, interesting terrain, all that good stuff. You can start a fight and duck back behind a building, leaving your foes out in the center of the map. In general it will make ambushes (both by and against PCs) much more interesting.
Logged

Testiculos habet et bene pendentes.
zenbitz
Moderator
Community member

Posts: 1164



View Profile
« Reply #9 on: January 27, 2011, 05:14:09 PM »

Yeah, ideally you put the local map at the best combat scale.   I just don't think that's practical either.
"Premature optimization is the root of all evil" but I have a real concern about the scale of the fight and I want to have thought about other options.
Logged

We are not denying them an ending...
We are denying them a DISNEY ending - Icelus
Pages: [1]
Print
Jump to: