EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   General::General Discussion (https://www.eqemulator.org/forums/forumdisplay.php?f=586)
-   -   Anyone interested in client development? (https://www.eqemulator.org/forums/showthread.php?t=33432)

PixelEngineer 05-02-2011 01:59 AM

Anyone interested in client development?
 
Before you all go running let me say a few things. This client, or at least as far as I will take it, will likely never have full network support for interaction with the EQEmu code. I am doing this to simply learn about coding, file formats, OpenGL, rendering, and my passion, engine development.

I am a few days into the project and things are looking good. The main development will focus on classic zones and work its way forward to support newer zones. If you are interested in helping and know C++, even if you are a beginner and want to help, please PM me.

The eventual goal, as I am very interested in engine development, is when I have EQ zones perfectly rendered, to add new stuff EQ never supported. Per pixel lighting, shadows, dynamic weather, realistic water. And let me state right here that no zone files are modified in any way and will never be. This is purely an educational and learning project and I figured a few of you might want to help.

The project will be open source as soon as I have the code base in a relatively stable manner. Also, if you are interested in helping you must obtain your own zonefiles as I will never distribute any.

Also, on a related note, is Windcatcher around at all? Have a few questions for him about the stubborn WLD format.

Thanks for your time!

Preview:

http://i.imgur.com/EmaS3.png
http://i.imgur.com/zaTek.png
http://i.imgur.com/0xHC8.png

Note: Texture masking/fog and light sources are not implemented yet. I have only been developing for about a week in my spare time. Also, the frame rate is a representation of the rendering of every polygon in the zone without culling.

KLS 05-02-2011 11:18 PM

I actually had a similar thing that worked for eqg v2 and v3 zones but I stopped working on it, I probably had about a 3rd of the zones rendering flawlessly before I got bored with it.

WC isn't really around much that I know of and actually EQ does support some of those things now but meh (not very well imo). One of the best resources for WLD is azone if you haven't already looked at it.

PixelEngineer 05-03-2011 12:09 AM

I have taken a peek at an old version of azone. From what I see, it is badly if at all commented. Might be helpful for some of the confusing fragments though. I will keep this thread updated with progress. In the process of loading these polygons into a BSP tree for super fast rendering.

Edit: Does anyone have a link to the last released version of the azone source? Thanks!

PixelEngineer 05-03-2011 01:53 AM

Found it! Thank you. This is fantastic.

Grebbin 05-08-2011 04:19 PM

As long as you are developing clients, develop one that works on a droid x! I think I'd cry from happiness. I've seen people can stream the video from their computer over wifi, but I'd love a true client running on my droid. :)

PixelEngineer 05-09-2011 05:11 PM

A phone based client is entirely possible although I am only able to develop for phones I have access too. My first order of business after I get the rendering engine polished up is porting to Mac and Linux. I would definitely consider phones as a viable platform after that.

Damilis 05-09-2011 07:05 PM

What techs are you using? Build systems? Sounds neat, but I'd like to hear a bit more of the specifics =D

PixelEngineer 05-09-2011 11:42 PM

Writing this in Visual Studio in C++ but using as few platform dependent things as possible. This thread wasn't meant to grab attention for the project release, just to see if anyone was interested in coding with me. But I am sure I will port the client to other systems. It is just a matter of free time and drive although I have plenty of the second.

Damilis 05-10-2011 07:20 AM

Well, I am trying to see how you are approaching the project. It sounds interesting to me, provided I know a bit more about it :)

I understand you're using MSVC++, so if you're planning cross platform, I suggest you switch to standard C/C++ asap :) (I do cross platform development for a living, and MAN is MSVC++ a PITA)

Are you rolling your own GFX engine or using a pre-existing one?

PixelEngineer 05-10-2011 05:05 PM

Quote:

Originally Posted by Damilis (Post 199683)
Well, I am trying to see how you are approaching the project. It sounds interesting to me, provided I know a bit more about it :)

I understand you're using MSVC++, so if you're planning cross platform, I suggest you switch to standard C/C++ asap :) (I do cross platform development for a living, and MAN is MSVC++ a PITA)

Are you rolling your own GFX engine or using a pre-existing one?

Making my own engine currently. That's the whole reason I am doing this. To learn and to have fun at the same time. Going to do a little bit of everything. A graphics engine, sound engine and some networking too. Trying to be well rounded before I start applying for internships/jobs.

