Go Back   EQEmulator Home > EQEmulator Forums > General > General::General Discussion

General::General Discussion General discussion about EverQuest(tm), EQEMu, and related topics.
Do not post support topics here.

Reply
 
Thread Tools Display Modes
  #166  
Old 08-31-2012, 07:16 PM
PixelEngineer
Sarnak
 
Join Date: May 2011
Posts: 96
Default

Quote:
Originally Posted by cavedude View Post
Yes you did!

Transparency:

Reply With Quote
  #167  
Old 08-31-2012, 09:17 PM
Caryatis
Dragon
 
Join Date: May 2009
Location: Milky Way
Posts: 541
Default

That link is hilarious.

One guy been working a year on some screenshots and thinks being able to fly around will be awesome(maybe eqemu should support that? o wait)

Everybody else thinking that just because you can support new features, that it won't take a skilled artist to produce the things in their heads. Nothing against you Pixel, the engine is definitely an awesome project.
Reply With Quote
  #168  
Old 08-31-2012, 10:15 PM
Tabasco's Avatar
Tabasco
Discordant
 
Join Date: Sep 2009
Posts: 270
Default

It would probably be more valuable to make a client that can authenticate and enter a world first. From there you can just use placeholders as you develop your modelling pipeline. At that point you have the real beginnings of a functional client instead of a model viewer.

The work on the various file formats is excellent, but considering that eqemu is probably the most successful open source MMO, a client that doesn't have a bunch of non-free attachment or lawsuit risk would be incredible.
Asset creation is daunting but at the point you have a cube running around inside a box and can see and interact with other cubes, community involvement would probably take over. You could even borrow quite a bit from a place like opengameart.org. Asset creation is hard, but it's a process, and if I can model and rig a character in blender, anyone can.
Reply With Quote
  #169  
Old 08-31-2012, 11:17 PM
PixelEngineer
Sarnak
 
Join Date: May 2011
Posts: 96
Default

Quote:
Originally Posted by Tabasco View Post
It would probably be more valuable to make a client that can authenticate and enter a world first. From there you can just use placeholders as you develop your modelling pipeline. At that point you have the real beginnings of a functional client instead of a model viewer.

The work on the various file formats is excellent, but considering that eqemu is probably the most successful open source MMO, a client that doesn't have a bunch of non-free attachment or lawsuit risk would be incredible.
Asset creation is daunting but at the point you have a cube running around inside a box and can see and interact with other cubes, community involvement would probably take over. You could even borrow quite a bit from a place like opengameart.org. Asset creation is hard, but it's a process, and if I can model and rig a character in blender, anyone can.
If I am not mistaken, this was the basis for Windcatcher's Simple Client. That project was fantastic but I would really love to support the actual zones of EverQuest and I don't think it would be legally problematic unless copyrighted materials were modified.

Take a look at all of these open source engine recreations: http://en.wikipedia.org/wiki/Game_engine_recreation

I doubt very many of them have run into legal trouble. That being said, I am really not that far away from the transition between zone viewer to client. I realize how much work will need to get done for it to be a full blown client but it is still a goal will work towards. I can't wait for the day when I can stop working on the graphics side and focus on the actual client game programming.

My posting the link to reddit wasn't the greatest idea (especially on my actual account) but I was proud of what I had and wanted to share. I think people there are hopeful for what this project can really be, as am I. Regardless, I want my contribution to this community to be an open source client that people can use for whatever they want.

Cheers
Reply With Quote
  #170  
Old 09-01-2012, 12:25 AM
Tabasco's Avatar
Tabasco
Discordant
 
Join Date: Sep 2009
Posts: 270
Default

You've got plenty to be proud of, the engine is good work. It's not precisely open source at this point, but that's your call.

We have no way of knowing whether or not SOE will pull a page from Blizzard's playbook, but that's not the point. Eqemu is a server framework that can be devoid of non-free content but it's bound to a non-free, evolving client.
Windcatcher's client was in delphi and never worked without a custom login server as far as I know, so it's a pretty poor example.
I just hate to see a promising project consumed by the hassles of backward compatibility with a client that already does a pretty good job of representing the nostalgia of classic EverQuest.
Reply With Quote
  #171  
Old 09-01-2012, 01:45 AM
rhyotte
Hill Giant
 
Join Date: Jul 2012
Location: Oklahoma
Posts: 222
Default

Cannot wait for the open source linux client!
Reply With Quote
  #172  
Old 09-01-2012, 04:44 AM
PixelEngineer
Sarnak
 
Join Date: May 2011
Posts: 96
Default

Quote:
Originally Posted by Tabasco View Post
You've got plenty to be proud of, the engine is good work. It's not precisely open source at this point, but that's your call.

We have no way of knowing whether or not SOE will pull a page from Blizzard's playbook, but that's not the point. Eqemu is a server framework that can be devoid of non-free content but it's bound to a non-free, evolving client.
Windcatcher's client was in delphi and never worked without a custom login server as far as I know, so it's a pretty poor example.
I just hate to see a promising project consumed by the hassles of backward compatibility with a client that already does a pretty good job of representing the nostalgia of classic EverQuest.
The client isn't open source because I am ironing out the ugly details in my code. Any programmer of an open source program knows that it is often a daunting process of sending your code out for public scrutiny.

I understand the concerns of backwards compatibility but here's my thoughts:
- I want this project to be compatible with old hardware.
- I want to have this client run as fast as possible.
- I want this client to run on all platforms (including Android and iOS)

and most importantly,

- I want this project to teach me about graphics and game programming.

That's about it. I do appreciate the feedback and criticisms.

Cheers
Reply With Quote
  #173  
