New engine please

For developmental things relating to the graphics of the game.
Word
Reverse Adjust Outside Corner Grinder
Posts: 4171
Joined: Wed Jan 07, 2009 6:13 pm

New engine please

Post by Word »

http://unity3d.com/?linux

Time to port to Unity? :D

User avatar
Tank Program
Forum & Project Admin, PhD
Posts: 6709
Joined: Thu Dec 18, 2003 7:03 pm

Re: New engine please

Post by Tank Program »

I've seen (and run) the Unity demos, but I haven't actually seen a game for Linux using it. It does look really nice, but I was under the impression that there was a (significant) cost involved. Ogre would be our happy-go-lucky FOSS equivalent. Eventually...
Image

Word
Reverse Adjust Outside Corner Grinder
Posts: 4171
Joined: Wed Jan 07, 2009 6:13 pm

Re: New engine please

Post by Word »

Yeah, 4 hasn't been released yet - as of now it's just an announcement. But I thought it is still noteworthy because this feature request is almost as old as the Unity project itself (and it always seemed like it was the last point of their to-do-list) and perhaps this is a small revolution - let's face it, Linux still isn't as established as Windows and Mac.

The editor is still Windows/Mac only - this piece of news concerns the exportable builds alone.

As far as I know Unity has always released a free version with no additional cost as long as your game wasn't commercial (but I haven't read the respective license agreements), and some minor differences compared to Pro. I think the only reason the Tr2n team dropped it was because they were considering to go commercial, and in that case the pricing would have been too high (and the community too small, but that's another story). Maybe compguy or neal know something about this I don't.
here's the link for the comparison (click on "Read More" - copying and pasting that link here leads to an ugly raw version):

https://store.unity3d.com/products/

epsy
Adjust Outside Corner Grinder
Posts: 2006
Joined: Tue Nov 07, 2006 6:02 pm
Location: paris
Contact:

Re: New engine please

Post by epsy »

That's all nice but

a. The editor is not available on Linux
b. This drops the whole FOSS idioms we follow.

User avatar
Z-Man
God & Project Admin
Posts: 11331
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Re: New engine please

Post by Z-Man »

Also, I'd bet we can't use any of the existing code, and dedicated servers are also a problem. So no, I don't see this happening.

Word
Reverse Adjust Outside Corner Grinder
Posts: 4171
Joined: Wed Jan 07, 2009 6:13 pm

Re: New engine please

Post by Word »

Bump, just wanted to notify you that their site says they're getting a little more open-source-friendly (and to those whom it may concern, they're also looking for new employees).

User avatar
Z-Man
God & Project Admin
Posts: 11331
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Re: New engine please

Post by Z-Man »

Yeahyeahyeah.

I looked a bit into this over the past months. Version 5 is on the way with really, really tasty looking lighting: https://www.youtube.com/watch?v=tSfakMeW0lw#t=27

With the pro license, it is possible to link with native C++ code. We could use that. Scrap all graphics code from the game, have it export functions to list and join servers, map menu items and input actions, export the current game state. Sounds doable, just really a lot of work.
However, for ongoing development, that setup is a complete non-starter. I work with mixed C++/C# code all of the time now, and it's only bearable because it's all integrated into one big Visual Studio Pro solution. Load it up, press F5 and off you go, breakpoints set anywhere you like, debugging across boundaries with ease. The only catch is that edit-and-continue in C# only works if you disable C++ debugging. We would not have such a luxury. Correct me if I'm wrong, but there is no free debugger that allows such a thing, and no free IDE that comfortably holds C++ and C# code together. It's going to be painful. I know, I have been there. The way I see it, this is would be a one-shot solution to allow a new, shiny client to connect to old servers.

More random thoughts:
While the editor is Windows/OSX only, limiting content creation to those platforms, it is quite possible to do coding work on Linux. You just need a (debug, ideally) build of the game, then you can compile and link your script code using SharpDevelop, for example.

A huge plus for Unity is that it now supports pretty much all relevant target platforms. Windows/Mac/Linux/Phones/Tablets/Consoles/Smart TVs, it's all there. The only white spot we'd hear complaints about would be the BSDs.

