• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
March 19, 2024, 06:15:27 am

News:

Don't be hasty to start your own mod; all our FFT modding projects are greatly understaffed! Find out how you can help in the Recruitment section or our Discord!


Tethical, online FFT clone

Started by Kivutar, February 25, 2011, 04:38:42 am

Kivutar

February 25, 2011, 04:38:42 am Last Edit: September 29, 2011, 03:52:58 am by Kivutar
    Hi FFT hackers,

    I started writting an FFT clone.

The goal

The goal is not to make a complete game, it's too much work for me alone. But I think I could release a small playable demo.
The game would be online and PvP, no AI for now, no classes for now, something very minimal and easy to code.
However, it is an open source project so I try to make things as reusable as possible. So the project may be usefull to people wanting to code a more RPG-oriented FFT, by provinding classes for battle mechanics and the graphical engine.

Technical details

Temporary server written in Perl with Dancer. (Of course I plan to drop HTTP wich is not suitable for the project.) Server written in python using the datagram protocol.
Client written in python using Panda3D engine.
Source code on github https://github.com/Kivutar/tethical
Website: http://tethical.kivutar.me

I'm currently working on


  • Effects

  • Fonts

  • AI

  • Official map exporter

  • Keyboard support

  • GUI

  • New maps

  • Disabled menu items

  • Battleflow bug

  • Direction buttons

  • Baked shadows

  • Gameplay

  • Too much freedom in camera movements

  • Character animation bug

  • Using CEGUI, a better GUI Switched back to DirectGUI for now

  • Server not supporting xyz indices for tiles

  • Ugly textures

  • Connecting client and server

  • Contacting people like the ffh guys, dbp, gomtuu, Mephs, Calvin Chen, ebonrai, galaxymage team, sofakng, onimatrix...

  • Replacing copyrighted content from the client

  • Nice 2 color background



Changelog

09/29/2011

  • Special effects





08/20/2011

  • Formation screen
  • Bugfix for the camera ratio
  • Code refactoring
  • New keyboard config
  • Typo fix in Lijj Direction.py
  • Keyboard configuration in the config file
  • Remove kivu and lirmont folders server side too
  • Code cleaning
  • Configuration variables for the keyboard
  • Code cleaning
  • Apply the last two patches on Lijj folder
  • Fix the hand texture
  • Remove the characters on attack_check image, replace them with the fixed font
  • Fixed many issues with the regular font: color, shadow, line height, spacing
  • Removed kivu and lirmont folders for now, they add too much work
  • Custom direction chooser for Lijj game
  • Added modularity for the code
  • Config files, multigame support
  • Forgot to add particle textures and config files
  • 12 palettes for Lijj's girl knight
  • Particle effects in the battle
  • More UVmapping for the map 007
  • Finaly fixed sprite resolution
  • Battle cursor pointer
  • Remove the action preview when the battle is complete
  • A lot of improvements in the attack GUI flow
  • Attack check message placement fix
  • gitignore
  • Resolution fix
  • Double resolution sprite + per team palettes
  • Daylight version of the custom map 006
  • Remove the auto shader to temporary fix the background bug
  • UV mapping improvements on map 007
  • Custom texture for the first custom map
  • Better texture for the zones
  • Textures for attackables and walkables tiles
  • 40x40px cursor and shadow
  • Finished to declare the tiles for the second map
  • Second map improvements
  • The new map exported to egg
  • Map rename
  • UV texture for the second map
  • Map improvements
  • Map cleaning
  • A new map almost modelized
  • Point light support
  • Higher walk animation speed when moving
  • Some modeling experiments
  • Fixed the other json map files with the new syntax for multiplayer





06/23/2011




06/17/2011

  • Some job informations

  • Compute CT using character speed, according to the Battle Guide Mechanic...

  • Better job files from the Battle Guide Mechanics

  • Compute true character stats using their job and level

  • True bare handed damage formula

  • A new small font + display true brave and faith

  • Some improvements on the return to party list code

  • Removed the useless STATS datagram

  • Fix for the canact bug



06/09/2011

  • Unload the map chooser models

  • Added the small jump animation

  • Center the intro animation on the map bounds center

  • Code cleaning

  • Refresh button texture

  • Added some imagemagick scripts to export sprites to tethical format

  • Display the sprite corresponding to the job and gender of the character





06/04/2011

  • The new map chooser