Old 09-11-2012, 03:16 PM
PiB
Fire Beetle
 
Join Date: Aug 2012
Posts: 15
Default

First poster here, also working on re-creating a EQ client using OpenGL. Seems to be a popular pastime here

PixelEngineer, are you using backface culling? I have tried to turn it on but this removes a lot of faces that should be visible:



When backface culling is disabled:



Looks like the normals and winding order of many faces are wrong in the s3d files. Or maybe there's some flag to invert them that I overlooked? In Blender, the normals of the Pedestal are pointing down instead of up:



I could just leave it disabled but this sometimes causes z-fighting (look at the water in the second image).
Reply With Quote
  #174  
Old 09-11-2012, 03:34 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

If you know the order of the vertices you can just calculate your own normals (hint: you do!) which is what we do in azone for .map files.
Reply With Quote
  #175  
Old 09-12-2012, 04:17 AM
PiB
Fire Beetle
 
Join Date: Aug 2012
Posts: 15
Default

I know how to calculate face normals, but I think the order of the vertices in the file is wrong. Half of the faces use clockwise order (first picture) while the other half use anti-clockwise order (second picture).

The reason I mentioned the normals is that, if all the normals were pointing in the right direction I could detect which faces have the wrong order and change it. Unfortunately it seems faces specified clockwise have wrong normals and vice versa.



Reply With Quote
  #176  
Old 09-12-2012, 10:58 AM
PiB
Fire Beetle
 
Join Date: Aug 2012
Posts: 15
Default

My bad, I was looking at the faces from the wrong direction. Looks like they are all specified in clockwise order. Asking OpenGL to cull front faces did the trick. D'oh!
Reply With Quote
  #177  
Old 09-12-2012, 11:02 PM
PixelEngineer
Sarnak
 
Join Date: May 2011
Posts: 96
Default

The zones were originally written for rendering with DirectX and it differs from OpenGL on the direction of the Z axis. Scaling your model view projection matrix by -1 in the Z direction. Then you need to make the front face wind clockwise and cull the back face. That should do it.

Are you using Blender for viewing the models or are you using it as your graphics engine?

The more projects the merrier. If you are interested in helping, I will hustle and get this github. Regardless, the more information that is out there, the better.

Cheers
Reply With Quote
  #178  
Old 09-13-2012, 04:27 AM
PiB
Fire Beetle
 
Join Date: Aug 2012
Posts: 15
Default

I was flipping Z before but not setting the winding order so that's why I was surprised when half of the scene disappeared when I tried to turn on face culling! It seems to work fine now.

I started this project by writing a Python script to load WLD data like zones, zone objects, characters, skeletons etc and import it to Blender as a kind of prototype. When this worked well enough I rewrote the code in C++ and used OpenGL. But I kept the scripts around which can be handy for debugging sometimes.

The more the merrier, I agree! I will upload this code to GitHub too so we can share the code and information.

There are some features you mentioned I haven't got around to do yet (properly supporting transparency, animated textures, minor things like sky box...). How is your work on animations/skeletons going? I am currently trying out different ideas for implementing lighting, it's not as straightforward as I thought it would be.
Reply With Quote
  #179  
Old 09-13-2012, 05:42 AM
rhyotte
Hill Giant
 
Join Date: Jul 2012
Location: Oklahoma
Posts: 222
Default

This is getting better and better! Yaay! Can not wait till I can drop windows and run just linux and still be able to play EQEMU natively
Reply With Quote
  #180  
Old 09-13-2012, 09:38 AM
PixelEngineer
Sarnak
 
Join Date: May 2011
Posts: 96
Default

Quote:
Originally Posted by PiB View Post
I was flipping Z before but not setting the winding order so that's why I was surprised when half of the scene disappeared when I tried to turn on face culling! It seems to work fine now.

I started this project by writing a Python script to load WLD data like zones, zone objects, characters, skeletons etc and import it to Blender as a kind of prototype. When this worked well enough I rewrote the code in C++ and used OpenGL. But I kept the scripts around which can be handy for debugging sometimes.

The more the merrier, I agree! I will upload this code to GitHub too so we can share the code and information.

There are some features you mentioned I haven't got around to do yet (properly supporting transparency, animated textures, minor things like sky box...). How is your work on animations/skeletons going? I am currently trying out different ideas for implementing lighting, it's not as straightforward as I thought it would be.
I am currently working on animations/skeletons. I have not run into any problems. It's just a matter of getting all of the fragments loaded in a way that they can be used quickly when rendering.

For transparency, you really need to use the BSP tree while rendering. I assume you could get away without it but it would be much more work. I render every visible surface that is in the PVS and frustum recursively going front to back to prevent overdraw. Every time I come across a batch of polygons that are transparent, I add the offset and information to my "transparency stack". I chose the stack because you need to render back to front with transparency and a stack is an ideal data structure given the order of entry while rendering front to back.

For animated textures, make sure you have created a texture data structure that supports numerous bitmaps. One of the unknowns in the 0x04 fragments is the millisecond delay between texture switching. Keep track of the time and if it goes over the amount in the delay, switch index of the bitmap you will use for that texture.

The skybox was a bit more tricky. Just picture someone walking around with a dome around their head. Clear the depth buffer and render as usual. I can elaborate on this if needed.

As for lighting, I have implemented just the zone lighting that was in the original zones. Instead of dynamic lighting or lightmaps like Quake 3, they simply shaded the polygons with the color of nearby lightsources at each vertex. They essentially "faked" the lighting.

I will work towards getting my code on github this week as well. Probably getting static player/NPC models loaded would be a good place for me to take a small break. Let me know if you have any other questions in the meantime.

Cheers!
Reply With Quote
Reply


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 12:06 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3