Project 1999

Go Back   Project 1999 > Blue Community > Blue Server Chat

Closed Thread
 
Thread Tools Display Modes
  #1  
Old 01-14-2018, 12:20 PM
Secrets Secrets is offline
VIP / Contributor

Secrets's Avatar

Join Date: Oct 2009
Posts: 1,354
Default EQ Trilogy Compatibility Layer

Here's a project I have been working on: The EQ Trilogy client compatibility layer.


[You must be logged in to view images. Log in or Register.]

Inspired by the Titanium UI made by a popular EQ streamer, I've started working on a compatibility layer that allows you to connect to TAKProject using the Trilogy client as opposed to the EQMac Client. This is an entirely clientsided modification; it requires no changes on the behalf of the TAKProject server, and can potentially be modified in the future to work with any older netcode supported server. NOTE: P99 compatibility could be possible if Rogean or Haynar were to add support for the old netcode while still supporting the new one that Trilogy uses, but is otherwise not possible right now. EQEmu support will require the TAKProject server to be complete as they are otherwise not going to share their codebase until the end of Planes of Power.

Currently, there is support for logging and and basic movement. There's gonna be text chat next, and much more to finish after that.

Here is a video of the stuff in action:
https://www.youtube.com/watch?v=xNmVmerLQu4


Why Trilogy over Titanium?
The Trilogy client is one of the few clients that still has actual era-specific client dangers within. I'd consider it an enthusiast client, whereas Titanium is mainly aimed at modern compatibility and ease-of-access for P99 users.

Some of the features, off the top of my head, that are supported in Trilogy but not Titanium:
- Old, Authentic Stone UI with f10 quick switching support to Velious-era UI.
- Sound for interaction with UI elements
- Night Blindness system
- Inventory viewport
- Classic NPC proximity sounds ("Might I have some copper please?" from beggars, spectre idle noises, scarecrow idle laughs)
- Classic environment effects (UFO in Temple of Life, Everfrost wind tunnels)
- Positional midi activation. (Qeynos example: "Qeynos" midi activation when only in newbie yard and not below Crow's, ambient track that plays when at Temple of Life, multiple tracks per zone)
- Variations on NPC/PC appearance - "White Shirt" human, "Winged" Statue of Rallos Zek / Imps, Epic Mage Pet Transparency
- No support for XML-based UI

In addition to the functionality, there is also the feature set of the Titanium client that will always be imperfect when compared to an era-specific client. Ultimately, Titanium has destroyed the feel and adds a layer convenience of the game.

It would take considerable effort to modify Titanium's graphics and feature support, some of which P99 has already done, to ensure a truly classic experience. TAKProject's willingness to open source their work once Planes of Power is complete gives their project a leg-up on Project 1999, as it will be configurable enough once released for anyone to make their own server as accurate as P99 currently is.

Why Trilogy over EQMac?
EQMac's Windows client doesn't handle the Graphics DLL that well when compared to the ddraw wrapper for EQ Trilogy. It is hacked together to the point where the inventory pane does not work, and merchants will crash the entire game client at times. There are far better graphics upgrades that are possible for DX7 / ddraw compared to DX8, which hasn't had much work in terms of compatibility layers. In addition, DX7 supports era-specific software emulation of hardware graphics tasks, which means that the range of devices supported are ultimately greater.

That's great and I like your project, how does this work?
The project is a multi-part setup. There are four components to this project currently, and they will be condensed (someday when i'm less lazy and further along):

Binary edits to eqgame.exe
Ultimately, these will be patched out via a ddraw dll much later in the project's life, but this allows the client to inject a foreign DLL into the process. It also patches the initial 'handshake' with the world process to use a 200-byte buffer for the initial handshake with a TAKProject server, instead of the 196-byte buffer it normally is.

wsock32.dll aka 'EQEmuLoginHook'
Ah, yes, the old 'that's a fucking virus my dude' method of injection. Eventually going to be moved into ddraw.dll similar to how Rogean's DSETUP.dll works for EQ Titanium, this is responsible for replacing the old "EQWindows" program that used to be used circa 2001 to start multiple instances of EverQuest. This allows the program to be run in a window, and is also responsible for blocking some forms of window input when the client is not in focus. This is needed because dinput is set to a mode to capture 'all' input to the window by default. This project is the result of 2 weeks of work about 3 years ago. I've recently ported it to Trilogy last year, and a copy of the project is located on Github: https://github.com/SecretsOTheP/EQEmuLoginHook/

eqgame.dll aka 'EQTrilogy Compatibility Layer'
This is the result of 3 days of work, slapped haphazardly together, in order to make the old EQStream system from EQEmulator's codebase encode and decode packets incoming and outgoing from the client.

This hooks core networking functions in the EQ Trilogy (or whatever client is targeted) and causes it to:
1) Translate the EQ message (or "opcode" in emulator terms) into an EQ message of the type the server or client actually expects when it goes in and out of the client,
2) Translate the EQ packet data structure (or "buffer/size" in emulator terms) of the packet into one the client or server understands by rearranging the data appropriately,
3) Clean up the previous buffer, and call the appropriate "send message" or "handle world message" functions in the client so that no memory issues or leaks occur.

