Sign in to follow this  
Shiraek

Some thoughts on other engines (Unity, Unreal)

Recommended Posts

I've been thinking about this for a while. I've been working full time with Unity for about 20 months now, and whenever I play Wurm and see what the client is doing + how LONG it takes to get things working (e.g. bridges and collisions), I can't help but wonder if you wouldn't benefit from switching engines.

In all seriousness, getting characters to walk over or under bridges is less than a day's work in Unity. It's got an entire physics engine built in. What you have to do in Java to achieve it, I shudder to think, and I'm not surprised it's taking a year. I assume there's also an entire mess of server code involved which I can only guess at, and going Unity won't help you there obviously. However, in the time it's taken to get Bridges going, it almost feels like you could've switched engines at the same time!

 

Unity makes a lot of things you need for Wurm very easy. A character animating and walking around. Clicking on stuff. Moving objects. There is even probably a template/demo game you could use as a base to run some quick tests on. Unity would also give you a better visual experience by directly importing the same art assets and just by turning on some of the effects it comes with. Reflections wouldn't be broken anymore. Shadows would look better and not cost so much cpu power etc etc. It does modern looking tricks like SSAO, sun shafts, realistic looking bloom, atmospheric distortion and lens flares with a few clicks. That's all stuff you can just turn on once and forget about, or have a little script that switches them off if the framerate drops because the player's got an old machine.

On the other hand Unity's inbuilt terrain engine is woefully inadequate to do what Wurm does with terrain. No question of it, you'd need to use multiple instances of it, write your own or adapt someone else's. We had to do the same, but for different reasons. (Your height maps are too big, whereas we don't actually have height maps and our terrains are sperical and earth sized...). Also, if you tried to display the same number of trees the same way you do, you'll end up with shockingly bad performance. Sprites work for you now, but for Unity you would need to batch them up heavily - thousands of game objects leads to big overheads, but a few game objects showing hundreds of trees each would not.

Other things Unity does which annoys me are a total lack of threading and support for threading (it won't let you access any of its API objects in another thread, training wheels you CAN'T remove), and their customer service / response to crash bugs is... in my experience DREADFUL.

Another engine you might consider is Unreal. It's more expensive (5% of revenues, instead of $1500 a seat, ouch) but it may have more of the capabilities you desire, and where it doesn't, critically, you DO get the full source code. So if its terrain engine is great but doesn't, say, let you alter the heightmap on the fly, then you could potentially write that one piece of code for it yourself and still make use of the rest of the engine. But at least you could stop re-inventing the wheel, which is what you're going to be stuck doing for everything in java. I haven't worked with Unreal so can't speak to its quality, but colleagues seem to swear by it.

I understand the reticence to change engines. It's a nightmare of work and no doubt a brick-wall shaped learning curve. However, lifting Wurm's visual appeal and its pace of development might better arm you to against competition, present and future.



 

  • Like 2

Share this post


Link to post
Share on other sites

I don't know how are our devs experienced in other fields than Java, but learning to work in a whole new system alone might take a while.


Another important thing is that, as you said, pre-made engines have their flaws, and for such unique game as Wurm, I feel that own, dedicated engine would be best. Although a rewrite wouldn't hurt, considering how often we hear of the spaghetti code.


Share this post


Link to post
Share on other sites

I really don't think that going for a streamlined engine would do any good to wurm. Like you already mentioned, there are alot of issues/flaws when using prebuild engines especially when it comes to creating sandbox games and especially terraforming. And mainly, game engines are used to make interaction between graphics people, game designers and programmers a little easier, by allowing them to use the rough game making tools with graphical interface. 


 


I think what wurm would need are some specialists :) or someone who concentrates on ONLY doing the shaders and optimization of graphic assets aswell as the database structure. A game engine does nothing of those things itself :P 


  • Like 1

Share this post


Link to post
Share on other sites

My laptop hates anything built on UE3, so no thanks, and it doesn't handle Unity that well, either. For what the current engine accomplishes, I really don't think it's that inefficient, and CC seems to feel the same way. Frame rates are passable. Stuttering and loading problems remain a bear, however, and lots of folks have compatibility issues with drivers and such.


Share this post


Link to post
Share on other sites

Wurm Online 2.0.


Maybe in 10 years time, heh.


 


People have been suggesting this for years. And you're right, by now it would have paid off for itself...assuming a new engine would fix it. Like others have said though, how well an engine like Unity would handle Wurm is an unknown.


 


Not to mention if data couldn't be transferred to the 'new Wurm', there would be a lot of unhappy customers.

  • Like 1

Share this post


Link to post
Share on other sites

Wurm Online 2.0.

Maybe in 10 years time, heh.

 

People have been suggesting this for years. And you're right, by now it would have paid off for itself...assuming a new engine would fix it. Like others have said though, how well an engine like Unity would handle Wurm is an unknown.

 

