Jump to content

  •  

New Client


  • This topic is locked This topic is locked
76 replies to this topic

#1 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 11 May 2014 - 07:03 PM

One for Learner really but, maybe of interest to others too.

There's much I like about the EL client but, also lots that seem to make it a bit of a dead-end as far as future development is concerned. Hence, i've been experimenting with some other game engines, just to establish the potential in developing them as a new client. There's lots of good engines out there but, the criteria i've applied is quite limiting, ie :

Must be opensource

Must be cross platform

Must be actively developed

Must be coded in C with minimal (preferably no) use of C++

Must allow for an overlay of the existing OL/EL comms protocol

Must have a well documented codebase with consistent and tidy style

Must have a forum run by nice, sensible peeps

So far i've tried Raydium (http://raydium.org/)and Darkhammer (http://www.hmrengine.com/), both of which seem to have potential. Whilst most of my testing has been on the former, its the latter that's beginning to impress in terms of graphic capabilities. However, transposing the EL gameplay specifics is likely to be no easy matter.

#2 Learner

Learner

    God

  • Administrators
  • 2890 posts

Posted 11 May 2014 - 07:32 PM

Define "open source" .... what about Unity3D using C# ? The engine itself is closed source, but free versions are very useful. Cross platform and then we can tune it as needed for Android & IOS. It's very powerful and official builds could be done with a licensed version in order to get the advanced features, like improved performance,

(technically, it uses mono, not C#, but thats how it;s cross platform.)

#3 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 12 May 2014 - 04:11 AM

Unity3D is a brilliant engine and seems to have lots to commend it in terms of features and support tools. i've little doubt it could be used to design and build a really great game. However, unless its intended to develop a new server to support a Unity client, it will be necessary for the latter to be compatible with the same  maps, objects and protocols as the existing client so as both the old and new client could operate alongside during the development period.

I guess my query would be how that could be achieved.

#4 Learner

Learner

    God

  • Administrators
  • 2890 posts

Posted 12 May 2014 - 05:47 AM

We alreafy know that we can place 3D objects properly by reading a .elm file and already having the .e3d's converted as resources. Where3 a test of Unity3D is stuck at the moment is that the textures aren't being handled correctly after the e3d's were exported to obj & mtl files. What we need is the same person doing the conversions of test objects getting them into Unity3D to isolate & correct the texture problems. Once that is resolved work could continue on the rest of the .elm items and them to use the Unity Editor as a .elm map editor.

Being that Unity3D is Mono/.NET internally, to make a working client the next steps would be the network protocol interface, actor animation & UI after that.

#5 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 12 May 2014 - 07:18 PM

Re opensource - I guess a broad definition would be anything where the source is publicly available and, not subject to restrictive licensing requirements. However, I appreciate that the advantages of the latter can be offset and outweighed when it comes to game engines. In the case of Unity, its a great platform and provides masses of other infrastructure that would otherwise take an age to code and design.

If you've managed to replicate elm maps in Unity (and place 3d objects properly) that's a big step forward. Re: the problems in converting e3d textures, I've recently tried to convert some commercial (vegetation) objects from 3dx format to e3d, only to hit similar problems with textures, ie If I import a 3dx into blender and then attempt to export as e3d, I end up losing textures.

At this point, I don't understand enough the technicalities of 3d formats to determine the underlying problem but, have managed to work out all the various parts of the e3d header and separate out the array of vertices. However, i'm currently having problems trying to match that with the same object saved in obj format so, its rather a work in progress.

Once I get it sorted, i'll try writing a standalone utility to convert obj to e3d (and hopefully vice versa)

#6 butler

butler

    Advanced Member

  • Full Member
  • PipPipPip
  • 1432 posts
  • LocationScotland

Posted 13 May 2014 - 12:46 PM

My 2 pennies, it would be nice if we could build into the new client backwards compatibility with EL maps and map maker, but build in a friendlier, less annoying map maker, with greater ability to manipulate items, the heights in maps and such so the world doesn't seem as flat as the Seychelles or Holland, and allow landscapes closer to my native land. Not sure what the limitation of .e3d is, but if we want to get past them, it might be nice to work back compatibility into it as well, but allow us to manipulate our on format to our ends, and not limit us quite as much.

I know it's not quite in the line of what your discussing, but in a New Client, I'd really love to see this added.

#7 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 21 May 2014 - 03:49 AM

View Postbutler, on 13 May 2014 - 12:46 PM, said:

My 2 pennies, it would be nice if we could build into the new client backwards compatibility with EL maps and map maker, but build in a friendlier, less annoying map maker, with greater ability to manipulate items, the heights in maps and such so the world doesn't seem as flat as the Seychelles or Holland, and allow landscapes closer to my native land. Not sure what the limitation of .e3d is, but if we want to get past them, it might be nice to work back compatibility into it as well, but allow us to manipulate our on format to our ends, and not limit us quite as much.

I know it's not quite in the line of what your discussing, but in a New Client, I'd really love to see this added.

The Freelands server project created an alternative map maker in Java. I've not used it myself but, its supposedly a vastly improved version https://freelands.to...anuelElMapTools

EDIT:

Here's a link to a demo editor in blender http://sourceforge.n.../projects/demo/

#8 butler

butler

    Advanced Member

  • Full Member
  • PipPipPip
  • 1432 posts
  • LocationScotland

Posted 21 May 2014 - 10:55 AM

Got a security message concerning the freelands link.
ty for the info though.

#9 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 01 June 2014 - 03:18 PM

View Postthemuntdregger, on 12 May 2014 - 07:18 PM, said:

If you've managed to replicate elm maps in Unity (and place 3d objects properly) that's a big step forward. Re: the problems in converting e3d textures, I've recently tried to convert some commercial (vegetation) objects from 3dx format to e3d, only to hit similar problems with textures, ie If I import a 3dx into blender and then attempt to export as e3d, I end up losing textures.

At this point, I don't understand enough the technicalities of 3d formats to determine the underlying problem but, have managed to work out all the various parts of the e3d header and separate out the array of vertices. However, i'm currently having problems trying to match that with the same object saved in obj format so, its rather a work in progress.

Once I get it sorted, i'll try writing a standalone utility to convert obj to e3d (and hopefully vice versa)

Just a quick update on this. Having finally managed to work out all the constituent parts of the e3d format, I started work on the standalone converter. Initially, this is intended to convert e3d to wavefront obj, although eventually I write an obj to e3d version. Having started out with zero knowledge of 3d formats, its been a steep learning curve and, there's still further to go. Atm, the prototype can convert mesh data, although i've still got some work to do before it can reliably handle materials and normals. However, here's an example of the EL anvil1.e3d file after its been converted to obj :
Posted Image

As can be seen, it looks pretty much like its supposed to. However, getting textures properly mapped and lighted is still to be done. Nonetheless, I guess its a step forward. Once i've got it so that the converter can reliably handle more complex files with multiple materials, that should allow Learner to commence converting the existing EL artwork for use under a new Unity client.

#10 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 03 June 2014 - 05:26 PM

Well, the latest version handles 'compressed normals' and creates a matching mtl file to hold materials data for the obj file. Alas, the texture mapping in the obj file seems to be wrong hence, the rendering is completely distorted (as can be seen from the example of wall1.e3d) :

Posted Image

what its supposed to look like is ...


Posted Image

Anyhow, its just another interesting problem to be worked out ;)