Headless mode exists, dedicated servers are possible.

I also very much like their game object model. It is component based. Instead of having each object in the world be one object in the code, all derived from a basic GameObject class, the unity game object is a container for behaviors, and the different behaviors can look up and influence each other. Standard supplied behaviors would be position/orientation, collision detection, different types of visuals, particle emitters and the like. We'd add a behavior responsible for moving a cycle around, another one that kills it if it collides with anything, another one dropping wall segments, except in Racing game modes. AI cycles would get an AI behavior. Player controlled cycles a player input behavior. Want to write a game mode where cycles run out of fuel after a while? Give each a fuel tank behavior that sets the max acceleration to 0 when that happens. Want to write snake with tails getting longer as you gobble up fruit? Add a grow behavior that modifies the tail length. One needs to avoid controlling behaviors with global variables and instead use local properties, that's practically all it takes to allow such flexibility.

What I do not like: Networking, because it is not there yet.
Physics. It's not possible to have different sets of objects running at different time accelerations, something you would need to have gameplay relevant physics in a networked game. Updates can be out of sync with screen refresh and cause judder.
No good multicore support. All calls to Unity must come from the main thread. It's not totally horrible to work with (essentially, GUI frameworks work the same way) and your own code can do whatever it wants, but still, a modern game engine should do better.
And of course I dislike the loss of control. Fine tuning the input-update-render loop was one of my favorite things, that is not possible in Unity.

Word
Reverse Adjust Outside Corner Grinder
Posts: 4171
Joined: Wed Jan 07, 2009 6:13 pm

Re: New engine please

Post by Word »

Great, I'm glad there's some movement here! I'm as busy as ever with university, even though I don't have any lectures at the moment...
Fine tuning the input-update-render loop was one of my favorite things, that is not possible in Unity.
I haven't checked their feedback site recently but that sounds like something which would belong there. I don't know if making this possible is on their roadmap, but one can give it a try. The forum for that is here, I haven't found the related suggestion yet.

edit: here?

edit2: ah, this is the more popular one. Ignore the previous edit. It's also filed under "Planned" and only one of two topics in the Graphics department, so I'm optimistic - provided this is the function you mean.
Last edited by Word on Thu Sep 04, 2014 11:45 pm, edited 4 times in total.

User avatar
delinquent
Match Winner
Posts: 671
Joined: Sat Jul 07, 2012 3:07 am

Re: New engine please

Post by delinquent »

Everytime I hear the word "Unity" I die a little inside.
That said, there's a C# compiler for Visual Studio, so I imagine with some fiddle it might be possible to build a sluggish client based on our existing stuff. That would just be proof of concept though, I think a better engine would be Mantle, if it's adaptable enough. Then we can start including dynamic backgrounds and realistic material tunnels, maybe even make some single-player campaigns, like the original film's run from the grid to... wherever the three of them end up.

User avatar
Z-Man
God & Project Admin
Posts: 11331
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Re: New engine please

Post by Z-Man »

Mantle is a graphics API like OpenGL, not an engine. It's Windows and ATI only and will probably die a slow and quiet death when DX12 and OGL Next are ready. So: Nowai.
And yes, there is C# and C++ in Visual studio, the problem is that the free express editions do not combine them. You get one or the other, not both in the same project.

Word: That comment was more meant as "I like to do those things because they're fun and interesting". I'm sure the loop in Unity works just fine. I haven't seen any input lag problems in Unity games so far.

User avatar
Z-Man
God & Project Admin
Posts: 11331
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Re: New engine please

Post by Z-Man »

Z-Man wrote:What I do not like: Networking, because it is not there yet.
Good news, that is not true. There is pretty good networking available that definitely is good enough for the server -> client syncing that has most of the features we have and some we don't (transparent encryption, NAT piercing, only sending updates to clients that need them). Getting commands from the clients to the server is a bit awkward, though, and updates come at a fixed tick rate with apparently no good way to send updates right after a cycle turned.

