Final Fantasy Hacktics

General => Archives => Tethical => Topic started by: lirmont on December 10, 2011, 04:03:58 pm

Title: Control Panel Development Discussion
Post by: lirmont on December 10, 2011, 04:03:58 pm
As some of you may know, Tethical is already at a playable stage in development. That is, you can log into a Tethical server process, create or join a game, and be assigned a party of characters at random. You can then move your party members and attack other party members via a menu system. The game informs you whether you've won (all the other player's characters are at zero HP remaining) or you've lost (all your party members are at zero HP remaining). This is a tactical RPG's basic form, and this is what Tethical is right now.

As a reminder, Tethical aims to clone what FFT did before it. As such, the infrastructure for rules that govern gameplay is being developed. However, there are too many rules to incorporate into the next iteration of Tethical. That is to say, the format is written in a manner that is easily confusing considering it relies heavily on indices (which are numbers as opposed to human-readable information like "STR" or "SPD"). Furthermore, we have to consider that this will be a platform for further game development (rather than engine development), meaning that there should be a serious focus on a person's ability to add, remove, and change the information that Tethical uses to run.

I propose we start working on a Tethical control panel application. You may or may not be familiar with my other project related to Tethical's development, but I submit that to you as evidence of my effort and desire to accomplish such a thing. What I need from everyone are ideas for the design of such a program's interface while work on the game continues. From here on, I'll just refer to Tethical as "the game".

In my opinion, this should be the only program you need to edit the game. Yet, you are tasked with providing ideas to make editing the game manageable for the average person. It will need to encompass a variety of game mechanics, like character statistics and classes, along with network-related settings, like what port the server process might run on, and user management, like the player logins, their characters, and statistics related to gameplay. I expect this design process to take at least several months after which point implementing the features of the program will begin. Though, it is very likely that I will begin on an early prototype before then for my own personal development use.

So, what form should your ideas take? I would greatly appreciate it if you would download and use Glade (http://glade.gnome.org/) (for Windows users, the zip file you want is here: click to download (http://ftp.gnome.org/pub/GNOME/binaries/win32/glade3/3.8/glade3-bundle_3.8.1-1-20111123_win32.zip); download, unzip, navigate to "bin", and finally run "glade-3.exe"). Glade is an interface designer. It not only allows you to make an interface quickly on your own, but it allows me to use what you've done in the actual program, so long as you provide the XML of your finished design. With that in mind, please do not upload such files until much later. I would prefer you take a screenshot and upload that until the designs become more complicated. Credit for significant contributions will be given within the program, and credit for feedback and quality assurance will be given as well.

Thanks for supporting Tethical with your time.

--

Installation:


--

Features by Program Category

General




Art Directives




Game Mechanics




Race & Gender




Class-Related




Targeting & Selection




Items




Resources




Maps



Title: Re: Control Panel Development Discussion
Post by: Pickle Girl Fanboy on December 10, 2011, 05:48:47 pm
Glade is downloaded.
Title: Re: Control Panel Development Discussion
Post by: Kivutar on December 12, 2011, 03:29:53 am
Glade is a very great tool for building cross platform GUI. I used it for many projects with success. You can find tutorial here https://live.gnome.org/Glade/Tutorials .

We can also think to build this GUI using web technologies like Django. Because all the data is server side.

However, GTK3 can now be served in a webpage : http://www.webupd8.org/2011/09/gtk-32-released-with-html5-allows.html
so glade might be the right tool to use.
Title: Re: Control Panel Development Discussion
Post by: lirmont on December 13, 2011, 04:16:32 pm
If they make the internet any more awesome, I don't know how I'll cope. GIMP in a browser window was awesome.

I've started my own test app in Mono's C# binding with GTK# (so it's still cross-operating system at this point) to start writing out the numerous MySQL queries for later when I'll probably port it to Python + GTK (because, from what I've read, Python handles GTK more how I'd want to do it anyway). Some of the things I have working so far are loading database connections (as in, you will be able to target any Tethical database available to you), available games to view/edit (per database connection + user privileges), displaying game mechanics of the loaded game, displaying the mechanic functions (the "arguments", if you've read my earlier descriptions) with the composite formula string in normal notation (it's still stored in RPN).

With the exception of data tables, please don't consider any of this design valid. I'd much prefer something that's universally agreed upon to be useful (rather than what's easiest/normal for me to produce):

Games:
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-001.jpg)

Game Mechanics:
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-002.jpg)

Game Mechanic Function Arguments:
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-003.jpg)

Game Mechanic Function Arguments (in-line edit):
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-004.jpg)


If the data you're seeing confuses you or you want to learn more, the discussion of all that stuff is available to be seen in the "Bars" thread, where we all discussed what it would take to get the CT feature up and running.
Title: Re: Control Panel Development Discussion
Post by: Kivutar on December 14, 2011, 03:36:35 am
Oh that's great :mrgreen:
The new binding name for pyGTK is pyGI.

You can find all the doc here https://live.gnome.org/PyGObject and a good tutorial here http://python-gtk-3-tutorial.readthedocs.org/en/latest/