Not to mention if data couldn't be transferred to the 'new Wurm', there would be a lot of unhappy customers.

There's already a Wurm 2.0!  Check youtube :P

Share this post


Link to post
Share on other sites

I've only ever had horrific experiences when it comes to Unity's customer support and developers. The 64-bit version of the engine barely works... it's 10 years behind on that front.


 


Unreal is nice but it is not an MMO engine (definitely not a sandbox one) and is locked to Epic Games' workflows.


 


Wurm's unique engine is fine, and so is Java. Imo, there's still plenty of room for improvement in Wurm's code before the huge task of changing engine should even be considered.


  • Like 1

Share this post


Link to post
Share on other sites

In the recent Q&A this topic was addressed.


 


From the answer 2 things (well maybe 3), stuck in my mind.


 


The first was that one main issue seems to be that the Devs cannot control, or even predict, how many objects might get created in a given space. The OP already pointed out that trees in Unity - which are very prevalent in Wurm :) - can already cause dreadful performance issues. One can only imagine what a well stocked, busy village might do.


 


The second was Rolf mentioned C++. I'm no coder, but that suggests a unique engine design approach to me.


 


And the third was the Dev's suspicion that even with a complete change the end result might not be what everyone would actually hope for in terms of increased performance/functionality.


 


It's clear though that the design team are considering options - and considering what they have made Java do I'm happy enough to see what they decide is best in the end.


 


(true 3d would be great though, I have to admit)


Edited by Heboric

Share this post


Link to post
Share on other sites

You say unity has built in physics engine and walking under bridges and such is easy, but I don't think it would be when you add the fact that a Wurm server is like on gigantic zone that is streamed to the client in real time, the world is ever changing. You also need to do alot of the physics and collition detection server side since this is an mmo, not a single player game. Everything is a lot easier in a single player or even normal multi player game compared to an MMO. 


 


I think when Rolf talks about a new engine he means client engine, not replacement of the server engine. It would make it simpler to add more graphical effects on the client, but the server is still as hard to implement. 


 


And as you already mention, the terrain stuff in Unity is lacking. I tried it a bit too, but didn't see how it could be used tfor anything like Wurm... 


  • Like 1

Share this post


Link to post
Share on other sites

bridges would be faster in photoshop, doesnt mean that solves the problem


 


I think the key factor that's being missed here is a) we dont have the knowledge of just what is wanted from any engine for wurm, and B) it's not our decision.


 


I find it strange players are always suggesting moving away from java, or working on better advertising, when the simple fact is, we make suggestions regarding ingame features and balances, we do not decide the direction of the company.

  • Like 1

Share this post


Link to post
Share on other sites

quote from q&a


 


 - Do you have any plans about getting rid of java?


 


(Rolf) Yes, we’re looking at it but replacing it is a huge project.


Java performs better than you think and changing to for instance C++ may not have the impact you’d expect in the type of world we’re delivering.


You need to first consider viewing distance, number of trees, animations, concurrent number of players and visible items.


Also that the terrain mesh can be modified when comparing to other clients.


It will be interesting to see how well the new client performs.


 


(Erik) It would be a really fun but time consuming project, and as Rolf say far from all the issues that exist in the current wurm clients are language based.


Many of them stem from the fact that we as developers have very little control over how many objects exists in one area.


At least when comparing to most AAA titles.


 


i guess theyre at least thinking about it. my thoughts on it? will it be worth the amount of work for the return?


depends on what kind of engine they come up with. also i venture to guess more than a few who can play now


wouldnt be able to play in an engine like unreal, but it would bring other players who can, maybe...


  • Like 1

Share this post


Link to post
Share on other sites

1.

 I assume there's also an entire mess of server code involved which I can only guess at, and going Unity won't help you there obviously. However, in the time it's taken to get Bridges going, it almost feels like you could've switched engines at the same time!

 

2.

I understand the reticence to change engines. It's a nightmare of work and no doubt a brick-wall shaped learning curve. However, lifting Wurm's visual appeal and its pace of development might better arm you to against competition, present and future.

 

 

1. A good answer to your question :)

 

Getting something to work in a single player game with collisions and so on are something completely different then doing it in a sandbox mmo with all the checks that needs to be done.

Everything needs to be done or verified on server side, or you just let it go and accept the inputs from the client and you get all kinds of hacks/cheats.

 

Bridges adds a lot of variables to the game.

Deed permission checks on bridge/bridge parts on deed

Push/Pull stuff on bridges

Pushing from bridge to ground

Fighting on bridges

Archery to/from bridge/ground, bridge to bridge
Creature AI pathing on bridges
And so on and on and on ....

 

 