Infuriatingly, however, there is no good way to support user created content, such as maps. None of their asset files can be just arbitrarily loaded from disk. The tech is there, it's just not accessible for business reasons. If it were available, someone could make a fully customizable "game" that essentially unlocks all Unity Pro features to everyone. If the users creating the content have Unity Pro, then one can use Asset Bundles. But that is obviously not an option. So what one needs to do to is develop custom formats for all the assets a user should be able to modify. And since you don't even have access to the persistence tech they use to save user script data (which can be a awkward to work with), your scrips need to support at least two persistence techs. And Unity scripts and standard .NET serialization don't mix well. Fun.

Word
Reverse Adjust Outside Corner Grinder
Posts: 4171
Joined: Wed Jan 07, 2009 6:13 pm

Re: New engine please

Post by Word »

Z-Man wrote:Infuriatingly, however, there is no good way to support user created content, such as maps. None of their asset files can be just arbitrarily loaded from disk. The tech is there, it's just not accessible for business reasons. If it were available, someone could make a fully customizable "game" that essentially unlocks all Unity Pro features to everyone. If the users creating the content have Unity Pro, then one can use Asset Bundles. But that is obviously not an option. So what one needs to do to is develop custom formats for all the assets a user should be able to modify. And since you don't even have access to the persistence tech they use to save user script data (which can be a awkward to work with), your scrips need to support at least two persistence techs. And Unity scripts and standard .NET serialization don't mix well. Fun.
When I tried to make this Hall of Fame thing a while ago, I encountered the first problem (some megolomaniac pru leader wanted a 3d head representing each clan member and all that...). Maybe one can create some kind of template for the free version, or an AssetBundle generator...
I don't know if this helps, but here are the files (the folder is a little chaotic (the networking tutorial is probably outdated) but I guess you already know enough about Unity to find what you want - if you can need any of it, that is). If I remember correctly the thing we used downloaded the head models as asset models from our clan server into the game.

User avatar
Z-Man
God & Project Admin
Posts: 11331
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Re: New engine please

Post by Z-Man »

Yeah, I thought about maybe handling asset bundle generation on a webservice... you'd think they stuff these kinds of technical loopholes in their License Agreement. And you'd be right. A Pro license is for a person, you can't make its content creation features available on the web. Reverse engineering the asset bundle file format is also generally forbidden.
And it's even worse (from our POV): You can't combine content developed with Unity Pro with content developed with Unity Free. Stands to reason: A large company should not be allowed to work with just one pro license of the guy doing the packaging in the end. There are loopholes: Apparently it is OK if it's the users doing the combining; KSP uses Unity and allows users to add modded rocket parts generated from Unity with an export script. And people doing purely coding would do so without direct Unity interaction at all, working just with a debug build of a game, so integrating their stuff should be unproblematic. Textures and models can be created outside of Unity and then integrated by the pro license holder.
But all that puts up barriers to contributing. We would be better off sticking to the free version. If we'd ever fall out of the qualification (100k$/y revenue) we can pay for the Pro license of relevant contributors :)

Small addendum: It IS possible to load arbitrary textures and sounds from disk and, of course, to download and load arbitrary data as long as you parse it yourself. Additionally, arbitrary unity assets (including levels) can be loaded directly as files from disk... but only from precise locations that are known at build time. So essentially what we do with moviepacks currently, not very useful.

User avatar
Misery
Round Winner
Posts: 285
Joined: Thu Dec 30, 2004 12:37 pm
Location: Des Moines, IA
Contact:

Re: New engine please

Post by Misery »

What about the Unreal Engine? It is now free. Granted, I don't know shit about programming and how easy/difficult it would be to port Armagetron to it. But the price is right!

https://www.unrealengine.com/blog/ue4-is-free
"Music can name the unnameable and communicate the unknowable."
~Leonard Bernstein

User avatar
Jip
Round Winner
Posts: 397
Joined: Sat Sep 26, 2009 5:32 pm

Re: New engine please

Post by Jip »

Unity also has now a personal free edition.
Since my daily job is programming c# in Unity projects, I would definitely help porting arma.
But I don't know anything about GPL licensing and Unity...

Post Reply