Sign in to follow this  
goulz

Unity Choosing your game's technology

Recommended Posts

Howdy!

New to the forum. There is lots of info on here, still trying to fish through it - There are so many developers on here it's great to see such a grand community, cant wait to dig in and participate.

I used to code all from scratch years ago in C++ & opengl, and now I want to make a game that is somewhat cross platform...Any suggestions on technologies to use or some quick pros and cons on the techs you use yourselves? The choice is large and ever changing;

Any heads up would help, or if you just want to shout back.. haha

Thanks!

goulz

Share this post


Link to post
Share on other sites
[font="Arial"]I should specify that I am interested in building a fast-paced 3D game...:P
Looking at XNA, LWJGL, Unreal Engine 3, older id techs, etc...
L
ooking for some ideas and comments[/font][font="Arial"];

[size="2"]Cheers![/size]
[/font]

Share this post


Link to post
Share on other sites
sfml trumps sdl , reasons : sfml is constantly being updated/improved , has full documentation + examples, object oriented, you can suggest a certain functionality you want and if the devs like it they will add it in. + alot more cant think of them right now.

Share this post


Link to post
Share on other sites
[quote name='goulz' timestamp='1318645981' post='4872737']
[--snip--]
[font="Arial"]1) I should specify that I am interested in building a fast-paced 3D game...:P
[/font][font="Arial"][size="2"][/size][/font][/quote]


1) "Fast-paced" isn't really a helpful criteria when deciding whether to roll your own engine or use an existing one - unless, of course, you meant 'fast paced' as in 'fast paced development' (but I assume you did not?). My recommendation falls on UDK or CryEngine 3 as the current top-of-the-line -- all that may change depending on what more you have to say about what your actual goal is (that it's 3D certainly falls in line with using an existing engine and in most cases, without fail, that is what I would recommend -- but there are certain off-the-road exceptions that may or may not apply to [i]you[/i]).

Share this post


Link to post
Share on other sites
[quote name='JohnnyR' timestamp='1318714452' post='4872962']
sfml trumps sdl , reasons : sfml is constantly being updated/improved , has full documentation + examples, object oriented, you can suggest a certain functionality you want and if the devs like it they will add it in. + alot more cant think of them right now.
[/quote]


Umm.. I'm pretty sure SDL is also being updated and improved as we speak they are implementing SDL 1.3 which will come with hardware rendering. SFML does come with Object Oriented design, but it is also kindof annoying because I would much prefer to use my OWN design and work with that instead of use someone elses. But there is a CSFML I know, and SDL has full documentation and there's tonnes of tutorials and books on SDL too, so I dont know why you're going on about that.

The only thing that SFML does do that SDL doesn't at the moment is that SFML uses OpenGL out of the box with it's class design and such, but SDL has the ability to work with OpenGL just as well as SFML. Oh and btw the only platforms that SFML support are Windows, Linux and Mac OS (Mac very so slightly). But SDL supports: Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. The code contains support for AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, and OS/2, but these are not officially supported.

Share this post


Link to post
Share on other sites
I don't think the pros/cons of tech I use myself, is very helpful.

What you want, is tech which suits your *team*. Your team must have at least someone on it, who is sufficiently familiar with the tech that they are confident it will work (ideally done similar with the same or similar tech before).

Anyone can preach about their favourite language / API / pattern / methodology / method-of-religious-worship. But what really matters is what works for you, and what is likely to work for you.

You probably don't have a lot of time to evaluate a lot of options, and the cost of making a bad decision (which your team can't work with) is very high, so you want to be conservative about it.

If your team has a programmer who reckons that using the-latest-newfangled-stuff-which-has-not-been-released-a-week-yet is a good idea, ignore them. Go with what you know will work, even if it isn't (in someone's opinion) "The best". Because making a BAD decision is what you want to avoid.

Share this post