For people runing linux, I recommand Monodevelop http://monodevelop.com/ it handles C# and Python.
Title: Re: Control Panel Development Discussion
Post by: lirmont on December 17, 2011, 02:48:51 am
Argument tester. This is a working C# implementation of the RPN expression evaluator of the python code I found for the Tethical server process, except this one lets you type in what you want (instead of doing the lookups based on a character in-game):

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-004.png)

--

Race by Gender Raw Statistics

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-006.png)

Class-Specific Programming-Supplied Values

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-005.png)

Thoughts on the Raw Statistics? Do you think I should compress the view like I did for the class specifics view?

Thanks.

Title: Re: Control Panel Development Discussion
Post by: Kivutar on December 19, 2011, 08:00:09 am
Very nice!

I can't launch the game no more, I filled a bug report to Arch Linux this bug with panda3d packaging.
Title: Re: Control Panel Development Discussion
Post by: lirmont on December 19, 2011, 12:44:49 pm
I wonder what it is they changed. I look forward to when they release 1.8+.

Also, I went ahead an compressed the "Race by Gender Raw Statistics" display as follows:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-007.png)

All of the data from the previous screenshot is still attached, it's just not visible to the user. I don't have a good plan for editing/updating in this format yet, but I think this goes towards making the data much easier to deal with.

--

Race by Gender Character Name Pool
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-009.png)

Game Settings (re: an "Options" screen)
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-010.png)

--

Permanent Statistics
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-011.png)

In my setup, I haven't accounted for things like "SpeedFromEquipment", "SpeedFromMagic", "SpeedFromClass", but this is where those programming supplied game mechanics would be used. Also, current HP doesn't currently include subtracting total bounded damage and adding total bounded healing yet, but this is where that would happen to result in current HP. Similarly, MP doesn't currently include subtracting total used MP, total recovered MP, and total removed MP, but this is where that would happen to result in current MP. Current CT is also missing total gained CT and total used CT, but this is where that would happen to result in current CT; it also may need to be bounded by CTMAX, but that's not what FFT does.

For instance, CT may end up looking like: 0 + (Actor.Sum.SpAtCPlusPhase) - (Actor.Actions.Sum.MoveAndAct * Battle.Actions.MoveAndAct.Cost) - (Actor.Actions.Sum.MoveOnly * Battle.Actions.MoveOnly.Cost) - (Actor.Actions.Sum.ActOnly * Battle.Actions.ActOnly.Cost)

The Actor.Sum.SpAtCPlusPhase is a running total of Actor.Sum.SpAtCPlusPhase + Actor.Sp (evaluated at C+ Phase). Battle.Actions.MoveAndAct.Cost would be a scalar value of 80. Battle.Actions.MoveOnly.Cost and Battle.Actions.ActOnly.Cost would be scalar values of 60.
--

Finished custom entry field to allow in-line help text
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-012.png)

--

Support for GTK themes:
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-013.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-014.png)
Title: Re: Control Panel Development Discussion
Post by: Kivutar on December 25, 2011, 05:34:13 am
Nice work as always!
I finally managed to get panda working again on my laptop.
Title: Re: Control Panel Development Discussion
Post by: lirmont on December 25, 2011, 06:02:42 am
That's good to hear. I look forward to more new stuff.

3d model loading support for game maps (DirectX .x format; .EGG -> egg2x.exe -> loading through C# -> OpenGL)
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-015.png)

I don't have the code in yet for common viewing features (like panning, rotation, scaling) because I had to write the .X loader myself (but I figured it would be easier to do than to port their .EGG code, considering they use it for more than just models), and you can see I don't have the infrastructure in for pointing to and picking up the filesystem where Tethical is yet, but it's coming along.
Title: Re: Control Panel Development Discussion
Post by: Kivutar on December 25, 2011, 08:20:33 am
Awesome ! Do you plan to include a full featured a map editor in this project?

You can add a dependancy to panda and use panda libraries to load eggs. gomtuu managed to display a panda scene in Qt, there may be a way to do the same with GTK.