06/02/2011

  • Display battle coordinates with the official font

  • Allow characters to move through death bodies

  • Allows characters to move through the tiles containing a team member

  • Server code cleaning to prepare move algorithm improvements

  • 4th custom map model

  • Send only usefull informations to fix the lag on character turn

  • Code cleaning

  • Made the help message cancelable





05/31/2011

  • Added UV coordinates to all slope models, so they are texturable

  • Moded the client code to switch cursor shape according to terrain shape

  • Color the cursor in red when on an unwalkable tile





05/23/2011

  • I finally understood how panda fonts work

  • Made a multicolored (black & white) font

  • Display character's stats during the battle





05/21/2011

  • A new custom map

  • Add an unfinished custom map

  • Fixed the map exporter to not place characters in water

  • Allow more parties to be created

  • Connect server only when credentials are provided

  • Window title

  • Return to party list after a battle

  • Battle Complete datagram

  • Fix the Game Over screen

  • Code cleaning





05/17/2011

  • Updated the README to reflect the server switch

  • Raise TCP header size to allow bigger maps

  • Change default port to 3001

  • Fix damages

  • Command line argument to specify server port

  • Prevent panda to open a window for the server

  • Renamed some files

  • Server rewritted to python, switch to the datagram protocol

  • Readme

  • Attackables algorithm takes height into account

  • Move algorithm takes jump stat into account

  • Remove useless code

  • Add genericity so the game can handle both original and custom maps



05/03/2011

  • Export complete .obj maps with flipped normals

  • First steps in map logic export





04/26/2011

  • First official map exported, special thanks to lirmont who wrote the exporter!





04/25/2011

  • Fix for the tile ratio bug

  • Fix for the sprite animation bug

  • Conditions for winning screen

  • Congratulations screen

  • Game over screen





04/22/2011

  • Fixed the terrain aspect ratio

  • Fixed the walk speed

  • Color fix for the direction chooser textures

  • Move and Attack check messages

  • Hide the black overlay when selecting a character to attack

  • Fix cursor Z

  • Clear the blue zone before the character starts to walk

  • Textured cursor





04/21/2011

  • New map

  • Keyboard driven battle menu





04/20/2011


  • Battleflow bugfix: clear attackable tiles on cancel and any special tile...

  • Fix the no walkable battleflow bug + keyboard driven cancel menu

  • Keyboard driven direction chooser

  • Keyboard driven help messages

  • Code refactoring: tile chooser keyboard events

  • Code refactoring: battle phases





04/16/2011

  • Display character name, job and sign in the character status

  • Right sound effects for the lobby widgets

  • Add camera movements for move and attack action in passive phase

  • Better use of the lobby tasks to poll the server

  • Add a 1sec delay before first character start

  • Lobby code refactoring : moved all the GUI related code to the GUI module

  • Keyboard support for the tile chooser





04/11/2011

  • First steps in displaying character status





04/10/2011

  • Better battle introduction, with camera moving around the map

  • Help messages for the direction and tile choosers

  • Fixed the wheel background resolution, it was blurry

  • I fixed the camera height, it was too low





04/08/2011

  • New lobby GUI

  • FFT font

  • Ramza sprite





04/05/2011

  • Better party selection list

  • Less hardcoded accounts, the way is open to store accounts in a database

  • Walk speed fixed





03/29/2011

  • Automaticaly open active character's menu

  • AT sprite

  • Lock camera control and tile highlighting when needed

  • Direction selector

  • Automaticaly open direction selector when character has already moved or acted





03/25/2011

  • BGM

  • Sound effects

  • Basis for a better GUI





03/19/2011

  • Better aspect ratios

  • Better camera angles

  • Unique texture for maps

  • Transparency bug fixed

  • Character shadows





03/13/2011

  • Characters can attack, lose HP and die

  • Lot of code cleaning

  • Added 'weak' and 'dead' statuses to the sprites

  • Some work done on a new GUI wich is way better





03/09/2011

  • Battle moves shared accros the server

  • Better camera movements

  • Code cleaning





03/06/2011

  • 2 color background

  • keyboard driven camera handler





02/27/2011

  • Random team generated

  • Full support of xyz coords server side

  • Draw walkable tiles sent by the server





02/26/2011


  • Players can create parties

  • They can join parties too

  • Removed formation screen for now, a random team will be generated





02/23/2011

  • Original map + original but ugly textures

  • Coords displayed top right of the screen

  • GUI to connect the game server, and create a party





