Item Search
     
BG-Wiki Search
+ Reply to Thread
Results 1 to 17 of 17
  1. #1
    CoP Dynamis
    Join Date
    Mar 2010
    Posts
    252
    BG Level
    4

    Does anyone know how FFXI was 'created'? Which programming languages did they use for client/server

    Im a programmer, but i work on "normal" windows programms, no games. But it would still be interessting to know how they made this game. There are some private server, so some people must know/understand how they made this game? Im mostly interessted in the skill/spells part.

  2. #2
    Hyperion Cross
    Join Date
    Jan 2007
    Posts
    8,663
    BG Level
    8
    FFXIV Character
    Kai Bond
    FFXIV Server
    Gilgamesh

    In before http://foodnetwork.sndimg.com/conten...-Spaghetti.jpg



    Otherwise on a serious note, I've not looked at it myself but would looking into the private servers help? Or are they more scripts than code? People have recreated the game and also changed elements of it entirely on a private server. Not sure if that would really get into the root of the code.

    Otherwise I'm sure many are curious to know given the amount of things that were broken randomly in its past

  3. #3
    Melee Summoner
    Join Date
    Aug 2010
    Posts
    26
    BG Level
    1
    FFXI Server
    Bahamut

    Pretty much all console games are written in C/C++ with heavy bits of assembly thrown in for performance (unless you wanna go back to the 8 bit era then pretty much just assembly, they didn't even use things like animated gifs for say a tile of floor that has an animated lava effect, it would be turned into some kind of low cpu cost color cycle function due to space requirements). So it really depends, if I remember they used maya for making their models, but I read that like, 10 years ago so I could remember wrong. They also use a ps2 dev kit, which no more supply of them is one major reason they are ending console support and moving to a mobile platform.

    Can't post link b/c I don't have 10 posts but google image search "ps2 dev kit tool-back.jpg" and it's the first result

    If you're thinking "man that looks like someone took a ps2 and sandwiched it into a PC". Then you're absolutely correct b/c that's basically what it is.

  4. #4
    Sea Torques
    Join Date
    Jun 2007
    Posts
    521
    BG Level
    5
    FFXI Server
    Lakshmi

    Picture of an actual FFXI developer caught working on FFXI code.

    Spoiler: show



  5. #5
    CoP Dynamis
    Join Date
    Mar 2010
    Posts
    252
    BG Level
    4

    Quote Originally Posted by The Stig View Post

    Otherwise on a serious note, I've not looked at it myself but would looking into the private servers help? Or are they more scripts than code? People have recreated the game and also changed elements of it entirely on a private server. Not sure if that would really get into the root of the code.

    Otherwise I'm sure many are curious to know given the amount of things that were broken randomly in its past

    I found a few spell scripts from a private server, they call a function with the caster, target and spell as a parameter, but the 'target' variable is a single object, and they also use this function for aoe spells, and i can't find where they call this function, what i really want to know is: when someone casts a spell, how does the game know the targets for aoe spell? is there somewhere a variable/list with all monster/player in the zone and they check the position from the target and get all 'targets' in the radius or something like that?

  6. #6
    Sea Torques
    Join Date
    Jun 2007
    Posts
    521
    BG Level
    5
    FFXI Server
    Lakshmi

    The private server is not coded by square.
    You can't assume anything is coded the same as square. The servers generate the same packets but the rest we have no idea about and is just an attempt to mimic the functionality we see in game.

  7. #7

    Quote Originally Posted by Heslon View Post
    I found a few spell scripts from a private server, they call a function with the caster, target and spell as a parameter, but the 'target' variable is a single object, and they also use this function for aoe spells, and i can't find where they call this function, what i really want to know is: when someone casts a spell, how does the game know the targets for aoe spell? is there somewhere a variable/list with all monster/player in the zone and they check the position from the target and get all 'targets' in the radius or something like that?
    Checking every single mob in the zone every time an AoE goes off would be a grossly inefficient method to do it. However, since mobs can basically be pulled from anywhere, the "How I'd do it..." would likely involve comparing against all mobs within the player's visual radius. The next step would then be to compare the XYZ coordinates of the target relative to those discerned prior. If they're within the range of the AoE, apply the effect. Further respect to the Z axis (height) would basically be at the coder's discretion.

  8. #8
    Relic Weapons
    Join Date
    Jan 2010
    Posts
    342
    BG Level
    4
    FFXI Server
    Bismarck

    Mobs have aoes too. Including programming to give mobs vision just so they can aoe sounds like a lot of extra, unnecessary work.

    While they most likely implement some kind of distance calculation, limiting the number of target calculations using vision sounds unlikely.

  9. #9
    Sea Torques
    Join Date
    Jun 2007
    Posts
    521
    BG Level
    5
    FFXI Server
    Lakshmi

    Actually adding "vision" is not very hard. You can do a check for all objects in a sphere then do raycasts to determine if they're behind a wall or something. Both checks are very fast. Sound aggro is likely implemented this way. Vision is probably a triangle check for objects then raycasts and status checks (like invisible) to determine valid targets

    AoE is the same concept.

  10. #10
    Sea Torques
    Join Date
    Jun 2007
    Posts
    521
    BG Level
    5
    FFXI Server
    Lakshmi

    Here you can read stuff on collision https://msdn.microsoft.com/en-us/library/bb313876.aspx

  11. #11
    Old Merits
    Join Date
    Nov 2007
    Posts
    1,007
    BG Level
    6
    FFXI Server
    Asura

    Why would the language of code for the official servers matter? Once it's compiled, the language doesn't matter, and you can achieve the same input/ouput responses with multiple languages after compiling. It's how the server and client communicate that matters, not how they are coded under the hood. If they give the required responce when receiving data, it doesn't matter what else is going on.

    Private servers are independent, not fully functional compared to the official servers, and still being reverse engineered from responses the official servers give.

  12. #12
    Sea Torques
    Join Date
    Jun 2007
    Posts
    521
    BG Level
    5
    FFXI Server
    Lakshmi

    It matters significantly.

  13. #13
    Relic Weapons
    Join Date
    Dec 2012
    Posts
    334
    BG Level
    4
    FFXI Server
    Leviathan
    WoW Realm
    Madoran

    Super late to the party but hey.. information is information.

    • PlayOnline (the viewer itself) is compiled with Visual Studio 2005.
    • TetraMaster (TM.dll) appears to be compiled with Microsoft Visual Studio 6.0. (However this can be masked due to it being packed with a protector.)
    • FFXi.dll appears to be compiled in Microsoft Visual Studio 6.0.
    • FFXiMain.dll appears to be compiled in Microsoft Visual Studio 6.0.
    • FFXiResource.dll appears to be compiled in Microsoft Visual Studio 6.0.
    • FFXiVersions.dll appears to be compiled in Microsoft Visual Studio 6.0.
    • ImeUiDll.dll appears to be compiled in Visual Studio 2005.
    • ImeUiDll2.dll appears to be compiled in Visual Studio 2005.
    • polboot.exe appears to be compiled in Microsoft Visual Studio 6.0.
    • xinputdll.dll is compiled with Visual C++ 8.0, (aka Visual Studio 2005).


    Generalized, the game is coded with C++.

    The games main files are protected with a custom packer that is similar to how UPX works.
    The games data files are in Squares own formats in terms of storage as well as encoded for 'protection'.

    It's safe to assume the server is also coded in C++ with a possible scripting language being used, but given the source code to the server is private, there is no way to confirm that.

  14. #14

    I can only assume this code is a mess of pointers and classes

  15. #15
    Custom Title
    Join Date
    Nov 2008
    Posts
    1,066
    BG Level
    6
    FFXI Server
    Diabolos

    Knowing the CPUs their servers likely ran on way back when, the number of players per server, the amount of context overlap per actor per zone, and how each 'server' actually spans its zones across multiple actual servers, FFXI's servers were coded rather well or at least implemented the most basic optimizations. You'd be amazed how far Sweep and Prune will get you in terms of simplifying distance checks.

    Of course they totally cheated (and fucked up) by using client-side character movement. Saves them a ton of server processing, but yeah; pos hack.

    Also, I have to figure FFXI has a very, very, slow tick rate. We're talking single-digit hertz. Astoundingly slow. Again, another cheat to only have to iterate every mob and player a few times a second, but why other players' movement is janky no matter your ping. You can most easily see it when someone goes first-person and spins; their facing direction updates about twice a second, making 2hz the lowest possible tickrate the game uses. I've never thought to check anywhere but in town though, so 2hz in town and 4hz in combat areas would almost be too sensible for SE, lol.

    I could ramble for hours about multiplayer design here. FFXI is what got me into it in the first place!

  16. #16
    Clever and witty, all together the ladies love the Nekura
    Join Date
    Jul 2007
    Posts
    1,009
    BG Level
    6
    FFXI Server
    Phoenix

    I don't think handling character movement client-side is particularly uncommon (since, as you mentioned, it saves on processing power) but in my experience, it's coupled with occasional server-side verifications to verify that the client isn't moving faster than it should and so forth.

  17. #17
    Hydra
    Join Date
    Nov 2013
    Posts
    139
    BG Level
    3
    FFXI Server
    Carbuncle

    FFXI's servers were most likely one physical machine per zone, they could specifically take zones down for maintenance, and when one zone crashed, it didnt' affect other zones. Also, it makes sense at least at launch time, since it was the era of dual cpu single core xeons in the 500-800mhz range, some even hitting 1-1.2ghz. Each zone uses roughly 30-60mb ram with 10-40 users, so imagine what lower jeuno would have looked like with 100+ in a day where SIMM's came in 128-256-512mb chips. Sure you COULD have maybe dropped 2-3 zones into a single server, but logistically, it would be easier to set up a separate server for each one. Remember, in a production environment, you sacrifice efficiency for stability.

    It would make sense in 2008-2010 to do physical2virtual migrations where they could have individual vm's handling zones, on a larger server, as hardware had advanced to the point where that was very possible, however who knows what's actually happening behind the scenes. It may not have been worth the major overhaul to do it.

    Considering SE's job postings in the past few years have been for C/C++ developers, and given the history of how it's been compiled in the past, it was most likely c++.

Similar Threads

  1. Does anyone know how to corrupt a dat to become invisible?
    By Lordwafik in forum FFXI: Everything
    Replies: 8
    Last Post: 2008-06-01, 17:19
  2. Replies: 9
    Last Post: 2005-08-08, 21:06
  3. Does anyone know the name of the song on the Kirin video
    By Reaper in forum FFXI: Everything
    Replies: 3
    Last Post: 2005-02-24, 15:09