EDIT:

Problem fixed. Next challenge is to handle e3d's with multiple textures

#11 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 04 June 2014 - 06:54 PM

Here's the first attempt at multiple textures. On the plus side, the textures seem to be going in the right place, but the mappings are totally screwed

Posted Image

#12 butler

butler

    Advanced Member

  • Full Member
  • PipPipPip
  • 1432 posts
  • LocationScotland

Posted 05 June 2014 - 11:21 AM

Nice progress munt. Don't think it's worth down repping his work, he is trying to make it easier for us to make ourselves more distinct from EL, working with a file that doesn't seem to be easy for anybody to work with.

Engine wise, the CryEngine and Unreal Engine have gone down in price recently(ish) and i also found these interesting engines; CopperCube & IRRLICHT. Might be of interest to some of you.

#13 Learner

Learner

    God

  • Administrators
  • 2890 posts

Posted 05 June 2014 - 12:26 PM

What munt is trying to do is convert to a format that can be used by many other engines or easily converted to others. What he's doing isn't specific for anyone engine, but he has a goal to make sure it'll look proper with the Unity engine which is my preference and available for many different platforms. At the moment there is something wrong in most conversions from the custom E3D format that is messing up all the textures in almost all viewers except Blender, probably just one little setting someplace is all it may take.

#14 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 05 June 2014 - 01:06 PM

Some progress made in rectifying the mapping of the textures. At least the simple ones are now correct. The problem turned out to be in the decoding of the vertex_hash, the format of which varies in relation to a range of different flags. In the previous case, the problem was that the position of the uv data had changed, resulting in uv map then being based on incorrect data. Anyhow, that's now been fixed and, as can be seen below, the simple textures are now all in the correct place.

However, there's an issue with the textures for windows etc which, as can be seen, are not correctly aligned or completely missing. This reflects that the particular texture file is different to the others, in that it consists of multiple images that must be precisely located on the image file. I'm not yet quite sure whats going wrong but, i'm working on it.

Posted Image

#15 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 05 June 2014 - 06:12 PM

Ok, problem now solved and all textures now line up perfectly :

Posted Image

Next thing is some more testing plus, general tidying and prettying up the code.

#16 Learner

Learner

    God

  • Administrators
  • 2890 posts

Posted 05 June 2014 - 06:36 PM

Have you loaded any into Unity 3D editor free edition to see how they look there?

#17 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 06 June 2014 - 03:35 AM