This is the 'core neworking' library and prior to this was previously server only. We can now do this on the client, with a bit of trickery and assembly knowledge.

ddraw.dll aka 'that DLL that functions as an injector and fixer-upper someday'
Currently only used to repair DirectDraw functionality within Trilogy to improve framerates and duplicate calls, this library will someday replace and combine all above methods into one neat little package. There's no downside to doing it the way I am doing it now, but it's one of those 'would be nice' things so that less streams are crossed between libraries. Never cross the streams.

I like this a lot and I'm a friggin nerd; how can I contribute?
I plan on open sourcing the networking stuff when TAKProject open sources their codebase. Until then, it's pretty much going to be a closed source project due to the level of abuse that is possible with it. Could you imagine if you never sent a 'lol im drowning' packet, or a 'lol i fell' packet because you commented out the send handler for that packet? Stuff like that is what I am trying to avoid, per TAKProject's request.

You're welcome to stay up to date with this project in this thread and I also am posting it under #cool-stuff in EQEmulator's discord. Please don't PM me there; post in the channel. I have a job unlike the entire guilds of Awakened/Aftermath that requires attention. https://discord.gg/QHsm7CD

The EQ Trilogy network compatibility layer will have limited binary releases when I complete milestones. You're welcome to download and contribute to the DX7/DDraw/DInput/WinAPI part of things located in EQEmuLoginHook, if that's your forte though. I'm sure it sucks and can be improved.


Lastly?
Lastly, would like to give some shoutouts to some awesome people who made this little endeavor possible.
Harakiri, Yeahlight, Cofrubren, and Tazadar of EQClassic.org - For everything you've done to document the opcodes/structures in your public release. Without these folks, this wouldn't have been as quickly done as it is now.
unnamed twitch streamer - for being the inspiration behind this project. :cow2:
Akkadius - for saying "ok" to me in Discord several times.
Haynar, Robregen, Speedz, Torven, cavedude of PEQ and TAKProject.net - continue doing awesome stuff and keeping the EQMac dream alive. You guys rock.
Rogean & Nilbog - for keeping the lights on in this forum and keeping the vision alive in the hearts and minds of classic EQ enthusiasts.
__________________
Engineer of Things and Stuff, Wearer of Many Hats

“Knowing yourself is the beginning of all wisdom.” — Aristotle
Last edited by Secrets; 01-14-2018 at 12:26 PM..
  #2  
Old 01-14-2018, 12:37 PM
loramin loramin is offline
Planar Protector

loramin's Avatar

Join Date: Jul 2013
Posts: 9,343
Default

Pretty cool project Secrets. Not sure I like the idea of playing with the old school UI (even if it is the Velious one), but it certainly would be more classic (and having night blindness would make me feel more like a "real" Barbarian [You must be logged in to view images. Log in or Register.] ).
__________________

Loramin Frostseer, Oracle of the Tribunal <Anonymous> and Fan of the "Where To Go For XP/For Treasure?" Guides
Anyone can improve the wiki! If you are new to the Blue server, you can improve the wiki to earn a "welcome package" of up to 2k+ platinum! Message me for details.
  #3  
Old 01-14-2018, 12:50 PM
zodium zodium is offline
Planar Protector

zodium's Avatar

Join Date: Dec 2016
Location: Plane of Mischief
Posts: 1,812
Default

Very immersive!
__________________
[60 Pirate] Gatmanno (Puppet) <Riot>
  #4  
Old 01-14-2018, 12:54 PM
Rygar Rygar is offline
Planar Protector

Rygar's Avatar

Join Date: Nov 2015
Location: Minnesota
Posts: 1,797
Default

Getting me excited here. Implement classic UI and later Velious UI as an option Nilbog / Rogean!
__________________
Wedar - Level 60 Grandmaster <Azure Guard>
Check out my Zone Guide to The Hole
The Hole wiki now fully updated and accurate: Hole Wiki Page
  #5  