Link to post
Share on other sites
If you want to make anything cross platform then these are completely out-of-the picture:
[list][*]Anything directX or related to directX[*]Anything crytek[*]UDK, unreal engine 3[*]XNA[*]Unity[/list]
I recommend, that if you are building a game from scratch, to go with SDL and OpenGL. It is cross-platform to areas beyond Windows, Mac, or Linux. Or if you [i]really [/i]want some game engine, I recommend either OGRE or Crystal Space. Also, ID tech engines are REALLY good. Though I'm not sure about the difficulties and/or restrictions upon using those engines.

The thing about those Commercial game engines, is that they're usually, if not always, windows only, using things like the win32 API, directX, etc. My advice is to stay away from those.

Share this post


Link to post
Share on other sites
[quote name='keelx' timestamp='1318804385' post='4873243']
If you want to make anything cross platform then these are completely out-of-the picture
[list][*]XNA[*]Unity[/list][/quote]

That would depend on your definition of "cross-platform." XNA runs on Windows, XBox 360 and Windows Phone. Unity runs on Windows, Mac, web browsers, and, if you're willing to buy the license for them, iOS, Android, Wii, PS3, and Xbox 360.

Share this post


Link to post
Share on other sites
[quote name='keelx' timestamp='1318804385' post='4873243']
If you want to make anything cross platform then these are completely out-of-the picture:
[list][*]Anything directX or related to directX[*]Anything crytek[*]UDK, unreal engine 3[*]XNA[*]Unity[/list]
I recommend, that if you are building a game from scratch, to go with SDL and OpenGL. It is cross-platform to areas beyond Windows, Mac, or Linux. Or if you [i]really [/i]want some game engine, I recommend either OGRE or Crystal Space. Also, ID tech engines are REALLY good. Though I'm not sure about the difficulties and/or restrictions upon using those engines.

The thing about those Commercial game engines, is that they're usually, if not always, windows only, using things like the win32 API, directX, etc. My advice is to stay away from those.
[/quote]

This also depends on how cross-platform you need to be. The reality is that the API-specific portions of the rendering code (specifically referencing your mention of OpenGL here) are going to be a quite small portion of the overall codebase, and you still need to deal with file I/O, memory management, sound, input, networking, the main event loop, and potentially many other components where a platform dependency may exist. Just focussing on OpenGL is not enough to guarantee cross-platform compatibility I'm afraid.

Share this post


Link to post
Share on other sites
[quote name='Oberon_Command' timestamp='1318806029' post='4873252']
[quote name='keelx' timestamp='1318804385' post='4873243']
If you want to make anything cross platform then these are completely out-of-the picture
[list][*]XNA[*]Unity[/list][/quote]

That would depend on your definition of "cross-platform." XNA runs on Windows, XBox 360 and Windows Phone. Unity runs on Windows, Mac, web browsers, and, if you're willing to buy the license for them, iOS, Android, Wii, PS3, and Xbox 360.
[/quote]

You say windows, Xbox 360, and windows phone. Running on only Microsoft devices is FAR from cross-platform. And as for Unity, it [i]still [/i]doesn't support any form of linux or unix other than the linux kernel on the Wii and the one on android. Though with that, I can see why, there's hundreds of distros and configurations.

[quote name='mhagain' timestamp='1318806584' post='4873255']
[quote name='keelx' timestamp='1318804385' post='4873243']
If you want to make anything cross platform then these are completely out-of-the picture:
[list][*]Anything directX or related to directX[*]Anything crytek[*]UDK, unreal engine 3[*]XNA[*]Unity[/list]
I recommend, that if you are building a game from scratch, to go with SDL and OpenGL. It is cross-platform to areas beyond Windows, Mac, or Linux. Or if you [i]really [/i]want some game engine, I recommend either OGRE or Crystal Space. Also, ID tech engines are REALLY good. Though I'm not sure about the difficulties and/or restrictions upon using those engines.

The thing about those Commercial game engines, is that they're usually, if not always, windows only, using things like the win32 API, directX, etc. My advice is to stay away from those.
[/quote]