I started to work again on the replacement of the png textures for the skin. But I found a new bug in panda about spaces (I now use the CVS version). I reported the bug on the forums here http://www.panda3d.org/forums/viewtopic.php?p=78904&sid=a04d49248cf9bc79e7bd33e6ed8b3fec (http://www.panda3d.org/forums/viewtopic.php?p=78904&sid=a04d49248cf9bc79e7bd33e6ed8b3fec)
Title: Re: Control Panel Development Discussion
Post by: lirmont on December 25, 2011, 12:54:21 pm
I intend to have something that reads in the JSON of the map description (or creates its own in the case of adding) and updates or writes out changes because this will be a replacement for doing it by hand. I would also like to put the collision detection code I wrote during the rain program to work here to programmatically guess what the tiles are (so people don't have to do so much work).

For people reading this that aren't familiar with what JSON is, it's just a way of formatting data. The maps include such data as which tiles exist/are selectable, the scale of the map, its positional offset in the world, the background color to display, which effects (e.g. particle effects) to run and where, the model file to load, the music file to load, and which lights to setup.

I don't intend to add mesh editing controls for the actual map. Though I may provide an ability to save the .X file somewhere so that it can be used in blender. That will be a viable option for as long as you're using blender 2.49 or below, which is also what you'd need to use the existing .EGG exporter. There should probably be a note somewhere about not doing development work in blender 2.5+ until there is an .EGG exporter for it and an .X importer (both of which are available to you in blender 2.49). .X supports the frame transform (x, y, z, scale), multiple meshes, a list of materials, and frames (re: animation), so I don't think there will be any data lost between EGG and this format.

I may change to using .EGG directly in the future, but in C# that means I have to write a binding for each of the functions I want to use from the .DLL file (libpandaegg.dll probably), reference that DLL, then write the code to actually use the functions. I know what it looks like, but I admit that that's something I've yet to have to do (which makes me hesitant about spending time on it now).
Title: Re: Control Panel Development Discussion
Post by: Kivutar on December 25, 2011, 05:53:52 pm
I agree that we should not add mesh editing functionnalities. This editor is made to edit server side files.
We could use an interface similar to what Ganesha privide to edit tiles. Maybe displaying a matrix would be a good way to provide tile editing. We can already add a table for ground types in your database model.

Porting your curent C# code to Python would help using Panda instead of writing C# bindings ?
Title: Re: Control Panel Development Discussion
Post by: lirmont on December 25, 2011, 08:12:03 pm
Oh, yes, when I port it over to python at the end of development, it won't have the same problems I face in C#. For this, I just mean I want something as a quick prototype that I can easily change/show/update based on criticism and opinions, which, for me, isn't GTK and isn't python yet (and to some extent isn't Panda3d when you find an undocumented feature). If I had to learn GTK in the context of python, I think I'd be less far along because it's not a langauge I know well enough (though there are certainly more useful examples out there for python and GTK than GTK# has currently). I recognize that python has the superior implementation of GTK and, of course, it has immediate access to Panda3d, which is why the final project will exist in python. For the python port, these features I want will hopefully be able to link into Tethical's actual code. I hope that results in needing to make changes only to your copy of the game without needing to update the control panel software, but I don't care for this in the C# prototype. Outside of database interaction, the plan is currently just to quickly provide a look at what the real feature is that I want. I had hoped and do hope that as this progresses more people will speak up about what they'd want out of this. I can't imagine no one has an opinion. If the 2 months I quoted pass without many community-supplied ideas to improve this based on using other FFT tools, so be it, though.


--

Maps being read out of .egg files (converted to .X) in the filesystem driven by .json map files in the filesystem:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-016.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-017.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-018.png)


--

More mapping updates:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-021.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-019.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-020.png)


I haven't put in the functionality yet, but basically there will be two 3d cursors. One is for navigation. The other is for locking in a comparison tile. I haven't skinned the cursor models I made yet, but I intend to do it a la gold and brown.


--


Map and tile data linked to controls; slopes loaded out of Tethical filesystem; tiles hard-coded (but I don't know what numbers are in use, since I just took the names out of Ganesha):

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-022.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-023.png)


--

OGG file playing + artist/title/length:
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-024.png)


--

Map lights:
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-025.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-026.png)
Title: Re: Control Panel Development Discussion
Post by: Kivutar on January 03, 2012, 09:11:02 am
Oh man, I'm about to cry. This is awesome!
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 03, 2012, 11:45:11 am
Thanks! I'm not ready to write the save map code just yet, since I'm still missing a few things. I know right now I'm missing point lights in the "Lights" tab. I'm missing a whole tab called "Tilesets" (which I assume map to formation screen tile sets). I'm missing numbers to attach to the ground types (i.e. "Natural Surface"), but I couldn't find them in the programming so I need clarification on where the numbers for "type" come from. Once all that is done, I want to write a quick "Go Offline"/"Go Online" feature that will let you work on a file system without needing to connect to a database first. It will not have as many available links as the default approach, but I realized it will be bothersome to depend on a database to edit something it has only a little bit to do with (i.e. the name of game the file system folder maps to).

Unfortunately, the holiday season is over, and so I will have other obligations than this control panel.
Title: Re: Control Panel Development Discussion
Post by: Pickle Girl Fanboy on January 03, 2012, 01:30:08 pm
http://ffhacktics.com/wiki/Terrain_Surface_Types
^Is this what you're looking for?

I found it by starting at the following url and then playing follow the links:
http://ffhacktics.com/wiki/Maps
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 03, 2012, 03:29:42 pm
Yep, that looks like it. I'll get it integrated when I work on the program next. Thanks!

I also had an idea to show the items with a tile image to the left of the name in the drop-down list, so look forward to that, too, I guess. I plan on cutting an example tile out of the map texture images. For the prototype, I'm only planning on doing the basic ones (like grass, water, sand, stone) to demonstrate the idea, but the final product will end up with something complete.
Title: Re: Control Panel Development Discussion
Post by: Pickle Girl Fanboy on January 03, 2012, 03:41:57 pm
Quote from: lirmont on January 03, 2012, 03:29:42 pmI plan on cutting an example tile out of the map texture images. For the prototype, I'm only planning on doing the basic ones (like grass, water, sand, stone) to demonstrate the idea, but the final product will end up with something complete.

Remember that you need non-copyrighted terrain tiles when this go public.
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 03, 2012, 11:18:06 pm
lol, yeah. I needed that reminder. These are made with the same program I used for my own maps, and so they are free and clear.

Anywho:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-027.png)

