• Advertisement
Sign in to follow this  

Unity Choosing your game's technology

This topic is 2319 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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
Advertisement
[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"];

Cheers!
[/font]

Share this post


Link to post
Share on other sites
[font="arial, verdana, tahoma, sans-serif"]You could use SDL or SFML because they provide a cross-platform windowing system that you can integrate with OpenGL.[/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

[--snip--]
[font="Arial"]1) I should specify that I am interested in building a fast-paced 3D game...:P
[/font][font="Arial"][/font]



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 you).

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.



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:
  • Anything directX or related to directX
  • Anything crytek
  • UDK, unreal engine 3
  • XNA
  • Unity
    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 really 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

If you want to make anything cross platform then these are completely out-of-the picture
  • XNA
  • Unity


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

If you want to make anything cross platform then these are completely out-of-the picture:
  • Anything directX or related to directX
  • Anything crytek
  • UDK, unreal engine 3
  • XNA
  • Unity
    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 really 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.


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='keelx' timestamp='1318804385' post='4873243']
If you want to make anything cross platform then these are completely out-of-the picture
  • XNA
  • Unity


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 still 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='keelx' timestamp='1318804385' post='4873243']
If you want to make anything cross platform then these are completely out-of-the picture:
  • Anything directX or related to directX
  • Anything crytek
  • UDK, unreal engine 3
  • XNA
  • Unity
    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 really 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.


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

You say windows, Xbox 360, and windows phone. Running on only Microsoft devices is FAR from cross-platform. And as for Unity, it still 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.


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?"

[color="#CCCCCC"]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]
[color="#CCCCCC"]
[color="#CCCCCC"]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.

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 still 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.


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?"

[color="#CCCCCC"]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]

[color="#CCCCCC"]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.
[/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 completely 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 is in fact linux, uses a completely different language, basically rewrote the entire system, and then chose not 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[/font].' 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

[color=#CCCCCC][size=2]1. Try XNU (X is Not Unix), which is a hybrid of Mach and FreeBSD kernels.

[color="#cccccc"]

[color="#cccccc"]I'm not sure what you're getting at here.
[color="#cccccc"]


2. No, I'm saying it isn't completely 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?

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='keelx' timestamp='1318812851' post='4873283']
[color="#CCCCCC"]1. Try XNU (X is Not Unix), which is a hybrid of Mach and FreeBSD kernels.


[color="#cccccc"]I'm not sure what you're getting at here.


2. No, I'm saying it isn't completely 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?

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.


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.


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 really 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
Sign in to follow this  

  • Advertisement
  • Advertisement
  • Popular Tags

  • Advertisement
  • Popular Now

  • Similar Content

    • By Yosef BenSadon
      Hi , I was considering this start up http://adshir.com/, for investment and i would like a little bit of feedback on what the developers community think about the technology.
      So far what they have is a demo that runs in real time on a Tablet at over 60FPS, it runs locally on the  integrated GPU of the i7 . They have a 20 000 triangles  dinosaur that looks impressive,  better than anything i saw on a mobile device, with reflections and shadows looking very close to what they would look in the real world. They achieved this thanks to a  new algorithm of a rendering technique called Path tracing/Ray tracing, that  is very demanding and so far it is done mostly for static images.
      From what i checked around there is no real option for real time ray tracing (60 FPS on consumer devices). There was imagination technologies that were supposed to release a chip that supports real time ray tracing, but i did not found they had a product in the market or even if the technology is finished as their last demo  i found was with a PC.  The other one is OTOY with their brigade engine that is still not released and if i understand well is more a cloud solution than in hardware solution .
      Would there  be a sizable  interest in the developers community in having such a product as a plug-in for existing game engines?  How important  is Ray tracing to the  future of high end real time graphics?
    • By bryandalo
      Good day,

      I just wanted to share our casual game that is available for android.

      Description: Fight your way from the ravenous plant monster for survival through flips. The rules are simple, drag and release your phone screen. Improve your skills and show it to your friends with the games quirky ranks. Select an array of characters using the orb you acquire throughout the game.

      Download: https://play.google.com/store/apps/details?id=com.HellmodeGames.FlipEscape&hl=en
       
      Trailer: 
       
    • By Manuel Berger
      Hello fellow devs!
      Once again I started working on an 2D adventure game and right now I'm doing the character-movement/animation. I'm not a big math guy and I was happy about my solution, but soon I realized that it's flawed.
      My player has 5 walking-animations, mirrored for the left side: up, upright, right, downright, down. With the atan2 function I get the angle between player and destination. To get an index from 0 to 4, I divide PI by 5 and see how many times it goes into the player-destination angle.

      In Pseudo-Code:
      angle = atan2(destination.x - player.x, destination.y - player.y) //swapped y and x to get mirrored angle around the y axis
      index = (int) (angle / (PI / 5));
      PlayAnimation(index); //0 = up, 1 = up_right, 2 = right, 3 = down_right, 4 = down

      Besides the fact that when angle is equal to PI it produces an index of 5, this works like a charm. Or at least I thought so at first. When I tested it, I realized that the up and down animation is playing more often than the others, which is pretty logical, since they have double the angle.

      What I'm trying to achieve is something like this, but with equal angles, so that up and down has the same range as all other directions.

      I can't get my head around it. Any suggestions? Is the whole approach doomed?

      Thank you in advance for any input!
       
    • By khawk
      Watch the latest from Unity.
       
    • By GytisDev
      Hello,
      without going into any details I am looking for any articles or blogs or advice about city building and RTS games in general. I tried to search for these on my own, but would like to see your input also. I want to make a very simple version of a game like Banished or Kingdoms and Castles,  where I would be able to place like two types of buildings, make farms and cut trees for resources while controlling a single worker. I have some problem understanding how these games works in the back-end: how various data can be stored about the map and objects, how grids works, implementing work system (like a little cube (human) walks to a tree and cuts it) and so on. I am also pretty confident in my programming capabilities for such a game. Sorry if I make any mistakes, English is not my native language.
      Thank you in advance.
  • Advertisement