This also depends on how cross-platform you need to be. The reality is that the API-specific portions of the rendering code (specifically referencing your mention of OpenGL here) are going to be a quite small portion of the overall codebase, and you still need to deal with file I/O, memory management, sound, input, networking, the main event loop, and potentially many other components where a platform dependency may exist. Just focussing on OpenGL is not enough to guarantee cross-platform compatibility I'm afraid.
[/quote]

Hence my mention of SDL. It handles input, networking, an event loop, and sound. And file I/O and memory management is supported in just standard C++ alone. I personally don't see any reason why you'd ever want to use a library that wasn't cross platform, there's no need.

Share this post


Link to post
Share on other sites
[quote name='keelx' timestamp='1318810456' post='4873275']
You say windows, Xbox 360, and windows phone. Running on only Microsoft devices is FAR from cross-platform. And as for Unity, it [i]still [/i]doesn't support any form of linux or unix other than the linux kernel on the Wii and the one on android. Though with that, I can see why, there's hundreds of distros and configurations.
[/quote]

1. OS X is UNIX-based.
2. So something has to run on Linux to be cross-platform, in other words? I think that's a bit narrow-minded, personally. If I wrote a game engine that ran on all the platforms Unity does, plus had stable ports to the NES, SNES, N64, GameCube, DreamCast, Saturn, etc... but not to any Linux distribution, would you label it as not "cross-platform?"

[quote][color="#CCCCCC"][size="2"]I personally don't see any reason why you'd ever want to use a library that wasn't cross platform, there's no need.[/quote][/size][/color]
[color="#CCCCCC"] [/color]
[color="#CCCCCC"][size="2"]Sometimes there IS a need. Sometimes you'd want to do things that are platform-dependent; not everything you'd want to do is supported by a "cross-platform" API and furthermore, even if it is, for performance reasons it can be worth it to go to platform-specific libraries. [/size][/color]

Share this post


Link to post
Share on other sites
[quote name='Oberon_Command' timestamp='1318811221' post='4873279']
[quote name='keelx' timestamp='1318810456' post='4873275']
You say windows, Xbox 360, and windows phone. Running on only Microsoft devices is FAR from cross-platform. And as for Unity, it [i]still [/i]doesn't support any form of linux or unix other than the linux kernel on the Wii and the one on android. Though with that, I can see why, there's hundreds of distros and configurations.
[/quote]

1. OS X is UNIX-based.
2. So something has to run on Linux to be cross-platform, in other words? I think that's a bit narrow-minded, personally. If I wrote a game engine that ran on all the platforms Unity does, plus had stable ports to the NES, SNES, N64, GameCube, DreamCast, Saturn, etc... but not to any Linux distribution, would you label it as not "cross-platform?"

[quote][color="#CCCCCC"][size="2"]I personally don't see any reason why you'd ever want to use a library that wasn't cross platform, there's no need.[/quote][/size][/color]

[color="#CCCCCC"][size="2"]Sometimes there IS a need. Sometimes you'd want to do things that are platform-dependent; not everything you'd want to do is supported by a "cross-platform" API and furthermore, even if it is, for performance reasons it can be worth it to go to platform-specific libraries. [/size][/color]
[/quote]