As for terrain types being in the database, I'd like to do that. When I get around to typing all that information in, it will be in the form of: id, gameId, externalId, name. The externalId will be able to match whatever FFT had or whatever you want. I would like the externalId to be the thing that gets referenced, though. That way you can still push maps between different games (so long as they at least have the same terrain external id's set to the same terrain types). I need to think about terrain more (or it needs to be discussed) before I commit to that design. I feel like FFT required certain flags to enter certain tile types. If that's the case, we'll also need a table that references tile type and a status table.
Title: Re: Control Panel Development Discussion
Post by: Pickle Girl Fanboy on January 05, 2012, 05:51:38 pm
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.
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 05, 2012, 06:35:50 pm
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.
Title: Re: Control Panel Development Discussion
Post by: Pickle Girl Fanboy on January 05, 2012, 06:54:32 pm
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.
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 05, 2012, 07:21:47 pm
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).
Title: Re: Control Panel Development Discussion
Post by: Pickle Girl Fanboy on January 05, 2012, 07:36:41 pm
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.
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 06, 2012, 03:28:50 am
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:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-028.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-029.png)


--

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

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-030.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-031.png)
Title: Re: Control Panel Development Discussion
Post by: Pickle Girl Fanboy on January 14, 2012, 12:31:14 pm
That last one looks like Narshe.
Title: Re: Control Panel Development Discussion
Post by: Atma on January 15, 2012, 12:26:06 am
Wow!  I haven't checked any progress related to Tethical in a while... AMAZING work!  You guys rock.
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 15, 2012, 07:37:54 pm
@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:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-032.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-033.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-034.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-035.png)


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.


Title: Re: Control Panel Development Discussion
Post by: Kivutar on January 16, 2012, 03:43:41 am
Very nice job as always lirmont! Keep up!
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 23, 2012, 08:40:36 pm
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:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-036.png)


Then clicking the "Remove Selected Map" button:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-037.png)


Then confirming it:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-038.png)


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

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-039.png)


Map 001 with no lighting whatsoever:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-040.png)


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

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-041.png)