An idea came to mind for another tool...

Changing textures in the e3d files can be done through the Blender macro's and seems fairly reliable. However, Blender is not the easiest app to handle and the process is quite time consuming. It's also particularly problematic for Linux users. A simple tool which enables users to change the e3d textures would therefore save a lot of time and, make the process available to more ppl.  This would allow the OL community to start experimenting with improving the 'look and feel' of the existing EL artwork by using new textures.

Whilst its not a difficult piece of code to write, the challenge (for me at least) is the windows port.

View PostLearner, on 05 June 2014 - 06:36 PM, said:

Have you loaded any into Unity 3D editor free edition to see how they look there?
Good idea Learner. I'll try than out

#18 CoduX

CoduX

    Advanced Member

  • Full Member
  • PipPipPip
  • 1222 posts
  • LocationLand Down Under

Posted 06 June 2014 - 09:02 PM

View Postbutler, on 05 June 2014 - 11:21 AM, said:

Nice progress munt. Don't think it's worth down repping his work, he is trying to make it easier for us to make ourselves more distinct from EL, working with a file that doesn't seem to be easy for anybody to work with.

Engine wise, the CryEngine and Unreal Engine have gone down in price recently(ish) and i also found these interesting engines; CopperCube & IRRLICHT. Might be of interest to some of you.
If your referring to me, it was a misclick as I tried to zoom the page in closer with my fingers, it hit the negative rep arrrow and since my comp is stuffed up atm, It wouldn't let me for some reason un-do the neg rep.
Keep up the great work Munt!

#19 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 08 June 2014 - 05:06 PM

Still waiting for the Unity client to finish downloading (over gigabyte of data).

In the meantime, have been testing and refining the converter on ever more complex objects. Finished up testing it on ship04.e3d which, with over 6500 vertices, 22600 indices and 3 different textures is a utter monster and the daddy of the lot. As can be seen, everything worked pretty much as it should...

Posted Image

Code has been prettied up and, apart from a few minor aspects of housekeeping, version 1.0 is nearly ready to roll. I'm looking forward to seeing how it performs on Unity once that has finished downloading. If things work as expected, i'll produce a windows binary and 64bit Linux port. The source will be licensed under GPL so, is available to anyone who wants to modify or compile their own version.

Here's an example of the program output for the above :
				UnoffLandz e3d - obj converter 1.0

				FILE VALIDATION DATA
				------------
				file type................. [e] [3] [d] [x]
				file version............ [1] [1] [0] [0]
				md5 hash............. 245 166 76 174 22 152 76 51 202 0 31 181 44 107 69 226
				file header offset...[28]
				
				HEADER DATA
				-----------
				vertex.................... count [ 6653] size [ 14] offset [ 68]
				index..................... count [22620] size [ 2] offset [ 93210]
				material................. count [ 3] size [172] offset [138450]

				vertex options...
				 normals.................[TRUE]
				 tangents................[TRUE]
				 extra uv................ [FALSE]
				 colour................... [FALSE]
				
				 vertex format...
				 half position...............[TRUE]
				 half_uv.......................[TRUE]
				 half extra uv...............[TRUE]
				 compressed normals... [TRUE]
				 short index................ [TRUE]
		
				reserved bytes............[0] [0]
		
				TEXTURE FILE REFERENCES
				-----------------------
				shipparts01.dds
				ship_wood01.dds
				wood10.dds
				
			 FILE CREATION
				-------------
				mtl file [ship04.mtl] created
				obj file [ship04.obj] created
				

   Apologies for the crap formatting which, is due to the forum editor

#20 themuntdregger

themuntdregger

    Official Troll

  • Full Member
  • PipPipPip
  • 1001 posts
  • LocationBehind you

Posted 10 June 2014 - 02:51 AM

Ok. Unity has finally been downloaded but, crashes under Wine. It was probably a bit optimistic to to think it would do otherwise, so i'll just have to try it under Windows later tonight.

Have now released version 1.1 of the e3d converter (see https://sourceforge..../e3d converter/ ). This provides an optimisation algorithm that removes duplicate vertex texture and normals data contained within the e3d.

EDIT :

32bit Windows version of e3d_conv now uploaded to Sourceforge plus, Unity now alive and working on Windows :

EDIT :

Here's house2 in the Unity editor with all the textures rendered correctly. However, the object had to be exported as fbx (not obj) plus, it took a whole lot of fiddling about to link the textures. From googling around, it seems that Unity is limited to reading mesh data from obj format files, hence, the usual guidance is to use fbx. In this case, I used blender to import as e3d and then export as fbx and, ironically, it seems to work reliably. However, its a fiddlesome, long winded process that still relies on ancient versions of blender.

Not sure if this is the end of the road for the e3d_obj converter. The problem is not so much that Unity's inability to read the materials data but, that it messes up the texture mappings. I've a few more ideas that I can try to try and work around this.


Posted Image




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users