As a few people may have gathered from
this thread, I have been working on an open-source EQ client called EQuilibre and some related tools like a character viewer, a zone viewer etc.
After quite a lot of time working on this, the client is able to do very very basic things like connecting to a server, selecting a character, entering a zone, moving around, seeing NPCs and other player move around, and change zones. You can't send messages, you can't target anything, basically the only interaction you can have with NPCs is that they can kill you.
The source is on
Bitbucket. You can build it on both Linux (straightfoward to set up) and Windows (takes longer to set up). I have uploaded
Windows binaries so that most people don't need to build from source. You will need a copy of EQ for the assets (which one does not matter very much).
A couple videos:
What mostly works:
- Rendering terrain, objects and player for vanilla/Kunark/Velious zones.
- Rendering weapons and other (non-skinned) equipment.
- Rendering pre-Luclin animations.
- NPC are rendered using the right models, genders and skins (for example, choosing between merchant and guard skins for Qeynos NPCs). There are some glitches with helm textures. This was quite a lot of work to match .s3d model names (like QCM, ELM, GNN, etc) to race IDs, likewise for mapping animations between models.
- Collisions between player and terrain (it is still possible to fall below the ground, oops).
- Low-level networking code (handle dropped packets).
- High-level networking code (connect to a server, change zones).
- Warping to a place in the current zone (#goto) or to another zone (#zone). Use Ctrl+F to bring the 'Go to' dialog in the client or zone viewer.
At this stage even these basic features are unfinished and buggy, for example:
- NPCs may have the wrong scale or center (so they appear to hover above the ground).
- The culling code is really bad which means a lot of NPCs don't have name tags.
- Name tags are drawn above everything else which means you see tags for NPCs that are hidden.
- NPCs do not yet collide with the terrain, so that corpses may be below the ground.
- Nothing collides with static objects (like the lift in gfaydark).
- Zoning only works at some specific zone points (in gfaydark, for example). Even with these zone points, you might end up in the wrong place in the new zone.
- ...
- and so on
I am developping against a local EQEmu server that runs 'loginserver', 'world' and multiple 'zone' instances. I don't want to distribute an implementation of the crypto code that allows connecting to live or EQEmu servers, that's why it's not present in the Bitbucket repo or binaries. I have written a simple authentication plugin that expects plaintext logins and SHA1 hashes of passwords (what EQuilibre uses by default). For now this is the only way to use the client.
You'll need to edit 'login.ini' with something like:
Code:
[security]
plugin = path\to\EQuilibrePlaintextAuth.dll
For Linux servers you will need to pull my
dynamic loader changes and rebuild EQEmu.
I have only used EQEmu on Linux and never tested EQuilibrePlaintextAuth on Windows so this might not work, though I hope it does.
Anyway, though this is very unfinished and lacks tons of feature I hope somebody will enjoy playing around with it until I can make it better!