Map 056 with no lighting whatsoever:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-042.png)
Title: Re: Control Panel Development Discussion
Post by: Kivutar on January 24, 2012, 03:26:20 am
I would like to try it. Do you think it runs well on Linux?
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 24, 2012, 04:00:42 am
I haven't tried it yet. I lost my VirtualBox install. Anyway, here is the source: source (zip) (http://darkabstraction.com/showOff/ffhackticks/TethicalUI.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.
Title: Re: Control Panel Development Discussion
Post by: Kivutar on January 24, 2012, 07:44:31 am
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.
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 28, 2012, 08:45:14 am
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
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-linux-001.png)

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):
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-linux-002.png)

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) (http://darkabstraction.com/showOff/ffhackticks/TethicalUI.zip).


Title: Re: Control Panel Development Discussion
Post by: MysticKnightFF5 on January 28, 2012, 12:22:13 pm
This looks to me like it's shaping up to be a simplified D&D PvP...
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 28, 2012, 08:01:01 pm
My special DM class will have "Throw Dice", "Where are the Cheetos", "Get me a Mountain Dew", "Magic Missile", and "Ragequit".
Title: Re: Control Panel Development Discussion
Post by: MysticKnightFF5 on January 28, 2012, 08:12:00 pm
Will Magic Missile cure blind? :D
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 28, 2012, 08:48:39 pm
Only if you cast it into the darkness.


--

Next:


(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-043.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-044.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-045.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-046.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-047.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-048.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-049.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-050.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-051.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-052.png)

Links to tracks mentioned (you can find them linked in related threads too):
AIRSHIP.ogg (http://darkabstraction.com/showOff/ffhackticks/music/AIRSHIP.ogg)
Lighter than Air.ogg (http://darkabstraction.com/showOff/ffhackticks/music/Lighter%20than%20Air.ogg)
Marching Against Happenstance.ogg (http://darkabstraction.com/showOff/ffhackticks/music/Marching%20Against%20Happenstance.ogg)
No Such Luck.ogg (http://darkabstraction.com/showOff/ffhackticks/music/No%20Such%20Luck.ogg)
ON THE OUTSIDE.ogg (http://darkabstraction.com/showOff/ffhackticks/music/ON%20THE%20OUTSIDE.ogg)
Western One.ogg (http://darkabstraction.com/showOff/ffhackticks/music/Western%20One.ogg)


(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-053.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-054.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-055.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-056.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-057.png)


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).

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-brainstorm-002.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-brainstorm-003.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-brainstorm-004.png)


(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-061.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-062.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-063.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-064.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-065.png)
Title: Re: Control Panel Development Discussion
Post by: Kivutar on February 28, 2012, 03:28:42 am
Great work as always!

PS: I'm back :)
Title: Re: Control Panel Development Discussion
Post by: lirmont on February 28, 2012, 01:07:13 pm
Welcome back.

I've almost got a universal targeting function feature finished (in the control panel). The concept is done; I'm just bug testing the interface for it.

Concept-wise, you need to define two piece-wise functions. The first function appears in the control panel as an "Area Function Prototype" (or just "Area Function"). This is a list of squares that substitutes in for the map. This abstraction lets you only send necessary data (via server-to-client packets). The other function you have to define is called a "Target Function" or "Select Function". This picks squares in the "Area Function" and gives you a place to define applicable heights. The square selection is stored in a bit mask/byte list on the target/select function, read from left to right.

So, a 1-byte bitmask on an target/select function might look like "0x1F" in hexadecimal. That becomes "1111 1000". That would read:


And then that data gets paired with a height-list string on the target/select function to determine who can be picked when the function is used as a targeting function OR who can be selected when the function is used as a selection function.

Target/Select functions have defined levels which will allow them to be mathematically chosen/advanced based on a formula defined on a skill defined in a skillset. In other words, a skill like "Fire" could grow in size by having its level formula choose the appropriate level. In addition to that, this feature also allows for target/selection function nerfing (downgrading) in the case of a character not meeting certain requirements. For instance, perhaps a knight with black magic should not be able to target very many squares or select very many squares with any of the black magic skillset skills because it fails an intelligence or magic attack check within the formula to choose what level of the target/selection functions are chosen.

Anyway, this is what the definition interface looks like; you can see area functions in the first two and target/select functions in the last ones:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-071.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-072.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-073.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-074.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-075.png)
Title: Re: Control Panel Development Discussion
Post by: Pickle Girl Fanboy on February 28, 2012, 06:34:16 pm
Nice.
Title: Re: Control Panel Development Discussion
Post by: Lijj on February 29, 2012, 06:42:11 am
That's so great Lirmont, my mind is blown thanks for the example of the knight.. helps me understand why it makes a lot of sense to have this effect.
Lol at the smileys.
Title: Re: Control Panel Development Discussion
Post by: lirmont on March 11, 2012, 04:33:10 am
Next: File System Resources (images, etc.)


Item Categories
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-076.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-077.png)


Items (with categories shown)
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-078.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-079.png)
Title: Re: Control Panel Development Discussion
Post by: MysticKnightFF5 on March 11, 2012, 08:40:24 am
This is looking to me more like an SRPG Maker.
For the record, LOVING THAT IDEA
Title: Re: Control Panel Development Discussion
Post by: Choto on March 11, 2012, 08:49:24 am
Looks fantastic Lirm, question though. Will the items display "equipped by: Holy Knight, Dark Knight, other special class, etc." seems like it would be a pretty long list since most everybody can equip accessories, armor types, etc.

This thing's looking more exciting with each update though :D
Title: Re: Control Panel Development Discussion
Post by: lirmont on March 11, 2012, 12:18:01 pm
@luna: Yes, but using that name would give people the wrong impression of what the thing is, considering anything game-related with the word "Maker" in its title may well be considered part of the huge "RPG Maker" franchise. I feel like SRPGs in general have more rules than RPGs, and so it'd be a lot more work than "Maker" suggests. I think you'll wind up with a more satisfying end product, though.

@Choto: It's just placeholder text at the moment for testing. As much as possible, I want to take away your ability as a game maker to write things like "Equipped by..." (hardcoded text) in favor of the game actually telling you the truth at any given moment of the development cycle. That doesn't mean you won't have any control over it, that just means you won't end up lying to the end-user unintentionally. If you want to intentionally lie to them, you'll still have that option at a menu-creation level, but the defaults will be geared towards what actually exists in any given game's database.


--

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-080.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-081.png)
Title: Re: Control Panel Development Discussion
Post by: MysticKnightFF5 on March 15, 2012, 12:01:11 am
Tethical, the first ever DECENT SRPG creator!
Title: Re: Control Panel Development Discussion
Post by: lirmont on April 09, 2012, 08:20:10 am
Art Directives + Export to PDF feature:

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-085.png)

And the PDF that button generated: view (http://darkabstraction.com/showOff/ffhackticks/art-directives.pdf).


--

My Work-in-Progress Python IntelliSense Implementation (on top of my paged implementation of MonoDevelop's TextEditor control):

Text-Matching a Built-in (keyword?)
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-086.png)


Text-Matching a String (literal) Function
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-087.png)

However, I don't know how to tell which functions require being called from the module versus what can be called from the literal. For instance, string.capwords ("string") versus "string".capitalize(). This may only affect the string module, though.


Saving and then Running
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-088.png)


MonoDevelop's TextEditor beneath the Paged Interface:

Syntax Highlighting
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-082.png)

Other Color Schemes
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-083.png)

Firefox-esque Find Bar (Replace and Go-To-Line are like this, too)
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-084.png)


--

Showing Parts of the Panda3d Engine as Python Sees It
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-089.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-090.png)
Title: Re: Control Panel Development Discussion
Post by: Pickle Girl Fanboy on April 19, 2012, 04:55:28 pm
http://i.imgur.com/xlRSI.jpg

You may find this useful for designing a GUI.
Title: Re: Control Panel Development Discussion
Post by: lirmont on April 21, 2012, 09:56:18 am
Nope, I'm not creative enough to relate that to a GUI.

But (and the image obviously will not show the animation) here's what code for animating water (i.e. the texture of a loaded model) looks like: Tethical Event Demo (http://darkabstraction.com/showOff/ffhackticks/tethical-cp-091.png).

