• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
March 28, 2024, 05:00:41 am

News:

Use of ePSXe before 2.0 is highly discouraged. Mednafen, RetroArch, and Duckstation are recommended for playing/testing, pSX is recommended for debugging.


Control Panel Development Discussion

Started by lirmont, December 10, 2011, 04:03:58 pm

Pickle Girl Fanboy

Yeah, make a topic in Help or FFT Hacking.  You need to ask the experts.

In any case, here's what I remember.

You could have a "walk" layer, where you map out which tiles are walkable, which are flyable, what layer they are on, and from which direction they can be jumped over and which they can't.

Barius Valley (the one with the river in the middle) has an example of a tile on top of a hill, next to which is a steep, unwalkable incline, which you can jump over to get down, but which you can't jump over to get up.

Every tile with a layer above it is unflyable.  You also can't use the Lancer's Jump command from these tiles, though that's not what I mean by unjumpable.

Many of the story battles (Nelveska Temple, Golgoroth Execution Grounds,) have tiles with 2 layers, so there are plenty of places to check this.

Alternately, you could hardcode several of these effects to the terrain types, in the form of booleans for unwalkable, unflyable, and so on, but that won't allow you to replicate the quirks of the FFT battle system, because many of the quirks are dependant on both terrain, elevation, incline, and the relationship between nearby tiles.

It  makes more sense to have several yes/no values for each tile on a battlefield, like unwalkable from north/south/east/west, unjumpable from north/south/east/west/above/below, unflyable from (a/b/c/d/e/f directions), and so on.

****

And this doesn't include improvements and expansions to the FFT battle system, like interactive terrain.

You could have a battle on a big bridge, where the bridge splits in the middle and starts lifting up when a boat passes underneath.  So, while the terrain wouldn't change, the elevation, incline, and many aspects of the "walk" layer of the battlefield would.

Alternately, if you have a weather system (like Tactics Ogre: The Knight Of Lodis), and an incremental day/night system (like Ogre Battle: The March Of The Black Queen), then you'll have tides, which means Swamp tiles will become Sea tiles for a few turns.  And you could also allow the modder to change how long weather and day/night lasts, and whether they go by elapsed clockticks, elapsed turns per character, real time, or something else, as well as allowing it to be scripted in python.

I don't expect you to add these features to 1.0, but they should be on the feature request once this goes live and is tolerably buggy.

lirmont

Well, if it really does only depend on elevation/depth/tiles above, then I guess my original design was correct (that is, only storing the name and a reference id). It sounds like everything else is part of the walk feature (which Kivutar pretty much has finished outside of an issue he has posted on github about jumping). I guess I was confusing FFT's behavior with Tactics Ogre's behavior, where you have statuses for "Walk on Water", "Walk on Lava", etc. It was those I was concerned about missing on the actual terrain, but it doesn't sound like FFT has those. In which case, that's an add-on feature for later.

Pickle Girl Fanboy

If you ever play around with Ganesha, you'll see that what the tile looks like has nothing to do with the actual properties of the tile.  I'm not sure (ask an expert), but I don't think that the Geomancy skillset, which is dependant on terrain, has anything to do with what the tile looks like.

Though this should be obvious, now that I think about it, because no two tiles in FFT look exactly alike - walk data can't be tied to tile appearance, because the tiles aren't uniform in appearance.

lirmont

Yeah, it's not tied like that in Tethical, but each walkable/selectable tile has an entry in the map description file, and that tile entry has a numeric id that relates to that long list of terrain types. This is the only thing we're talking about getting out of a hard-coded state and into the database to be editable per game. That is, if the default game comes with the default FFT terrain types, you could change the terrain types' names, add new ones, and remove old ones. Past that, you can then point your map description file to the reference id number from your game.

If it were Tactics Ogre, it would be appropriate to add storage for such a list of statuses tied to a given terrain type. That is, "Lava" would require "Walk on Lava" to be movable (unless otherwise set on the tile's entry in the map description file). However, something like "Poisoned Marsh" might actually cause poison to be added to the list of a player's statuses. It might also be interesting to have that feature either add or remove some status. Like, perhaps a SCI-FI game might have a healing panel that adds the regen status to the player's list of statuses (if it isn't already there).

