View Single Post
  #1  
Old 12-25-2014, 10:09 PM
Zaela_S
Hill Giant
 
Join Date: Jun 2012
Posts: 216
Default ZEQClient - yet another client project

I needed something to do between semesters, so I decided to start working on a client type thing. There isn't very much to see yet (mobs spawning in their ragdoll positions, then teleporting around a bit), but some encouraging progress has been made.

Source: https://github.com/Zaela/ZEQClient
Download of what's made so far: https://dl.dropboxusercontent.com/u/.../ZEQClient.zip (Windows)

It's written in C++ and, of course, fully open source.

I'm using Irrlicht as the rendering library, mostly because it's lightweight and easy to work with. Provisionally looking at using CEGUI as a GUI library, although it's decidedly less lightweight... haven't actually used it yet so I'm open to suggestions there. Currently only set up for Windows, but in principle it should be possible to build and run on Linux, though I haven't tried it yet -- may need some tweaks.

If you want to log in to your server with it and see what there is to see, you should be able to do that. You'll need to run it from the command line, since there is currently no GUI. For the same reason the only way to log in is the very fast way, straight to zone. You'll need to specify your account name, password, the long name of the server you want to connect to, the name of the character to log in, and the path to your EQ folder (recommend you keep the ZEQClient files separate). A configuration file (config.lua) is provided in case you don't want to have to type all of that on the command line every time (also allows you to change window width and height and whether to use DirectX or OpenGL). You'll still have to pass your password with -p <password> though.

The longname of a server is almost exactly what appears on server select on a real client - just probably with [R] in front of it, not [[R] ]. The long names of all servers are dumped to the terminal when a connection to the loginserver is made; these are the names that are matched against, in case you have trouble figuring our the exact string for your server.

It's recommended that you log in on a GM character in a pre-GoD zone. Currently no input is actually sent to the server, which is good because collision (except for gravity) and proper movespeed settings aren't enabled yet. It may take a few tries to get in -- the client isn't very patient about waiting for zones to be booted up. If you get hangs after EntityID: # is written to the terminal, wait a few minutes before trying again and you should have more luck.



There's a looooooooooooooooooot of work left to do, but I'm hoping that what I've got so far can stand up as a reasonably solid foundation. There are still plenty of things that need to be figured out, but a lot of them are things that have been figured out before. Other than that, most things that need to be done are just a matter of stepwise refinement. A lot of it.

All in all, not bad for a little under three weeks of work.

Oh, and the client can be used as a zone viewer by passing -z <zone shortname> on the command line. Pre-GoD (wld-based) zones are currently better supported than later ones (mostly because I couldn't figure out exactly how object coordinates are supposed to work for later ones), although neither are perfect yet.

edit: oh also, the client currently identifies itself as a Titanium client.

edit2: it's early days yet -- bugs are a certainty, crashes are inevitable!
Reply With Quote