2. I do agree that Wurm needs a facelift, we do discuss a lot what would be possible with the existing engine and we also look at other engines and test em out. If we someday will change engine it's a huge huge task and will take time. Also the engines today have a lot of tools and really good workflows so someday we need to consider if it's cheaper to use a third party engine and pay some $ than doing it all by our selves, and now with engines starting to be released with source code you can dive in under the hood and get really creative.

But it is up to Rolf in the end. I'll I can do is to threaten to put sand in his keyboard and super glue his mouse to the desk :)

 

Cheers!

  • Like 7

Share this post


Link to post
Share on other sites

Unigine looked nice in the valley benchmark


 


also they just made snowdrop engine specifically to develop the new tom clancy game "the division", wich looked really nice for devs


 


my other favorite engine to follow is the voxel farm engine they will soon be releasing a studio, which im pretty excited about.


 


not sure if any of these really fit wurm, not without heavy modification, most of it is all server side in wurm anyways, you build the world on the server and the client can interact with it, but the server is all coding and not visual studio work, its only the client that needs to see the code and present it in a 3d format to your screen, i believe wurm takes 2d information and extrapolates it into 3d, so the so the data usage remains low


i would think full on 3d information is going to use a lot more data ?

Share this post


Link to post
Share on other sites

Engines are good for development speed, I personally really like Unity and see its usefulness and superiority when compared to creating games in Java or C++. I wrote DeedPlanner 2 in Java+OpenGL instead of Unity only because at that time I didn't had enough experience to port the program (on the other hand, I actually made basic prototype, but never published it).

There are just two problems - first of them is graphical optimization. Wurm environment is constantly changing, almost everything is variable and can be reshaped, buildings are made from "blocks" instead of pre-made shapes, amount of complex entities even in small villages can easily reach hundreds, sometimes even thousands. To be able to handle this, engine must use unusual and "smart" optimizations - engines like Unity and Unreal Engine expect that most of the environment is static and will never change, so forcing them to support variable environment is actually a hard task, especially when we need to think about performance as well. Summing up, can engine be replaced? Yes. Will it work better? Yes, but this would require a lot of work anyway. Sadly changing engine will not fix any problems instantly, but could be profitable later on.

Another problem is game complexity vs. Code Club team - most AAA games are less complex than Wurm, but have dozens more employees. I think that Wurm development speed is surprisingly fast when we consider this.

  • Like 3

Share this post


Link to post
Share on other sites

Time for me to chime in. I have been using Unity and learning it for a while now. I have looked at and fiddled with many other engines, including Unreal. If you are looking for a user-friendly, cross-platform engine, Unity is hands down the best option. Sure, Java works on every desktop, but Unity can port to iOS, Android, Linux, PS4, XBoxOne, etc. In short, everything.


 