I want to be clear about what's going on in the demo so that people understand the utility of Python-based events. This event demonstrates how to animate water on a map. It's done completely in Python, and it's 126 lines of code long. It has two modes: (1) "event" mode and (2) "test" mode. That is, when Tethical calls the event, the Python code gets imported allowing the event to make changes to the scene (in this case, animating a texture on the map indefinitely; lines 84-125). Now, you can call this same event outside of Tethical as a stand-alone application; doing so will cause it to open up a test environment (this particular one loads the map the way the game would and then runs the event code afterwards). In other words, one file accomplishes what you want to accomplish AND lets you test it.

About testing, understand that you won't have to write the code for the test case, since I've already written it for you. You will either need to use templates that will be provided for you (say, on adding a client-side map event) or add it to your event on your own, but you won't have to do any of the heavy lifting (i.e. targeting the test environment or creating test environments). There will also be a button to launch the event script (i.e. the steps you see in the command-line window). It will be part of the control panel (rather than the text editor component I'm still working on).


--

Multi-Line Formula Printing with Typical Resulting Number Type
(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-092.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-093.png)

Number types: natural (N; 0 to positive infinity), integers (Z; negative infinity to positive infinity), fractional (Q; integers over integers), and real (R; continuous numbers; negative infinity to positive infinity, including all decimal places).
Title: Re: Control Panel Development Discussion
Post by: Kivutar on May 03, 2012, 03:42:42 am
lirmont this is beautifull!!!!
Title: Re: Control Panel Development Discussion
Post by: lirmont on May 12, 2012, 03:31:40 am
Download the testing application:

Windows: FormulaToImage.zip (http://darkabstraction.com/showOff/ffhackticks/FormulaToImage.zip)
Linux: FormulaToImage.tar.gz (http://darkabstraction.com/showOff/ffhackticks/FormulaToImage.tar.gz)

--

This is a call for formula editing suggestions.

So, my earlier post shows formula images that get created in memory during runtime (and then cached to disk). The next step is getting in-line editing into place. That requires writing an export path for the user interface. There are three components to that: displaying the current formula, ability to replace existing operators/operands, and ability to add/remove new operators/operands. I've got native display ready for testing, and I have a tentative function for replacement of operators ready.

So, basically, you can left-click on operators in the bottom half of the application to switch them through a list. You can right-click operators in the bottom half of the application to switch them backwards through the list. The formula will update after any part of it is changed.

The top-half of the application is the formula RPN string, a description of what it is, and an image to help verify the accuracy of the interface elements in the bottom half of the application.

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-094.png)

Later, my plan is to have operands be able to be selected from a drop-down list that's grouped by the type of game mechanic. After that (and I don't really have a good plan for this yet) I'll get adding/removing new operations into the formula. Don't get me wrong, the system could go as-is if people could stomach writing formulas in RPN notation, but I doubt that's a popular idea.

--

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-095.png)

Operand replacement added to the test application.


--

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-096.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-097.png)

Operator legend/help screen.


--

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-098.png)

Comparison functions.
Title: Re: Control Panel Development Discussion
Post by: Kivutar on May 24, 2012, 03:39:51 am
I tried it on Linux too, works like a charm. (except ^M in the shell file, and the Cancel button of the Help window)
What about adding live preview for RPN editing?
Is it easy to convert from infix to postfix ? People could write infix.
Title: Re: Control Panel Development Discussion
Post by: lirmont on May 24, 2012, 03:53:50 am
It's getting added to/integrated with what's already in this section of the control panel: http://ffhacktics.com/smf/index.php?topic=8157.0#msg162571 (http://ffhacktics.com/smf/index.php?topic=8157.0#msg162571)

Hopefully, we can get it into a state that doesn't require writing anything (but just uses the interactive editing feature).


--

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-099.png)

Background section cloning feature completed so that comparison functions can properly display duplicate versions of operations in their condition statements (note: this includes duplication of the replacement feature, so you can change any of the duplicates without worrying about changing the wrong operand or operator).

All that's left now is finding a concise way to add new operations to an existing formula. I may not bother to do that until I get some solid ideas, since I've gotten quite comfortable with just typing the things in (and so I'd only be using the display feature anyway).


--

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-107.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-108.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-109.png)

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-110.png)

Functionality now split effectively into: design (add/edit), display (the main area), and usage (the evaluator).


--