1. Try XNU (X is Not Unix), which is a hybrid of Mach and FreeBSD kernels.
2. No, I'm saying it isn't [i]completely [/i]cross-platform. It's missing out on quite a large market. But what bothers me is that they took the time and resources to port it to android which [i]is [/i]in fact linux, uses a completely different language, basically rewrote the entire system, and then chose [i]not[/i] port it to an actual linux-running PC, because 'w[color=#111111][font=Helvetica, Arial, sans-serif][size=2]e don't have the resources to cure the miniscule of the Linux-buying games community[/size][/font][/color].' And while that may be true, I don't think it would be as hard and resource-consuming as the developers are estimating.

And maybe it's just been in my experience, but I've never had that need to use platform-specific libraries for anything, speed included. Besides, SDL isn't so much of a functional library, it is more of a layer on top of those native interfaces you speak of.

Share this post


Link to post
Share on other sites
[quote name='keelx' timestamp='1318812851' post='4873283']
[color=#CCCCCC][size=2]1. Try XNU (X is Not Unix), which is a hybrid of Mach and FreeBSD kernels.[/quote][/size][/color]
[size="2"][color="#cccccc"]
[/color][/size]
[size="2"][color="#cccccc"]I'm not sure what you're getting at here. [/color][/size]
[size="2"][color="#cccccc"]
[/color][/size]
[quote]
2. No, I'm saying it isn't [i]completely [/i]cross-platform.[/quote]

I don't think any program is ever "completely" cross-platform, though I'm not sure what you mean by this. Furthermore, if that's the crux of your argument, then why aren't you saying anything about how there isn't a Nintendo DS port? Or a PlayStation Portable port?

[quote]And maybe it's just been in my experience, but I've never had that need to use platform-specific libraries for anything, speed included. Besides, SDL isn't so much of a functional library, it is more of a layer on top of those native interfaces you speak of.[/quote]

Yes, exactly. And that layer sometimes hides functionality that wouldn't be supported on other platforms for the sake of portability. Sometimes people need that functionality. My overarching point here is that just because you haven't used it, doesn't mean that nobody else does.

Share this post


Link to post
Share on other sites
[quote name='Oberon_Command' timestamp='1318828054' post='4873323']
[quote name='keelx' timestamp='1318812851' post='4873283']
[color="#CCCCCC"][size="2"]1. Try XNU (X is Not Unix), which is a hybrid of Mach and FreeBSD kernels.[/quote][/size][/color]
[size="2"] [/size]
[size="2"][color="#cccccc"]I'm not sure what you're getting at here. [/color][/size]
[size="2"] [/size]
[quote]
2. No, I'm saying it isn't [i]completely [/i]cross-platform.[/quote]

I don't think any program is ever "completely" cross-platform, though I'm not sure what you mean by this. Furthermore, if that's the crux of your argument, then why aren't you saying anything about how there isn't a Nintendo DS port? Or a PlayStation Portable port?

[quote]And maybe it's just been in my experience, but I've never had that need to use platform-specific libraries for anything, speed included. Besides, SDL isn't so much of a functional library, it is more of a layer on top of those native interfaces you speak of.[/quote]

Yes, exactly. And that layer sometimes hides functionality that wouldn't be supported on other platforms for the sake of portability. Sometimes people need that functionality. My overarching point here is that just because you haven't used it, doesn't mean that nobody else does.


[/quote]

The PSP and the Nintendo DS use VERY specific hardware to store the game data. The PSP uses those miniature CD-like things, and the DS uses cartridges. That can't be said about the consoles, because they just use standard CD's, and the android and iOS devices just use software. But like I said, my problem isn't necessarily that they aren't completely cross platform, but they don't really have a valid excuse to not port it to a linux PC other than the many distros. The porting to linux would be about half as hard as completely rewriting the system using a different language and a completely different set of API's, as they did with the android and iOS devices. To develop something like Unity for linux, all they'd need is C++, OpenGL, and X11. And the code wouldn't need much editing unless they heavily rely on some OS-specific API's, but if they were willing to port it to as many platforms as they have, I imagine they would be able to pull it off with linux in a cinch.

As for my second argument, every OS has their own API's, and as I said above: If they are willing to port it to as many platforms as they have, why not Linux?

Share this post


Link to post
Share on other sites
Way I see it is that there are two main choices here. You can pick a single platform (and it can be any platform) and code specifically to the strengths of that platform, using every trick in the book to get your program to be the best it can on a single platform. That's choice 1. Choice 2 is to go for some reasonable degree of cross-platform support and possibly incur some compromise as a result (of course you can also pull every trick in the book to make your program the best you can make it in a cross-platform environment too, but there will always be compromise where you can't do feature X cos it's not so well supported on platform B).

Both are viable choices and both have their place. It's all a matter of picking your target audience, defining your objectives, and going for it.

Too many people say "cross platform" when they really mean "Linux", IMO. Let's take OpenGL again. Cross platform? No way. Mobile devices use OpenGL ES - quite different. The PS3 can use a variant of OpenGL ES too but you'd be mad to use it. OS X doesn't get OpenGL support at the same pace as the main spec is updated, tending to lag several versions behind. Even on PC, Intel and AMD/ATI graphics hardware are known trouble spots. Not so cross platform now.

So targetting your end result at what seems reasonable to you is the best way to go.

[quote name='keelx' timestamp='1318810456' post='4873275']
Hence my mention of SDL. It handles input, networking, an event loop, and sound. And file I/O and memory management is supported in just standard C++ alone. I personally don't see any reason why you'd ever want to use a library that wasn't cross platform, there's no need.
[/quote]

A sorry reality is that Windows has what are probably by far the best memory management APIs on the planet. Once you've been exposed to what HeapAlloc and VirtualAlloc can [i]really[/i] do, the standard library routines come across as shockingly primitive and inflexible by comparison. VirtualAlloc in particular is great for loading game levels, especially as you can just toss away the memory between level transitions and not have to worry about tracking individual allocations, leaks, or any of that other painful stuff.

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  

  • Announcements

  • Forum Statistics

    • Total Topics
      628377
    • Total Posts
      2982324
  • Similar Content

    • By sveta_itseez3D
      itSeez3D, a leading developer of mobile 3d scanning software, announced today a new SDK for its automatic 3D avatar generation technology, Avatar SDK for Unity. The Avatar SDK for Unity is a robust plug-n-play toolset which enables developers and creatives to integrate realistic user-generated 3D avatars into their Unity-based applications. SDK users can allow players to create their own avatars in the application or integrate the SDK into their own production processes for character design and animation.
      “Virtual avatars have recently become increasingly popular, especially in sports games and social VR apps. With the advance of VR and AR, the demand to get humans into the digital world is only increasing”, said Victor Erukhimov, itSeez3D CEO. “Our new Avatar SDK for Unity makes it super-easy to bring the avatar technology into any Unity-based game or VR/AR experience. With the Avatar SDK for Unity now every developer can bring face scanning technology into their games and allow players to create their own personalized in-game avatars, making the gameplay much more exciting and immersive.”
      Key features of the Avatar SDK for Unity:
      Automatic generation of a color 3D face model from a single selfie photo in 5-10 seconds (!). Works best with selfies, but can be used with any portrait photo.
      Shape and texture of the head model are unique for each person, synthesized with a deep learning algorithm crafted by computer vision experts
      Head models support runtime blendshape facial animations (45 different expressions)
      Generated 3D heads include eyes, mouth, and teeth
      Algorithms synthesize 3D meshes in mid-poly resolution, ~12k vertices, and ~24k triangles
      Six predefined hairstyles with hair-recoloring feature (many more available on request)
      Avatar generation API can be used in design-time and in run-time, which means you can allow users to create their own avatars in your game
      Cloud version is cross-platform, and offline version currently works on PCs with 64-bit Windows (support for more platforms is coming soon)
      Well-documented samples showcasing the functionality.
       
      Availability
      The Avatar SDK for Unity is offered in two modes - “Cloud” and “Offline”. The “Cloud” version is available at http://avatarsdk.com/ and the “Offline” version is available by request at support@itseez3d.com.
      ###
      About itSeez3D
      At itSeez3D, we are working on the computer vision technology that turns mobile devices into powerful 3D scanners. itSeez3D has developed the world's first mobile 3D scanning application that allows to create high-resolution photorealistic 3D models of people's' faces, bodies and objects. The application is available for iOS and Windows OS mobile devices powered with 3D cameras. In 2016 the company introduced Avatar SDK that creates a realistic 3D model of a face from a single selfie photo. To learn more about itSeez3D scanning software and 3D avatar creation technology, please visit www.itseez3d.com and www.avatarsdk.com.

      View full story
  • Popular Now