Fridgecritter 05-16-2011 12:18 AM

I would love to see a Mac version. I actually played on EQmac server for a while, but it just wasn't the same. It would be nice to have a Mac client for eqemu for sure.

PixelEngineer 06-02-2011 04:17 AM

Just a quick update. I am continuing to work on this and iron out issues. If there is anyone who knows where Windcatcher is, please let me know or get in touch with me. I am trying to finalize everything on the rendering front and it has proved to be quite the challenge. Obtaining the (RLE encoded) PVS has proved extremely difficult so I have to go about doing this another way.

Here is a screenshot from today: http://i.imgur.com/JfLU6.png

Again if you would like to help PM me. And if you are hesitant, wait a few weeks. Development will get much more fun when it comes time to add features rather than fight with the cryptic WLD format.

Edit: Forgot to mention what was different. From the screenshot, it might not look like it but I fixed a number of texture bugs (that were offscreen in the first few screenshots), completely redid the way I render zone geometry and documented and did huge cleanups on nearly every WLD fragment. As soon as I get my line of sight issues fixed, I am taking on lighting (vertex and per-pixel) and am going to add things like shadows, something that was never in the original EverQuest.

pfyon 06-02-2011 08:42 AM

I'd love to get into client development as i think a customizable gui client would be invaluable to the project, but I'm afraid I don't have any experience with gui stuff.

PixelEngineer 06-02-2011 02:48 PM

Quote:

Originally Posted by pfyon (Post 200595)
I'd love to get into client development as i think a customizable gui client would be invaluable to the project, but I'm afraid I don't have any experience with gui stuff.

That's the point ;) . Learn as I go along. I mean, animation seems to me like it will be the most difficult but I'll figure it out when I get there.

PixelEngineer 06-11-2011 12:27 AM

A quick update: I have been able to extract the PVS and have implemented frustum culling for the zones. It's been difficult but I have learned a ton and it was a major hurdle trying to get all of the standard knowhow of graphics engines to work with the EQ format.

EQEmulator user Leere has been beyond helpful with providing help and other sources for the PVS and I thank him greatly.

Next up is polishing off the render side of the graphics engine with animated and masked textures. After that is lighting and some other crazy stuff I have in the works which will add a crazy new element to old zones.

I have gotten quite a few PM's from people which is why I continue to update this thread. Let me know if you're interested in the project or want to help develop. Also, as soon as the codebase is stable, it will be open source so anyone who wants to make a client won't have to do as much guesswork as I have had to do.

Cheers!

steve 06-11-2011 11:05 AM

Thanks for keeping us updated! It is interesting to read about progress being made on this project. Though I am not able to help myself, I look forward to whatever is accomplished by your efforts!

erde 06-12-2011 09:14 AM

Hi,

maybe this helps ;)

wlddoc.pdf

greetings Stefan

PixelEngineer 06-12-2011 09:24 PM

Quote:

Originally Posted by erde (Post 200747)
Hi,

maybe this helps ;)

wlddoc.pdf

greetings Stefan

It definitely has. So has azone and any old source I could find. My three main goals for this project:

1. Learn about engine development.
2. Add to the knowledge base of the EQEmulator (and yes, there are areas where Windcatcher wasn't always clear)
3. Supply a cross platform client which people can use/modify/learn from.

Cheers!

Packet 06-12-2011 09:42 PM

I have worked with WindCatcher's zone builder tool which gave me a lot of options. Unfortunately s3d's format lacking so many things, it would be very nice to work with eqg considering it supports shading, raytraced materials, bump mapping, etc. Since you're digging so far, it probably wouldn't be so difficult to implement added support to other formats. It would be a lot of fun to re-create classic zones the way they should look rather than the bastard child that sony created. Ever see the most recent freeport? It's not original in the slightest.

None the less, I imported a few of WoW objects into a couple of zones for fun a long time ago... couldn't go too far with s3d format considering the severe limitations.

http://xonos.net/Haz/castlesiege2.png

http://xonos.net/Haz/hazg1.png

http://xonos.net/Haz/hazg2.png

http://xonos.net/Haz/hazg4.png

PixelEngineer 06-12-2011 10:55 PM

Wow, that's some awesome stuff there! I'd love to hear more about that stuff. Windcatcher did some truly amazing stuff and pushed the boundaries of what you can do with the EQ engine. My only sadness is that he coded in languages I have never used like Pascal. But again, his contributions have been invaluable.

I've seen that the whole development of client side stuff has slumped a bit here so I am hoping to pick it up again so that everyone can contribute.

Send me a PM. i'd like to hear more.

Packet 06-15-2011 10:08 PM

My availability varies so it's best to email me.. I pm'd you my info. :)