02/19/2011

  • Uncomplete camera movements

  • Character movements keeping right direction

  • Exported official map using Ganesha, but texture issue





See also

[/list]
Tethical, an online FFT clone

Eternal

  • Modding version: PSX & WotL
"You, no less human than we? Ha! Now there's a beastly thought. You've been less than we from the moment your baseborn father fell upon your mother in whatever gutter saw you sired! You've been chattel since you came into the world drenched in common blood!"
  • Discord username: eternal248#1817

Pride

Between this and dbp's project, I have high hopes for an online pvp fft. I simply can't wait ^_^
  • Modding version: PSX
Check out my ASM thread. Who doesn't like hax?

Dome

Awesome stuff
Keep up the amazing work!

"Be wise today so you don't cry tomorrow"

Kivutar

Thanks a lot for your support.
I added a new video.
Tethical, an online FFT clone

Cheetah

Holy crap where are all these game programmers coming from crawling out the woodwork. If it is at all possible to merge this project with dbp's that would be amazing. Two heads are better than one and there is no reason to have two similar projects not at least contributing to eachother.

Amazing work keep it up!

The DREAM is coming true.
Current Projects:

MasterGrand

Last we can play FFT online .

Great job keep it up !
Let's be together !!

Kivutar

Ok, I PMed dbp about sharing things.
Tethical, an online FFT clone

dbp

Hello  :D
Good job so far Kivutar !

About merging project together, i feel like it will be difficult because of the different programming language.
I think that both technologies will do a different job, with good and bad points.

For example, any kind of 3D will be really faster than Flash.
But, Flash, is better to play online form any computer that have Flash Player installed.

But, about the sounds, musics, textures, and stuff like that, i am 100% ready to share !
Final Fantasy Flashtics v0.6 --->

Kivutar

Hi bdp, thanks a lot for your quick reply! :D

Sure merging the clients is not possible and we both don't want to do so. But what about sharing the same server?

I'm also interested in seeing some algorythms you have implemented better than me, like the one that returns walkable tiles for a character. (Mine doesnt take in account in wich teams characters are.)

In addition to sounds, music and textures, we could also make our maps and spritesheets compatible.

Do you plan to opensource your project (or at least share the source with few people)?
Tethical, an online FFT clone

mav

Where are you people coming from?! This is so impressive. Great work, keep at it.

dbp

Sharing the same server may be a good idea.
Also, making compatible the maps and spritesheets looks cool.

I also thought about do an open source project for the future.
But for now, everything is still in beta test, so i need to be sure to have 100% efficient code before sharing.

But, i feel like i have a good control of the code itself. So, just need some clean up and a lot of time :D

How do you plan to make your game online and multiplayer ?
What server side program ? sockets ?

I am going to use Smartfox Server, i believe that it is the most correct solution for Flash developers.
What about you ?
Final Fantasy Flashtics v0.6 --->

Kivutar

QuoteAlso, making compatible the maps and spritesheets looks cool.


maps:

My map models are made with blender. You can find it here https://github.com/Kivutar/tethical/tree/master/client/models/maps. For now, textures are 20x20 images applied to each tiles. In a second time, I will try to export a global texture to allow graphists to easyly customize each tile and bake soft shadows like it is the case in FFT.

On server side, the map is like this https://github.com/Kivutar/tethical/blob/master/server/maps/Test%20City.json. A json file listing tiles. I plan to use slope heights to scale the slope on z instead of using a high number of slope types.

I try to stay as close as possible of FFT but using easy-to-edit formats. It will allow people to export maps from the ISO if they want too.

spritesheet

For now I use something not efficient like this https://github.com/Kivutar/tethical/blob/master/client/textures/sprites/misty.png because my sprite class does not handle flipping yet. Idealy I would use spritesheets exported by ShiShi.

QuoteHow do you plan to make your game online and multiplayer ?
What server side program ? sockets ?


For now, I'm using a minimal http based server that I developped using Perl and the Dancer framework. You can take a look at the code here: https://github.com/Kivutar/tethical/blob/master/server/server.pl. It is easy to read and extensible, but HTTP is clearly a poor choice as my clients will have to flood the server with requests to know what the other player is doing.

Reading the Panda3D doc, I found this: http://www.panda3d.org/manual/index.php/Networking. I will try this if we cannot agree on sharing a server.