Pickle Girl Fanboy

I remember FDC (at least I think it was FDC) did some work with that exact subject, and produced a few hacks which let you apply a status, or create damage tiles.  And let's not forget that vanilla FFT has traps, of course, which are covered in the BMG.  I think Poison Marsh is covered in there too, as it's the only way I know of to poison undead, since all other ways to inflict it have a 0% hit rate.  That is a bug, inflicting poison on undead.  And having it do damage, too, since it shouldn't deal any damage (they're not alive, and poison is useless against non-living things), and neither should it heal them(since poison is not-dark elemental, but is neutral, element-wise).

So terrain should have the ability to inflict a negative status effect, unless the target is immune to that negative status effect.

I think that Any Ground negates poison infliction from Poisoned Marsh, so maybe the above should read:
*Terrain should have the ability to inflict a negative status effect, unless the target is immune to that negative status effect, or the target has an xyz which negates terrain-based status infliction.

But maybe there's another mechanism that governs unwalkable.  Because there could conceivably be a lava tile that's unwalkable, because it's lava AND because it's at a steep incline.  So maybe add an additional unwalkable flag, specifically for terrain that requires an xyz to become walkable; a conditional unwalkable, or something.  Like, unwalkable, unless actor has an xyz.

lirmont

January 06, 2012, 03:28:50 am #25 Last Edit: February 05, 2012, 02:45:31 am by lirmont
Yeah, traps will make their way into the database, but they'll be in their own space (like terrain types) wherein a tile in a map description file can reference them. Though there are currently no traps in-game, it would be relatively easy to make sure the hit% is always zero based on some condition (ex. Actor.Statuses.Undead != true, which would be false or 0 for an undead, which you could then multiply the rest of the hit% formula by to end up with 0 always).

Anyway.

formation screens:






--

Support for user-made maps. As a reminder, user-made maps may be in a different measurement paradigm than normal FFT maps.





Atma

Wow!  I haven't checked any progress related to Tethical in a while... AMAZING work!  You guys rock.
My name is Atma... I am pure energy... and as ancient as the cosmos.

lirmont

January 15, 2012, 07:37:54 pm #28 Last Edit: February 05, 2012, 02:44:46 am by lirmont
@PGF: There are other shots of it with characters, etc, here: http://ffhacktics.com/smf/index.php?topic=7408.0

@Atma: Thanks!


--

Add New Map feature:










This dialog window attempts to explain the two different formats you can use. They mainly deal with the resolution scale that gets applied to the model after it's loaded into Panda3d. In the first case, it's ~13 units. In the second case, it's ~1.5-1.85. It's largely unimportant to know that information so long as you follow the directions for setting up your initial file. Should either of those scales change within Tethical later on, you can still change the scale after the fact in the map settings area. The "One-to-One Scale" requires a negative offset of half the width and half the length of the map to move it into the appropriate place, but, rather than give you that option here, it exists in the map settings. Inasmuch, it will be calculated for you when you add the map via this dialog.



Kivutar

Very nice job as always lirmont! Keep up!
Tethical, an online FFT clone

lirmont

January 23, 2012, 08:40:36 pm #30 Last Edit: February 05, 2012, 02:44:07 am by lirmont
More stuff, including lights in a semi-working way, but, most importantly, guess tiles does something at this point, which reduces the 2+ hours it takes to manually write map description files down.

Anyway.

One of my test maps after being added with "Guess map tiles from geometry", but I added lighting after that:




Then clicking the "Remove Selected Map" button:




Then confirming it:




Map 001 with red lighting to demonstrate what it's doing:




Map 001 with no lighting whatsoever:




Map 056 with yellow lighting to demonstrate what it's doing:




Map 056 with no lighting whatsoever:


Kivutar

I would like to try it. Do you think it runs well on Linux?
Tethical, an online FFT clone

lirmont