Everything is modular in Unity, and with their drag-and-drop editor and ease of use (and I have to be biased, I prefer C#) Unity is very user-friendly and helps foster a fast work flow. As far as the terrain goes, Unity can do it, as you can draw polygons and objects with pure code. It can handle the terrain, there are even a handful of marching cube/voxel based systems on the Asset Store you should look at, for those that want "True 3d" (a phrase that bugs the crap out of me. In response to the posts above about multi-threading, Unity 5 is coming out that has both a 64-bit editor AND multi-threading. They are also revamping the entire multi-player code to support MMO design. Its worth another look. I would love to help with the change if Unity was decided on.


 


Another option is JMonkeyEngine. Its Java and has an entire development team working on the engine, so you can let them worry about optimizations, physics, etc and focus on your game. I have seen hat JMonkey can do and it very impressive. Best of all, its 100% open source and free.


Edited by Mark
  • Like 1

Share this post


Link to post
Share on other sites

Everything needs to be done or verified on server side, or you just let it go and accept the inputs from the client and you get all kinds of hacks/cheats.

 

Speaking of client and server, is it true that they communicate at a rate of only 1 Hz? Obviously there are downsides to having too high (increased bandwidth requirements) and too low (high latency), but I'm just wondering how much of the notably awful latency is due to the "tickrate" and how much is from other factors. Obviously living in the US has its own disadvantages.

Share this post


Link to post
Share on other sites

I wouldnt use Unity for 1 big reason -its too easy to hack. I was working with unity for a while and had it setup to run as an MMO. Could log in  and run around the maps I made. Had about 15 people on just running through looking it over and just generally playing with it and the backend. Biggest issue I saw, that nearly instantly turned me away from it, was how easy it would be to hack. Performance issues will immediately  push you towards too much code on the client side. Which in my opinion is dangerous. Unity is just too easy to hack.


 


Wouldnt use cryengine 3 either -  same reason.


Share this post


Link to post
Share on other sites

I'm an indie dev myself (MUCH smaller time than Rolf. just getting started really. haha). But i can say that "switching engines" is not a thing that you can do. Especially not with a game as complex and "established" as this. What you are basically saying when you say "switch engines" is "take all the 3d models and textures and sounds, toss them in unity. then rewrite EVERY line of code to make the game work again as it was". And it will be a complete rewrite because you'll have to handle things through the Unityengine library, and not the established systems the devs have created as they've built this game.


 


Unity is also rather spotty. It has lots of limitations that you never see until you hit on one of them. its not so bad for standalone/desktop games, but if you tried to make a browser based game like wurm, you would quickly find it to be impossible, because unity just doesn't allow certain things in the web engine. The best course of action for Wurm is to continue on the custom engine path and continue optimization.

  • Like 1

Share this post


Link to post
Share on other sites

I'm an indie dev myself (MUCH smaller time than Rolf. just getting started really. haha). But i can say that "switching engines" is not a thing that you can do. Especially not with a game as complex and "established" as this. What you are basically saying when you say "switch engines" is "take all the 3d models and textures and sounds, toss them in unity. then rewrite EVERY line of code to make the game work again as it was". And it will be a complete rewrite because you'll have to handle things through the Unityengine library, and not the established systems the devs have created as they've built this game.

 

Unity is also rather spotty. It has lots of limitations that you never see until you hit on one of them. its not so bad for standalone/desktop games, but if you tried to make a browser based game like wurm, you would quickly find it to be impossible, because unity just doesn't allow certain things in the web engine. The best course of action for Wurm is to continue on the custom engine path and continue optimization.

 

I think you have pointed out here pretty clearly why Rolf has stated that he has no current plans to switch the game from Java to something (engine) else. I think even in the latest Q&A he made comment on this, with the additional reference to considering another engine in the future, most likely to appease those who are constantly on him about switching the game out of Java.

 

=Ayes=

Share this post


Link to post
Share on other sites

The issue with bridges is complicated because this is NOT a 3D game. Once you realize that the game is 2D with a height map, the fact that they even got multi story houses to work is AMAZING. 


 


Java makes it easy for them to make the game cross platform, Mac, Winblows and Linux users can all enjoy the game without the devs having to make seperate clients for each system.


 


While I agree completely that a different, or custom engine would be amazing for Wurm. That is a huge undertaking for a dev team that consists of what 5 people sitting in a small office with a handful of volunteer helpers. It would take a AAA company 6+ years, multi million dollar budget, and a staff of 50-100 people if not more to make wurm on another or custom engine...and guess what, it would still have bugs.


Share this post


Link to post
Share on other sites

This is kind of a bizarre sounding indie mmo upcoming in the Unity engine, supposedly.


 


http://divergence-online.wix.com/divergence-online


 


It promises to treat you like an adult and permadeath you, darn it.


 


I think Wurm should win some kind of award for pioneering the first 2.8965-D engine. John Carmack, eat your heart out.


Share this post


Link to post
Share on other sites

The issue with bridges is complicated because this is NOT a 3D game. Once you realize that the game is 2D with a height map, the fact that they even got multi story houses to work is AMAZING. 

This kind of comment just keeps grinding me every time I read it. Not a 3D game? Do you have any idea what you are talking about?

 

Difference between a 2D and 3D game is a 2D game lacks depth. 2D games use sprites with a height and a width, just images laid out on a canvas. Wurm is a 3D game, you have this little thing called depth and it uses 3D models. and EVERY game besides some with a voxel or marching cubes map use heightmaps. Can you look up, down, left, right, or behind yourself? Oh, up? Yes, you can look up, that's 3D. Can you fall off a cliff and bounce down the mountainside? Oh, did I say fall? Look, 3D.

 

First person shooters use hightmaps. 

 

World of Warcraft, sorry, heightmaps.

 

Everquest 1 and 2, oh look, heightmaps.

 

Are these not 3D games because they use hightmaps? Yeah, yeah they are. Know what Wurm lacks? Features, like jumping, flying and swimming.

 

Before anyone else says this is not a 3D game, think before you type. Don't ask for 3D, ask for FEATURES. Ask for flying, jumping and swimming.

Edited by Mark
  • Like 1

Share this post


Link to post
Share on other sites

The graphics are 3D, of course. But the server representation of the world is 2D with a 3D dimension slapped on top for some purposes, more and more purposes, but not natviely built in from the ground and up. 


Share this post


Link to post
Share on other sites

Lot's of 3D games use a ground "plane" and objects/buildings/caves with collision detection to implement the world. I can think of a few exceptions like space simulations and the voxel based Minecraft.

If you exclude the space simulations (an almost empty 3D space is not that hard to do) you're only left with volumetric models like Minecraft. And to get that flying Notch had to create the world from blocks with a fixed size.

Share this post


Link to post
Share on other sites

Tossed in the small maul into unreal for fun :)


 


small_maul_ue4.png


  • Like 6

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this