Old 01-14-2018, 01:07 PM
Secrets Secrets is offline
VIP / Contributor

Secrets's Avatar

Join Date: Oct 2009
Posts: 1,354
Default

Quote:
Originally Posted by Rygar [You must be logged in to view images. Log in or Register.]
Getting me excited here. Implement classic UI and later Velious UI as an option Nilbog / Rogean!
Unfortunately it's a long, long ways away from that. While not impossible it'd require significant work (on both mine and P99 staff's end) to get it implemented in EQ Titanium's netcode.
__________________
Engineer of Things and Stuff, Wearer of Many Hats

“Knowing yourself is the beginning of all wisdom.” — Aristotle
  #6  
Old 01-14-2018, 01:17 PM
skarlorn skarlorn is offline
Banned


Join Date: Jul 2016
Location: The Misty Thicket
Posts: 4,863
Default

Quote:
Originally Posted by Secrets [You must be logged in to view images. Log in or Register.]
Unfortunately it's a long, long ways away from that. While not impossible it'd require significant work (on both mine and P99 staff's end) to get it implemented in EQ Titanium's netcode.
So...?

Get started working hard. I'm expecting 6 day weeks 10 hrs a day not including your 15 minute lunch break. I'm not paying anything for nothing!

*snaps fingers imperiously*
  #7  
Old 01-14-2018, 02:02 PM
Rygar Rygar is offline
Planar Protector

Rygar's Avatar

Join Date: Nov 2015
Location: Minnesota
Posts: 1,797
Default

Quote:
Originally Posted by Secrets [You must be logged in to view images. Log in or Register.]
Unfortunately it's a long, long ways away from that. While not impossible it'd require significant work (on both mine and P99 staff's end) to get it implemented in EQ Titanium's netcode.
Put me in coach!
__________________
Wedar - Level 60 Grandmaster <Azure Guard>
Check out my Zone Guide to The Hole
The Hole wiki now fully updated and accurate: Hole Wiki Page
  #8  
Old 01-14-2018, 04:41 PM
Izmael Izmael is offline
Planar Protector

Izmael's Avatar

Join Date: Jul 2015
Posts: 2,289
Default

Quote:
- Night Blindness system
This totally needs to be made mandatory on P99. Please!
  #9  
Old 01-14-2018, 04:53 PM
Mblake1981 Mblake1981 is offline
Planar Protector

Mblake1981's Avatar

Join Date: Jan 2017
Location: Queen Ann
Posts: 2,970
Default Classic Art Style & Ultrawide Screens

Quote:
Originally Posted by Secrets [You must be logged in to view images. Log in or Register.]
[You must be logged in to view images. Log in or Register.]

The Trilogy client is one of the few clients that still has actual era-specific client dangers within. I'd consider it an enthusiast client, whereas Titanium is mainly aimed at modern compatibility and ease-of-access for P99 users.

- Old, Authentic Stone UI with f10 quick switching support to Velious-era UI.
- Sound for interaction with UI elements
- Night Blindness system --- Racial Abilities
- Inventory viewport
- Classic NPC proximity sounds ("Might I have some copper please?" from beggars, spectre idle noises, scarecrow idle laughs)
- Classic environment effects (UFO in Temple of Life, Everfrost wind tunnels)
- Positional midi activation. (Qeynos example: "Qeynos" midi activation when only in newbie yard and not below Crow's, ambient track that plays when at Temple of Life, multiple tracks per zone)
- Variations on NPC/PC appearance - "White Shirt" human, "Winged" Statue of Rallos Zek / Imps, Epic Mage Pet Transparency
The subtle things that are removed when the min/max approach gets a grip on the game world. I use Classic HD enhancement, PaulG sounds mods and Cucumbers QQ UI. If these talented folks built a Granite UI that looks correct with interaction/functionality it would be excellent.
__________________
Last edited by Mblake1981; 01-14-2018 at 05:05 PM.. Reason: I fell off Kelethin while dreaming
  #10  
Old 01-14-2018, 09:53 PM
erfg12 erfg12 is offline
Orc

erfg12's Avatar

Join Date: Mar 2010
Posts: 43
Default

Very exciting stuff! I'm always willing to help if testing is needed. [You must be logged in to view images. Log in or Register.]
Closed Thread


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 05:08 PM.


Everquest is a registered trademark of Daybreak Game Company LLC.
Project 1999 is not associated or affiliated in any way with Daybreak Game Company LLC.
Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.