PixelEngineer 06-18-2011 09:00 PM

Got a question for the EQEmu community if anyone knows. In the 0x30 reference, there is bit that is set if the texture is masked. The only thing missing is information is about what color the texture is masked with. I know for items it's pink and for trees in Greater Faydark, it's green but there doesn't seem to be a field in the file.

Thanks!

Leere 06-19-2011 05:11 AM

I think I've always just used the alpha channel of the texture file itself, which seemed to work reasonably well.

PixelEngineer 06-19-2011 01:46 PM

Thank you again Leere.

Mitchell 06-29-2011 11:49 AM

Would be awesome to see a native Linux client. Keep us updated.

Tyen05 09-11-2011 10:20 PM

The work you guys are doing is awesome, sent all of you PMs so I can locate animations, lol~

Trying to get this browser based in Unity Engine.

PixelEngineer 09-24-2011 08:50 PM

The nature of the EverQuest format makes it a bad candidate for most of the engines out there, sadly. That's not to say it cannot be done but the way the zones are formatted is not quite ideal for the way Unity and Unreal handle level data. Now I may piss some people off but to be honest, the EverQuest zone format is a hack job of the Quake 3 file format and they are very similar.

I will have this engine's main rendering stuff squared away in a couple of days and you all may have a look and tinker around as you wish. The main hold ups in development have been the fact that I have learned as I went which is obviously much slower than simply writing code. If I could start over with what I know, it would take me a day or two to do most of the rendering stuff. The other hold up is that while Windcatcher and the azone developers have done a tremendous job of documenting, there are still major gaps in what we know and I intend to flush them out.

Cheers,
Pixel

Edit: Noticed your screenshots. That's was about as far as I got in Unreal. I must ask, how many frames per second are you getting?

PixelEngineer 12-07-2011 08:09 AM

Not really an update, just a question for anyone who might have some insight into the EQ file formats.

http://www.eqemulator.org/forums/sho...162#post205162

Post in that thread if you can lend any knowledge to the matter.

Cheers!

PixelEngineer 12-11-2011 10:13 PM

Here goes nothing. Here is the link to the code for my project I titled Lantern. Lantern is an open source cross platform (not yet) EverQuest client.

This is not a release, it's just a link to the project source. If you are looking to explore zones and such, I would recommend holding off. There are a ton of bugs I am fixing and a few zones that simply won't yet load. In addition, there are a number of problems with my code but it's a start. I am happy I was able to get this far and I will continue and the codebase will continue to get more solid and fine tuned. If you are interested in developing, I have included everything you need.

The license is very straightforward:

Quote:

Let's keep this simple. You are allowed to use, copy, modify, merge, publish, and distribute this source and software. You are however NOT allowed to create closed source variants under any circumstances. Knowledge should always be free and open source.
If you are interested in developing, the client is written in C++ on Visual Studio 2010 although I am always open to adding support for more IDE's. I write code on this client every single day and look forward to the possibility of more people getting involved. Again, this client is going to be a huge learning experience for me and whoever would like to partake.

Also, you must own your own copy of the zone files. I am not going to distribute anything of the sort. Furthermore, if you see an error in my code or a way I should have done something differently, please correct me. I am not an arrogant developer. I am here to learn and will help anyone who wants to learn as well. Please not also that there are areas that I just have not fixed up yet.

If you have any questions, please let me know and I look forward to making some serious progress in the coming months. I will continue to add more documentation in the next few days to make it easier for people who want to help.

Cheers!

http://www.assembla.com/code/lanterneq/

PixelEngineer 12-12-2011 11:37 AM

My apologies. Here is the link: http://www.assembla.com/code/lanterneq/subversion/nodes

Tabasco 12-13-2011 05:53 PM

My first step will probably be to set up a cmake build option. You chose a solid set of cross-platform libraries and it looks good so far.

