July 29, 2015

new game report: TERA online

This winter met some old, but still alive game — TERA online. I played few monthes from CBT at RU server, then started to look at game internals.

It was a second game, which I reversed (RIFT and DragonsPhophet was abandoned at begin), so it looked a bit unusual to me: packed client, encrypted database, tricky launcher with separated authorization and mixed packet opcodes at each major patch.

At end of spring I started to reverse it. This game have several emulators already, since it was released in 2011 with KR version, even working and semi-complete, but I inspected a RU version and I had to look a current client.


While I reversed RoM mainly at client, because it was a plain and ``documented'' by Lua scripts and events, here I reconstruct protocol from network log basically.

Also I spent a much time with login authorization, but then decided to reuse official launcher cookies to simplify game access by own clients.

So, now I reach some milestone of progress and I have currently a chat client like in RoM with following features:
  • multiserver support
  • server list with network info
  • character list with create/delete features
  • server guild list information
  • union (alliance) vault access hours (also publishing it online for each server)
  • own guild and members information
  • friend list
  • chat block list (and I can clear it with single click :D)
  • and, of course, chatting with advanced features like:
    • working CTRL+V :D
    • channel/tab switching by hotkeys or chat commands
    • chat links parsing, copying it and opening link at teradatabase.com
    • player query with basic info (like class/race/gender/level) and some hidden info (when player has or doesn't have a guild and party, it used by client to display or not GuildInvite and PartyInvite) 
    • player inspecting (not finished yet)
RoM chat was developed in C++/Lua with WTL UI, now I used a Sciter HTML/CSS UI engine which is more flexible and easier for gui apps.

Also, since TERA UI made with Flash, it renders chat by embedded HTMLviews and, if you can modify packets or have a custom client, you can send a messages with different color, size and style :) But official chat didn't allow some rich tags like <IMG> (they doesn't have to see an imageboard at TERA) or links with href, it displays only formatted text:

<FONT>WTS</FONT><FONT FACE="$ChatFont" SIZE="18" COLOR="#4ECD30" KERNING="0">
<A HREF="asfunction:chatLinkAction,1#####447@169192459@kostelom"><Masterwork Alkahest></A>
</FONT><FONT> </FONT>

 (Masterwork Alkahest)


Some screens:


initial ui sketch
char list
guild list
guild logo icon at binary view
Chat main view (before links and emotion were checked against FONT SIZE=18 :)







3 comments:

  1. Anonymous11/8/15 18:26

    Maybe you better release your unfinished emu with sources? I will thanks to you.

    ReplyDelete
    Replies
    1. Any reason to do it? RoM server files & sources are in public during several years and anybody can setup the own RoM server.

      Delete
    2. Maybe someone will be more interesting look your sources and binaries, as RoMEmU(for me for example)

      Delete