EQG Zone Importer
By request-ish. A simple program for importing custom models and editing data for EQG-based zones.
Download link. Also on github. http://i.imgur.com/haRYvg8.png http://i.imgur.com/vI53d88.png Zones are imported from the Wavefront .obj format. Instructions are mostly the same as for the EQG Weapon Model Importer. Namely, from your 3D modelling program (such as Blender) you'll want to export to .obj with these options or equivalents: * Apply Modifiers * Include Edges * Write Normals * Include UVs * Write Materials * Triangulate Faces * Objects as OBJ Objects However, unlike with weapon models, zone models stick closely to the in-game coordinate system. So you'll want to export with positive Z as the Up direction. This tool may have bugs etc etc. Some improvements could also be made if there is any interest. Currently it can only view data for zones using some of the earlier EQG formats (which is what this tool imports custom zones as). Also, it would probably be nice to survey existing "regions" in various zones to see what the options there are -- the "type" of region seems to depend on the region's name (e.g. "AWT_water" presumably makes the region count as water). The effects of individual bits in the per-triangle flags is also unknown -- if anyone figures some of them out, I'll add labels and make it possible to mass-edit triangle flags somehow. |
Just wanted to confirm something I'd been wondering about: namely, whether the client cares if a particular zone is loaded from an S3D or an EQG.
It doesn't. Creating a "gfaydark.eqg" and importing a zone model to it was enough to make the game load that over the gfaydark.s3d files. So, hopefully, there won't be any reason to bother with the old, terrible formats as far as zones are concerned. edit: added the ability to make empty EQG files to the tool in order to facilitate that. One mild annoyance is that the zone's _chr.s3d file won't be loaded by default if the main geometry is loaded from an .eqg file instead. But I imagine you could get around that via the _chr.txt file just fine. |
Quote:
|
Quote:
|
Once again Zaela, you're going to be talking to yourself at first. For most people its just seeing before believing.
You're doing remarkable work. |
Quote:
Zaela, you can definitely do this with the older graphic animations. I have been able to manually overwrite older graphics using the same identifier. http://i.imgur.com/rLtEEEd.png http://i.imgur.com/6jivaT1.png Both of these use the old akheva identifiers (akf, akm) and were manually edited to use the newer EQLive akhevan graphics (identifiers; ahm, ahf). Also an interesting thing about some older models, is that many actually have male, female and neutral model types but only one or two of them have a graphic associated with them. (Old Akhevan Identifers: akf, akm, akn) This is the model identifier list that I pulled from EQGraphicsDX9.dll for Titanium Client (other clients will have more on their respective lists): Code:
HUM.HUF.KRB.FRY.CWR.ZMM.ZMF.MNR.EVE.SNK.SHL.MYG.KOR.GGY.FGP.DRC.DCM.DCF.CRL.CRH.ORK.CWG.FNG.KBD.WWF.FGT.SHD.LSQ.LSP.SEG.ASM.LVR.DRS.DRE.ANS.SPQ.TAR.PMA.SDR.MDR.BAS.LDR.KRN.GBN.DKE.DVS.CDR.MES.RKP.CNP.PRT.CRS.MAP.DBP.ROB.DBX.MNT.DDV.DSF.FRD.DMA.DDM.CHM.FRA.DSG.SCU.MUR.CLV.TGO.TLN.ISE.ISB.IWB.ILB.IFC.IBR.IHU.ICY.ILA.IEC.IWH.TTB.TMB.TAC.TWF.TGL.BON.CPT.RAK.TBL.VAS.CST.BRL.BOX.JKR.NIN.EEY.GLM.SDC.DRV.FGH.GBL.MMY.SKT.MMV.SYN.BGB.ROE.ROM.WUF.UVK.BVK.GVK.VEK.FUD.FSK.FMT.LGR.LGA.LUG.RPF.TPO.TVP.TPB.SPB.BTP.ZBC.SPD.RZM.AAM.BKN.UDF.WBU.EFE.WRB.VAL.QZT.PAF.KRK.WRU.WRW.SCE.STF.SMA.SVO.SKR.SSA.STA.PBR.TMT.PHX.CRB.ONT.GTD.XEG.RTH.UDK.MAR.ZEB.NMP.FMP.EMP.AMP.VAZ.TAZ.RAZ.NMH.NPT.TRW.FEN.SAR.HSS.MOI.GGL.BRV.KAR.NMG.CWB.GLC.BRC.JUB.STR.WMP.PUS.BUU.BUB.LEP.KOP.MAL.NMW.TIN.TRQ.SLG.NBT.CRO.VEG.TRT.TBU.BTX.SRG.DSB.GOJ.SKB.CLB.CLG.SRO.TMR.WRF.TRN.NYM.LUJ.SER.MUH.SOW.SPR.NET.GAL.SHR.SRV.SNN.LCR.ZEL.SCH.SGR.VOL.FUG.TEG.THO.WET.AEL.EEL.RNB.OWB.KHA.ECS.VAC.UNB.RHP.SKN.RON.STU.WLM.OTM.FSG.HIP.RGM.SBU.DIW.SUC.SED.SGO.RAP.MEP.IKG.DEV.WYV.FDR.BER.ISC.BAC.SSN.GOO.BRN.RAL.TUN.SOL.VST.TRK.FGI.DML.YET.KGO.XAL.RHI.MOS.LYC.DLK.SRW.SCR.EYE.DJI.PEG.UNI.INN.DRU.GRG.WOE.SEA.CLA.GSP.DRI.HAR.MER.WAS.MAM.SWO.LEE.KED.GOR.FRT.EFR.DER.DEN.DIA.COC.CAZ.LIZ.ALL.SPE.SCA.REA.ORC.FUN.DRK.BIX.SHA.TRE.WIL.GIA.WER.BEH.FRO.RTN.BTN.RAT.BAT.ELE.PIR.CUB.FIS.SNA.TNF.TNM.SEF.SEM.LMF.LMM.MMF.MMM.IZF.IZM.IWF.IWM.TZF.TZM.EPF.EPM.HPF.HPM.OPF.OPM.DPF.DPM.GPF.GPM.TSF.TSM.FBF.FBM.TBF.TBM.REF.REN.REM.TPF.TPN.TPM.GSF.GSN.GSM.AKF.AKN.AKM.SDM.SHM.HSF.HSN.HSM.VPF.VPM.GMF.GMN.WAL.VRM.SIF.SIN.SIM.DRF.DRM.IVF.IVM.CEF.CEN.CEM.GEF.GEM.GDF.GDM.GFF.GFM.MIF.MIM.DVF.DVM.VSF.VSM.KAN.GAR.HLF.HLM.CLN.LIM.EGF.EGM.NGF.NGM.FPF.FPM.PIM.SPI.TEF.TEN.FAF.FAM.BRF.BRM.BGF.ZOF.ZOM.HHF.HHM.AVI.GOF.WOF.WOL.WOM.QCF.QCN.QCM.BEA.GOB.GNN.DRA.SHP.LAUNCHM.LAUNCH..DWF.DWM.OGF.OGM.ELF.ELM.BAF.BAM.DAF.DAM.HOF.HOM.HIF.HIM.HAF.HAM.ERF.ERM.IKM.KEF.KEM.FRM.PRE.SHIP....BOAT....PPOINT..MINIPOM200 I would assume it to be possible to add a dll hook/inject in that would allow us to make our own identifiers, but that is beyond my expertise level and something that I have never honestly tried. Maybe someone with a bit more knowledge on that front could look into it. - Vaion The Hidden Forest |
Quote:
Quote:
Anywho: added region types to this tool since they had apparently been figured out already. |
Secrets has quite a bit of dll injection experience.
|
There's a part of the eqgame.exe that deals with exactly what you are trying to do.
The identifier for NPCs, as you have noted in your disassembly, can be a string that identifies a specific model and its parts. For example, HUM refers to human male models. So in disassembly, we have pseudocode that looks like this in the class constructor: Code:
CRaceGenderInfoManager::AddRaceGender(pCRaceGenderInfoManager, 1, 0, "HUM", 4, 522); *The second parameter is the ID of the race. *The third parameter determines the gender (0, 1, 2) of the NPC. The fourth is a bitmask that tells the client what the latest model file format will be for this NPC. I'm unsure of its purpose but all EQG formats have 8 as the bitmask. Basically, it's for animations in some way. *The fifth parameter is optional and contains fallback race animations in case those listed for the model fail to load. For Humans and some other races, it is 522 (Drakkin) for the fallback animations. You can find the class constructor in the UF/SoD client by searching for "SHIP" and it's the only reference of the string "SHIP" in the defined strings list in IDA. The animations are linked to the base model, and as such there's no way to load them from the client I believe. The animation data is stored in the wld file for S3Ds. Yes, it is possible to add VoA+ models to the UF client. You'd just copy the lines from disassembly to a DLL to add the NPC models from the later clients. Hook CRaceGenderInfoManager::CRaceGenderInfoManager() (the constructor that adds the races) and after it's done constructing, add in the races you'd like while using the instance returned from the thisptr. Hope that gives some insight. |
Thanks. Knew most of that at this point, actually. It's the "how to do dll injection 101" part that is beyond me ;p
Not really relevant (yet?) anyway. I can't see myself making any injection patcher type thing. |
Added a small utility to convert S3D-based zones into EQG-based zones. Not at all complete -- just handles the main geometry at the moment, not things like placed objects, texture transparency masking, vertex lighting, etc...
Not terribly useful and easily the Feature Most Likely to Crash, but I mostly just wanted to put gfay underwater for a minute: http://i.imgur.com/sRPIRWA.png http://i.imgur.com/B2WXSPE.png Underwater rain is a bit surreal. Making all of Kelethin into a slippy-slidey ice region would be fun too, but obviously harder to show. I've decided that if I ever do try to make a zone, it'll be an epic tower climb where at least one floor is made of lava. |
Quote:
|
Thank you for the help Zaela. Much appreciated. :)
Just to show what I am working on, this is my latest work in building a moba-style server. The layout & concept was inspired by League of Legends and will resemble it as much as legally possible. This has not been imported yet however I'll be trying my best to work this in as the cornerstone zone for matches. I've put roughly 22 hours into this map so far. - The beginning of the geometry & texture mapping. http://xonos.net/test/moba_ss1.bmp - Got some shiny rocks and a tree! http://xonos.net/zone/ss2.png - Getting closer to finishing. http://xonos.net/zone/ss3.png - http://xonos.net/zone/ss4.png - http://xonos.net/zone/ss5.png More shots on the next post. |
|
I wondered why you were asking me about how EQG Regions worked the other day, I didn't know it would be to drown the elves.
|
It didn't like my textures. I suppose I should work with DDS. Being used to openzone, I've been saving all my textures in 24-bit bmp's. I'll also need to adjust the scale a bit.
http://xonos.net/zone/ss10.png |
Packet are those in game EQ screenshots or are they renders of a zone in Blender or something? Looks pretty amazing, but a bit cartoonish WoW/Disney stylized a bit which look a bit like as well.
You could make a alternate 4 way faction vs faction map as well by removing the water and adding 2 more bases which could be pretty intense you could even have some water still too by utilizing some of the jungle area's for streams or whatever. This is defiantly exciting to see. |
Quote:
http://www.eqemulator.org/forums/showthread.php?t=38290 |
Quote:
Quote:
In all seriousness, I love Zaela for this tool. I've been needing it for years. lol |
Quote:
|
Quote:
I'm not sure how EQG zones handle masking yet (if it's a material property, I haven't come across it, and if it's a per-triangle flag bit, that would be a bit dumb). |
Not sure if this is what you were talking about exactly but crescent has some alpha materials.
|
Quote:
Quote:
|
Packet btw I'm using InfranView image effects on some of those screenshots and they look even nicer with a "unmask sharp" between 2-4 applied. Image effect and filters in InfranView/GIMP/Photoshop can really do wonders to enhance textures. Merging two or more textures together to form a more detailed one can be a very nice touch also.
Here's a example of how you can enhance texture detail. This could really enhance some of your textures in a nice way though though they really aren't bad as is. I feel like the wood and rock textures in particular could personally benefit from a bit finer detail touches added to spruce them up. http://blogs.msdn.com/b/shawnhar/arc...-textures.aspx Very awesome Packet and Zaela for providing the great tool that aided in the creation of it. Could make lots of different kinds of texture variations for your zone Packet. The MOBA design is great and could see it being widely used EQemu could use more custom zones like this. It's not only awesome, but it could actually be freely modded and shared around easily without all the copyright hassles presented with zones owned by Sony. |
Would love to see a step by step basic tutorial process on your zone creation Packet this is dope!
|
Quote:
Quote:
|
Quote:
Quote:
|
Quote:
|
Quote:
|
messed around with this a bit and gamecube model rips.
Super Smash Quest? http://puu.sh/9xn4C/81c604ce65.jpg |
The guard falling through the air really sells it.
I put up a new version, now has a mass triangle flag editor window in the "triangles" tab. Can edit flags for triangles based on a sub-range of them, the material they use, or both; and the flags themselves can either be overwritten to the new value or bitwise or'd to set specific bits on top of whatever they had before. Pretty simple. Might add an option for un-setting bits later. Learned that bit 1 sets permeability/not counting for collision, so that's labelled now too. |
Beautiful. Probably the coolest thing I've seen to date integrated into EQ. Can you pretty much map anything? FF7 textures, perhaps?
|
Very cool stuff, I wish I had more of an artistic ability.
|
I've been thinking about this in a slightly more philosophical sense - mainly because my home PC is out of action (actually the PC is fine, it's my house that's b0rked).
In EqEmu customisation is generally based on:- 1. Rule set tweaks 2. Custom quests 3. Custom NPC's 4. Custom Spells Some go a bit further and have new classes, and so on. The tools that are growing now can potentially allow this customisation:- 1. Zones + models in them 2. Weapon models 3. Particles This basically leaves "only" NPC/PC model mods left. These I suspect, will be the hardest to change if only because the artists required are pretty thin on the ground. Personally I like the hokey (N)PC models and animations, I prefer the newer modelled zones and weapons (although IMO they've made them all way too fancy on live). The question is at which point does EqEmu basically become a generic MMORPG development system, and really not much of an emulator at all? Because if you completely change rules, quests, zones,spells, weapons, particles and mobs, then really the only thing tying in that system to Everquest is the client, which is the biggest PITA since currently there are no legally available clients (bar a lucky find on ebay). I see there have been multiple attempts to make a new client (and I'm even thinking about it since I think I shall have to learn OpenGL for work and quite fancing mucking about with Unity3d too). Presumably though, if you shipped Sony's assets that had been modified to a different format that would be dodgy legally? I don't know if it would be dodgy if you could distribute the export program with the new client, so users would have to have their own legally obtained data files and run the converter before using the new client? |
Making a client would be thousands of times harder than some dinky data editor, both in terms of effort and of required know-how. Would take far better programmers than me! (I made my "attempt" a few months back, good excuse to learn the basics of 3D graphics but not something to waste more than a few weeks on.) Of course, anyone who could work on that would probably be better served doing something for money, or at least, something that isn't trying to simulate a 15-year-old game client.
If someone were trying to make a "generic" make-your-own-MMO client, making it compatible with EQEmu servers probably wouldn't be worth it. EQ has too much legacy crap and terrible decisions that only made sense in ancient times (e.g. giving the client way too much information about enemy positions). |
Taking assets from the EQ client is not recommended as you stated, it is illegal. Also, a new client will take a very long time to make. You may want to look into the client WindCatcher was working on and build upon it.
|
Oh god no, I'm not volunteering to write a new client! But I do need to brush up on OpenGl & Unity3d :) Let's face it a million people have posted "anyone fancy writing a new client?" and not gone anywhere.
And I think Windcatcher's code was written in Delphi (for which I have no IDE) and the source is hiding somewhere not obvious... |
Quote:
Transparency in .png textures isn't working out for me. I set the material to use the alpha channel and renders come out alright. But in-game, these are my results. I'm trying to find an EQG zone that has a model (like grass or something) that I can reference. Is there a different shader perhaps? http://xonos.net/zone/ss11.png I noticed something which may be intended by design but I thought I might bring it up. The materials that are imported (like my trees) are seemingly duplicated. I use the same material on a large majority of the duplicate meshes in my scene. Instead of re-using the same material, it duplicates a copy of the material which makes it hard to do "mass edits" to referenced objects sharing the same material. But I'm not sure if this was intended or not. |
Quote:
Google searched 24-bit TGA with no Alpha Channel and I came across this. http://www.yolkfolk.com/dizzyage/boo...or/page02.html From the looks of it your texture images are opaque rather than transparent as your intending them to be. I had noticed player models and other stuff like UI use TGA files so seems there is a correlation. Anyway hope that helps you in figuring it out. Judging from the information in the link though you'd want 24-bit TGA "with" Alpha Channel in your case because you don't want your trees opaque. |
I FUCKING LOVED the Dizzy games :)
|
All times are GMT -4. The time now is 08:21 PM. |
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.