(http://darkabstraction.com/showOff/ffhackticks/tethical-cp-111.png)

FFT's base hit % formula, completely written with the drag-and-drop feature. This demonstrates that line wrapping is in place (not available for download yet).


--

Video of the editor in action: download video (http://darkabstraction.com/showOff/ffhackticks/tethical-formula-editor-preview.zip).

First formula demonstrates using the actor's class level in a damage calculation. Second formula demonstrates using how many targets the attack will hit in a damage formula. Third formula demonstrates type and location aware formula design. The game mechanics list is hard-coded for the demonstration. When it gets integrated into Tethical's control panel, that list will be pulled by game from the database the engine runs on.
Title: Re: Control Panel Development Discussion
Post by: Choto on July 05, 2012, 12:29:18 pm
NICE video... thing's lookin powerful and easy to use! One question, can you add in another formula into a new formula. Like say I have one formula called "magic damage" and one called "elemental modification", can I select those from the pull-down menu and throw them into a new formula? Would be super-convenient for auxiliary modifications
Title: Re: Control Panel Development Discussion
Post by: lirmont on July 05, 2012, 06:22:59 pm
Yes, the server expression evaluator (as opposed to the one in the tool) will source values of game mechanics based on single values (scalar game mechanics) or other formulas (non-scalar game mechanics). The point is, they eventually resolve to scalar values, whether the designer provided them in the database (like, the bonus/penalty percentage of ".25") or whether it's depending on the server-side engine to provide that (any of the "Programming Supplied" game mechanics; single use things like flags; aggregate functions like summation, counting, average, etc). Also, if you scroll back to some of the images of formulas in the actual control panel, they have something called "INPUT_VALUE" that lets you chain formulas (like how the FFT battle mechanics guide's damage chain is laid out in 20+ steps). Since rewriting most of the code, I have a better understanding of how this should have been done in the database (rather than how it is done), and so all formulas won't be required to have an "INPUT_VALUE", but all games will ship with a default programming-supplied game mechanic called "INPUT_VALUE".
Title: Re: Control Panel Development Discussion
Post by: kohansey on January 07, 2013, 05:32:30 pm
I've been following the progress of your project and I am very excited for the production release.  I noticed this discussion about the Control Panel and see you have a number of screenshots of a work in progress.  I was wondering if this utility has been released to the public yet and if so, where can I find a link to download it?

Excellent work
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 07, 2013, 06:16:54 pm
The download/installation instructions are in the first post of this thread, but they're involved because there isn't an installer at the moment. Additionally, the posted version is only compatible with the version of Tethical available on github and the database structure that corresponds to it; the toolset will have to be updated for the database and directory structure changes I've made since then, and I will not be releasing that as alpha-phase software (like the Sprite Animator and Control Panel currently are). You'll be able to get them after they're done via a "contributor's license" that doesn't necessarily cost money but will require you to contribute something to the project's community (re: meaningful feedback, royalty-free resources, like graphics, sounds, music, programming, etc, or donations). The licenses those non-alpha distributions will require will be linked to a user account (where your contributor or non-contributor status will be stored), and I've yet to start on that.
Title: Re: Control Panel Development Discussion
Post by: kohansey on January 08, 2013, 01:47:11 pm
Thank you for getting back to me.  I followed the instructions listed on the first post and was able to get the program working.  Just a side note, even though I changed the connections.xml file to match MySQL installation, the TethicalUI program still wanted to use 'tethical-root' as the user, instead of the one specified in the XML file.  After some trial and error, I was able to get the Select Game to activate and view all the information in the current database.  Under Server-Related there is a Maps option.  If I double-click this 'Maps' option, I can see 6 maps to choose from (fft -> Maps -> (map001, map002, map027, map042, map056, and map103).  However, if I select one of the maps, I don't see the 3D mesh that makes up the map, just the gradient background, is this normal?

Also I was wondering what your setup was when you created the sources for this UI application.  I tried to build the project on my Window's system, however, I keep getting errors stating that the Mono.TextEditor assembly missing.  I tried searching through the references, but the only Mono assemblies available are Mono.Cairo and Mono.Posix.  Is there something else I have to install in order to get the Mono.TextEditor assembly? 
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 08, 2013, 02:48:41 pm
3d models are currently stored in an EGG format which is Panda3d-specific. If you cannot see the model, it is very likely that the program is silently failing as it tries to use the provided Panda3d binary files for viewing EGG files. To make sure they're working, you can navigate to the "models" folder via a command prompt and attempt to run "egg2x.exe c:\path\to\tethical\eggfile.egg eggfile.x". One of the idiosyncratic things about Panda3d is that it requires everything to be on its model path. In other words, you can't provide an absolute path to a resource and just expect it to work; you need to make sure that the resource exists under the model path (a concept similar to the Windows PATH environment variable), and you can do this by editing the Config.prc file to have an entry with an absolute path to your Tethical installation for the variable "model-path". Depending on what error it gives you, you can also try installing Python and/or the Panda3d SDK (1.8) to fix it. Since the EGG format is human readable, I do have plans to write my own reader for it at some point, because I do not like having to provide ~60MBs of binary files just to parse out models.

Mono.TextEditor is DLL/library that is obtained by installing MonoDevelop. Update the reference to that library somewhere underneath MonoDevelop's installation folder.

As for the bug, you can change line 427 of Database.cs to the following to fix that:

Code (C#) Select
string connection = string.Format ("Server={0};Database={1};User ID={2};Password={3};Pooling=false;Allow User Variables=True;", config);
Title: Re: Control Panel Development Discussion
Post by: kohansey on January 08, 2013, 03:30:55 pm
After installing the Panda3D SDK (not the run-time binaries), and re-running the TethicalUI, I was able to see the maps in the UI.  Thanks for you help.

I am still having problems located the Mono.TextEditor assembly.  I just downloaded and installed MonoDevelop 3.0.6, Gtk# 2.12 and .NET 4.0 SDK, but it doesn't seem to make a difference, no Mono.TextEditor.

On another note, I am attempting to test out the current release of Tethical.  I downloaded the sources from Git and installed them in my C:\Tethical folder.  When I run the server I get the following messages in the command-line:

:express(warning): Filename is incorrect case: /c/Panda3D-1.8.0/etc/config.prc instead of /c/Panda3D-1.8.0/etc/Config.prc
DirectStart: Starting the game.
:express(warning): Filename is incorrect case: /c/Panda3D-1.8.0/etc/config.prc instead of /c/Panda3D-1.8.0/etc/Config.prc
:express(warning): Filename is incorrect case: /c/Panda3D-1.8.0/etc/config.prc instead of /c/Panda3D-1.8.0/etc/Config.prc
:express(warning): Filename is incorrect case: /c/Panda3D-1.8.0/etc/config.prc instead of /c/Panda3D-1.8.0/etc/Config.prc
Server listening on port 3001

I then run the client which is able to connect to the server and log in as 'lirmont'.  Next I start another instance of the client, which connects to the server, and log in as 'test' (networkuser that I created).  In both instances of the client, I get a blank dialog box with Party, Creator, and Map across the top and what looks like a button on the bottom (Create Party).  See attachment.

However, nothing happens when I click Create Party.  I am not sure what to do at this point, if someone could please offer assistance I would appreciate it.
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 08, 2013, 03:51:37 pm
With the project open, you will need to update (or delete and re-add) the reference to Mono.TextEditor to point to the Mono.TextEditor.dll assembly located where you installed MonoDevelop (ex: C:\Program Files\MonoDevelop\bin\Mono.TextEditor.dll).

Yes, they aren't actually buttons in that version of the engine; they're just images. You can look up the keys that correspond to the PSX buttons in the config.prc file. Triangle is 'v' for instance; that will take you to the map chooser.

In my reorganization of the project, the onscreen buttons are generated as mouse-accessible buttons using a box model as a background with the text over top reflecting your choice of keyboard or gamepad iconography; there's a thread on that here, but that version of the engine is not available yet because I've left a lot of things broken (that work in Kivutar's original version, which is the one up on github): Game States (http://ffhacktics.com/smf/index.php?topic=9218.0).
Title: Re: Control Panel Development Discussion
Post by: kohansey on January 08, 2013, 04:32:33 pm
Thank you again for getting back to me and for all the help you have given so far.  Thanks to you, I can now test two clients battling it out (sort of) in the Tethical world.  I tried your suggestion for removing the Mono.TextEditor reference and added the reference to the DLL like you said, however, I am not getting a whole lot of different errors when I attempt to re-compile the Widgets project:


c:\Users\jpw\Dropbox\TethicalUI\Widgets\PagedTextEditor.cs(4,4): Error CS0012: The type 'ICSharpCode.NRefactory.Editor.IDocument' is defined in an assembly that is not referenced. You must add a reference to assembly 'ICSharpCode.NRefactory, Version=0.0.0.0, Culture=neutral, PublicKeyToken=efe927acf176eea2'. (CS0012) (Widgets)c:\Users\jpw\Dropbox\TethicalUI\Widgets\PagedTextEditor.cs(4,4): Error CS0012: The type 'ICSharpCode.NRefactory.Editor.ITextSource' is defined in an assembly that is not referenced. You must add a reference to assembly 'ICSharpCode.NRefactory, Version=0.0.0.0, Culture=neutral, PublicKeyToken=efe927acf176eea2'. (CS0012) (Widgets)
c:\Users\jpw\Dropbox\TethicalUI\Widgets\PagedTextEditor.cs(23,23): Error CS1061: 'Mono.TextEditor.ITextEditorOptions' does not contain a definition for 'RemoveTrailingWhitespaces' and no extension method 'RemoveTrailingWhitespaces' accepting a first argument of type 'Mono.TextEditor.ITextEditorOptions' could be found (are you missing a using directive or an assembly reference?) (CS1061) (Widgets)
c:\Users\jpw\Dropbox\TethicalUI\Widgets\PagedTextEditor.cs(6,6): Error CS0012: The type 'ICSharpCode.NRefactory.TextLocation' is defined in an assembly that is not referenced. You must add a reference to assembly 'ICSharpCode.NRefactory, Version=0.0.0.0, Culture=neutral, PublicKeyToken=efe927acf176eea2'. (CS0012) (Widgets)
c:\Users\jpw\Dropbox\TethicalUI\Widgets\PagedTextEditor.cs(75,75): Error CS0234: The type or namespace name 'Document' does not exist in the namespace 'Mono.TextEditor' (are you missing an assembly reference?) (CS0234) (Widgets)
c:\Users\jpw\Dropbox\TethicalUI\Widgets\PagedTextEditor.cs(83,83): Error CS0117: 'Mono.TextEditor.DeleteActions' does not contain a definition for 'DeleteSelection' (CS0117) (Widgets)


I suspect that I am running a different version of Mono or the Gtk# libraries and I want to make sure I have everything installed correctly.  If you could let me know what version of MonoDevelop and Gtk you are using, I'll uninstall what I have and re-install the version you are using.
Title: Re: Control Panel Development Discussion
Post by: lirmont on January 08, 2013, 04:58:13 pm
This is the one I used while writing it: MonoTextEditor.dll.zip (http://darkabstraction.com/showOff/ffhackticks/Mono.TextEditor.dll.zip).
Title: Re: Control Panel Development Discussion
Post by: kohansey on January 08, 2013, 05:20:49 pm
After adding your DLL to the references, it worked.  I did have to change the .NET framework used in the Widgets project to 4.0.  Thanks again for your help.