I haven't tried it yet. I lost my VirtualBox install. Anyway, here is the source: source (zip). It's a monodevelop project. The executable is in /TethicalUI/bin/Release. You'll need to link against OpenTK, OpenAL, Newtonsoft.JSON, GLWidget, csogg, csvorbis, and the MySQL driver should you (probably) need to make changes to get it to run. Everything except OpenAL is included in the "Release" directory. All the other references came with monodevelop (or they're included). You need to edit the connections.xml to include your database connection, and you need to edit base-locations.xml to point to Tethical.

Kivutar

I had to link the assemblies and correct some path that were using backslashes. Now I get this error wich may due to a culture setting about "," and "." in Doubles:

Unhandled Exception: System.FormatException: Unknown char: .
  at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00016] in /build/src/mono-2.10.8/mcs/class/corlib/System/Double.cs:232
  at System.Double.Parse (System.String s) [0x00000] in /build/src/mono-2.10.8/mcs/class/corlib/System/Double.cs:200
  at TethicalUI.XModel.parseFrameTransformMatrix (System.String line, System.IO.StringReader reader) [0x00000] in <filename unknown>:0
  at TethicalUI.XModel.parseSection (System.String line, System.IO.StringReader reader) [0x00000] in <filename unknown>:0
  at TethicalUI.XModel..ctor (System.String modelFileName) [0x00000] in <filename unknown>:0
  at MainWindow.loadMapCursorModels () [0x00000] in <filename unknown>:0
  at MainWindow..ctor () [0x00000] in <filename unknown>:0
  at TethicalUI.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.FormatException: Unknown char: .
  at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00016] in /build/src/mono-2.10.8/mcs/class/corlib/System/Double.cs:232
  at System.Double.Parse (System.String s) [0x00000] in /build/src/mono-2.10.8/mcs/class/corlib/System/Double.cs:200
  at TethicalUI.XModel.parseFrameTransformMatrix (System.String line, System.IO.StringReader reader) [0x00000] in <filename unknown>:0
  at TethicalUI.XModel.parseSection (System.String line, System.IO.StringReader reader) [0x00000] in <filename unknown>:0
  at TethicalUI.XModel..ctor (System.String modelFileName) [0x00000] in <filename unknown>:0
  at MainWindow.loadMapCursorModels () [0x00000] in <filename unknown>:0
  at MainWindow..ctor () [0x00000] in <filename unknown>:0
  at TethicalUI.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0


But all my assemblies are linked with Culture=neutral so I don't see where this bug comes from yet. I investigate.
Tethical, an online FFT clone

lirmont

January 28, 2012, 08:45:14 am #34 Last Edit: February 05, 2012, 02:43:31 am by lirmont
The control panel running in Ubuntu 11.10 (in Oracle's VirtualBox) after an extensive rewrite of the icon code (because Stetic's auto-genrated code was not appropriate for this):

Main page


Map page (no OpenGL context because VirtualBox's use of Chromium doesn't supply any context strings to OpenTK for some reason, but you'll have an OpenGL context if you have hardware drivers probably):


Besides rewriting part of the code, the only thing I needed to do after installing updates was to install libopenal1. After that, just "mono TethicalUI.exe" in the Release directory. Anyway, re-download the source; I think it will run: source (sip).



MysticKnightFF5

This looks to me like it's shaping up to be a simplified D&D PvP...

lirmont

My special DM class will have "Throw Dice", "Where are the Cheetos", "Get me a Mountain Dew", "Magic Missile", and "Ragequit".

MysticKnightFF5


lirmont

January 28, 2012, 08:48:39 pm #38 Last Edit: February 16, 2012, 10:41:59 pm by lirmont
Only if you cast it into the darkness.


--

Next:






















Links to tracks mentioned (you can find them linked in related threads too):
AIRSHIP.ogg
Lighter than Air.ogg
Marching Against Happenstance.ogg
No Such Luck.ogg
ON THE OUTSIDE.ogg
Western One.ogg












The example is with game mechanics. Each item/row/record gets more space this way. No in-line editing this way, but that's how it goes. Editing will be done exclusively in the pop-up windows (used to create things now, but will be used for editing too).
















Kivutar

Tethical, an online FFT clone