PixelEngineer 12-13-2011 08:18 PM

Thank you. I have reduced most of the Windows specific functionality and will eliminate the rest when I get around to it. A bit of code is taken from various other projects and the way they handled fragments was a bit all over the place. Consider my work on textures in 0x03.cpp, 0x04.cpp, 0x05.cpp, 0x30.cpp and 0x31.cpp for a sample of what most of fragment handling will look like as I rewrite.

If you see any glaring errors, submit some changes and I will of course get around to reviewing them. Also, if I understand correctly you're looking to make it Linux compatible? Let me know how I go about doing this/helping to do this.

Cheers!

Secrets 12-14-2011 11:58 AM

Quote:

Originally Posted by PixelEngineer (Post 205318)
Thank you. I have reduced most of the Windows specific functionality and will eliminate the rest when I get around to it. A bit of code is taken from various other projects and the way they handled fragments was a bit all over the place. Consider my work on textures in 0x03.cpp, 0x04.cpp, 0x05.cpp, 0x30.cpp and 0x31.cpp for a sample of what most of fragment handling will look like as I rewrite.

If you see any glaring errors, submit some changes and I will of course get around to reviewing them. Also, if I understand correctly you're looking to make it Linux compatible? Let me know how I go about doing this/helping to do this.

Cheers!

This is very good! I've got a great idea for creating new content: Why not a 3DS Max exporter plugin? You could have it build WLD files from scenes, and I believe 3DS Max already supports animations. Not sure how it handles BMP files but it should be trivial.

SOE already uses 3ds max for their animation files afaik.

PixelEngineer 12-14-2011 08:36 PM

As of now, the next time I have time (Friday), I will finish my rewrite of the PFS (S3D) extractor. It works fine for the most part but there are some weird issues and I think it might be related to this. Then, I will begin work on models and light and get them all working properly.

Those are just my 2 main objectives at this point but I don't have time for the next two days due to finals.

Cheers.

Vampire1212 12-17-2011 02:12 PM

I'd love to help out with this client. I'd personally like to do my own revamp of the classic zones by simply change textures, lighting not the graphics themselves.

PixelEngineer 12-18-2011 03:51 AM

Quote:

Originally Posted by Vampire1212 (Post 205386)
I'd love to help out with this client. I'd personally like to do my own revamp of the classic zones by simply change textures, lighting not the graphics themselves.

Explain further. I am going to be implementing per pixel lighting which utilizes normal maps. Although I can generate them automatically via software, the higher resolution the texture, the better. If you are good at designing high resolution textures, give it a try. This was actually one of my eventual ideas.

Search for textures in the .s3d archive but if high resolution textures exist in an external directory, use them instead.

I am interested to know exactly what you mean.

Vampire1212 12-19-2011 02:42 AM

Quote:

Originally Posted by PixelEngineer (Post 205399)
Explain further. I am going to be implementing per pixel lighting which utilizes normal maps. Although I can generate them automatically via software, the higher resolution the texture, the better. If you are good at designing high resolution textures, give it a try. This was actually one of my eventual ideas.

Search for textures in the .s3d archive but if high resolution textures exist in an external directory, use them instead.

I am interested to know exactly what you mean.

Hey PixelEngineer, what I mean is exactly what you said, all high-res textures that make it seem more graphical when in reality we aren't changing the graphics themselves.

PixelEngineer 12-19-2011 03:47 AM

Quote:

Originally Posted by Vampire1212 (Post 205411)
Hey PixelEngineer, what I mean is exactly what you said, all high-res textures that make it seem more graphical when in reality we aren't changing the graphics themselves.

Go ahead and PM me. I have a few ideas you might be able to help with.

PixelEngineer 01-17-2012 02:04 AM

Texture animation has been implemented:

http://www.youtube.com/watch?v=4XSFx...vDZfhrSHuAh39k

More progress to follow...

Cheers!

Akkadius 01-17-2012 02:13 AM

Quote:

Originally Posted by PixelEngineer (Post 206053)
Texture animation has been implemented:

http://www.youtube.com/watch?v=4XSFx...vDZfhrSHuAh39k

More progress to follow...

Cheers!

That's pretty badass man. I give you props for all of that hard work.


All times are GMT -4. The time now is 12:01 AM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.