Concerning Smartfox Server, I quickly read their documentation. It looks like the best choice for an ActionScript game. Full featured, well documented, high level, with a tutorial for board games.
The downside for me is that there is no python API for client side. (and I am too lazy to write one). I thought that I could use their BlueBox wich is HTTP based too, but it is just tuneling so I will have to parse the packets in this case too.
There is also the fact that it is very heavy and has a cost...

Looks like sharing a server will be less easy that I thought due to client side technologies we use :/
Tethical, an online FFT clone

Pickle Girl Fanboy

February 28, 2011, 02:51:31 pm #13 Last Edit: February 28, 2011, 02:53:41 pm by Pickle Girl Fanboy
Have you guys considered Common Lisp?  I can shoot you some books on it, if you want them.  It can be faster than C++ in some cases, it's memory usage is roughly equivalent to Java (garbage collection), and it's very flexible.

dbp

QuoteMy map models are made with blender.

Me 2 ! But the big difference is that i just made a bunch of typical tiles like :
Tile : (height definable)
Slope : (height definable)
Tree : (height definable)

I believe that with these 3 type, you can do almost every map you want.
But it also use more memory especially in Flash.

Quoteand bake soft shadows like it is the case in FFT.

Do you say that you can bake shadows in real time with Panda3D ?
Flash sadly can't do that.

QuoteLooks like sharing a server will be less easy that I thought due to client side technologies we use :/

That's right.
Also, i believe that we do not have the same way of doing things. So maybe my path-finding or area-finding algorithm may not be totally appropriate for your approach.
At least the general concepts are the same.

Anyway, even if we can only share a little bit of our work, let's do it !
And for my project, i don't know how far i am gonna go with it, and how long i can work on it. It is very time consuming.
Final Fantasy Flashtics v0.6 --->

Kivutar

QuoteI believe that with these 3 type, you can do almost every map you want.
But it also use more memory especially in Flash.

It was my first approach too. But using a single model makes easier to do this type of maps: http://ffhacktics.com/maps.php?id=83 (the bridge), http://ffhacktics.com/maps.php?id=63 (the door and the guillotine), http://ffhacktics.com/maps.php?id=36 (the steeple). And makes exporting official maps a lot easier.

QuoteDo you say that you can bake shadows in real time with Panda3D ?
Flash sadly can't do that.

No I didn't mean that (sorry for my english, I'm French). Panda can bake realtime shadows, but I'd like to keep close to official FFT maps in which the shadows are baked in the textures. I meant that exporting the whole map texture in a single image make it easier for texture artist, they won't have to know how to use blender to contribute textures.

QuoteAlso, i believe that we do not have the same way of doing things.

Yes you're right. We have to admit that we made different choices.

QuoteAnyway, even if we can only share a little bit of our work, let's do it !

Sure

QuoteAnd for my project, i don't know how far i am gonna go with it, and how long i can work on it. It is very time consuming.

I know what you mean. I feel exactly the same. But your project is very good. Please don't let it die like Calvin Chen did. Reinventing the wheel is fun, but not 3 times.
Tethical, an online FFT clone

dbp

March 01, 2011, 06:18:30 am #16 Last Edit: March 01, 2011, 12:42:02 pm by dbp
I am French too ! :D

QuoteBut using a single model makes easier to do this type of maps: http://ffhacktics.com/maps.php?id=83 (the bridge), http://ffhacktics.com/maps.php?id=63 (the door and the guillotine), http://ffhacktics.com/maps.php?id=36 (the steeple). And makes exporting official maps a lot easier.


That is right, but, with a simple Map Editor, even a tile based map construction would recreate these maps without any problems.

QuoteReinventing the wheel is fun, but not 3 times.

Yeah...
Final Fantasy Flashtics v0.6 --->

Lijj

  • Modding version: PSX

Kivutar

QuoteI am French too !

Realy?! I thought from your profile that you were japanese!

QuoteYeah...

I'm glad you edited this before I start trolling my own topic, thanks god xD

Concerning the game, I started rewritting the camera handler. This week end I will be on hollydays for 5 days (without the net) and hope to have time to code or at least refactor the codebase.
Tethical, an online FFT clone

dbp

QuoteRealy?! I thought from your profile that you were japanese!

Yeah, French living in Japan.

QuoteI'm glad you edited this before I start trolling my own topic, thanks god xD

I do not want to enter into a debate either, thanks god too :D

That is very cool, i hope you can achieve what you want, i am looking forward to see new features.
Don't forget to post any video if you made some significant changes !

By the way, will your game be available for MAC ?
Final Fantasy Flashtics v0.6 --->