Sign in to follow this  

Unity Unity or C++?

This topic is 1097 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

Hello!

About 7 months ago, I started to learn C++. After a month ago, I considered myself fairly well-versed in basic C++(i.e. classes, instantiating objects, and some knowledge of splitting code into source and header files ). My goal was to make a game. Then, I kind of went off on a tangent, and attempted to learn some java, and make an android app. However, I found I had a lot of trouble with running Eclipse on my PC, so, long story short, I startedusing Unity. Currently, I'm working on a small, pixelated, 2D platformer. I've been bashed for using Unity 2D, people say that it "isn't real coding' and that it sucks. Now, I'm wondering if it would be more beneficial to make a game in C++ using SFML or something along those lines. Is using Unity hurting my programming skill?

 

More importantly, should I be focusing on making games with "pure" code, in other words building my own engine/physics? I'm torn here. I'm halfway through the game in Unity, but I'm not sure if it's what I want to be doing.

 

Cheers,

boxnuggets

Edited by boxofnuggets

Share this post


Link to post
Share on other sites

 

 

you will be required to code "for real"

 This! Unity provides a lot of legwork that would be required for any game. To do what you want your game to do you code it i.e, keep MSDN open. Remember all the programming principles to keep your code lean because a lot of it gets called once per frame.

 

Another way to look at it is, when will you feel like you're coding "for real"? Perhaps when you reinvent direct x? Since the beginning of computers software has always built on other software or frameworks or languages.

Share this post


Link to post
Share on other sites

I guess my only advice would be to use what feels right and put people's presumptuous comments aside. If you feel like you are learning and are inspired to build your game with whatever technology you pick up you are doing good.

 

 

 


More importantly, should I be focusing on making games with "pure" code, in other words building my own engine/physics? I'm torn here. I'm halfway through the game in Unity, but I'm not sure if it's what I want to be doing.

 

So there are tons of aspects to game development, if you are interested in coding physics or graphics do that. If you are interested in coding the logic or AI for your game, do that instead. Pure code is an interesting bit of vocabulary, to me if you are writing C# or Javascript or whatever Unity uses for scripting you are building pure code.

 

There is no right or wrong answer when it comes to what tool you should learn. If you're halfway through a game in unity finish it! Independent of platform and tools, It is awesome to be able to finish a game and say it's done.

Edited by DishSoap

Share this post


Link to post
Share on other sites

I agree with Nypyren's reply.

 

Also wanted to add that award winning games and studios are also using Unity for complete games.

Think Monument Valley and Hearthstone.

 

Time is a resource. The quicker you can prototype your game ideas, the more likely you are to spend the time to polish them.

C++ is great for truly learning how programming works at a deeper level, but you should decide what is more important - your programming ability or the product / game.

Share this post


Link to post
Share on other sites

Is using Unity hurting my programming skill?

I'm halfway through the game in Unity, but I'm not sure if it's what I want to be doing.

 

it seems you have two goals:

 

1. making the game

2. improving coding skills

 

for making the game, use whatever will get the job done fastest - probably unity in your case. be sure to add in time required to learn any new tools / libs / APIs.

 

as for improving coding skills:

technically speaking, any time you use a 3rd party library/engine to do something that you yourself have never coded on your own, you rob yourself of a learning opportunity, so in that respect, you may not learn as much using unity vs lower level tools (c++ and some 2d graphics lib). however, this can be taken too far: IE you'd learn even MORE if you wrote your ow graphics lib, etc. Eventually, you're spending almost  all your time learning, and it will take almost forever to finish a product.

 

games no longer need be "hand rolled", like soldering together transistors etc. suitable middleware components now exist at a variety of capabilities and price points, allowing one to use libraries and engines like IC chips to implement entire modules of a game's codebase. so the requirement (and thus the ability) to "hand roll" an entire game has pretty much gone away. so these days, a gamedev needs the coding skills required for integration of various middleware systems, such as graphics, physics, audio, plus the skills required for custom coding. its in that last part - custom coding - where experience in lower level stuff can be of use.

 

As Nypyren suggested, you should probably pursue two projects, one being the game (probably in unity or whatever gets it done fastest - including learning time for tools/libs/APIs), and the second being whatever middleware strikes your fancy: 2d line drawing and blit code, basic 2d physics, audio coding, etc.

Edited by Norman Barrows

Share this post


Link to post
Share on other sites


Choose one of the above options.  I, personally, would recommend the first one but the second is very popular.

To be fair, option 2 includes looking at kitties on the internet. That's hard to turn down!

Share this post


Link to post
Share on other sites

Thank all you guys so much! I really appreciate the support. I'm definitely going to finish the game in Unity, and attempt to make my own engine. I've decided I'm going to try SFML. Does anyone know any good resources for reliable video tutorials? I'm more of a visual learner.

Edited by boxofnuggets

Share this post


Link to post
Share on other sites

Option 1

======

 

(1) choose a tool for making a simple game

(2) make the game

(3) finish the game

(4) oh, wait, I learned a whole lot of stuff required to make a game and my friends stop talking when they play it

(5) rinse and repeat, solving increasingly more complex problems in increasing more complex games that you finish

(6) be an expert game developer (which includes programming, designing, maintaining, promoting, etc)

 

Option 2

======

(1) play with some tool

(b) switch to a different tool

(d) monkey around with tools

(5) dabble at starting to make several games

(6) browse the internet (heh heh, dem kittehz, oh look if I were a haircut I'd be a mullet!! lulz)

(4) go make coffee and message your friends about how lame they are for using some arbitrary tool for finishing their games

(6) play the games your friends have finished

 

Choose one of the above options.  I, personally, would recommend the first one but the second is very popular.

 

Nevermind, I totally did not read the post before I commented.

 

Go with option 1.

Edited by stupid_programmer

Share this post


Link to post
Share on other sites

Option 1

======

 

(1) choose a tool for making a simple game

(2) make the game

(3) finish the game

(4) oh, wait, I learned a whole lot of stuff required to make a game and my friends stop talking when they play it

(5) rinse and repeat, solving increasingly more complex problems in increasing more complex games that you finish

(6) be an expert game developer (which includes programming, designing, maintaining, promoting, etc)

 

Option 2

======

(1) play with some tool

(b) switch to a different tool

(d) monkey around with tools

(5) dabble at starting to make several games

(6) browse the internet (heh heh, dem kittehz, oh look if I were a haircut I'd be a mullet!! lulz)

(4) go make coffee and message your friends about how lame they are for using some arbitrary tool for finishing their games

(6) play the games your friends have finished

 

Choose one of the above options.  I, personally, would recommend the first one but the second is very popular.

 

Definitely go with option 1.  A language is nothing more than a diff type of tool.  Use the tools you have to make your life easier and your games better.  In the end it's not how pretty the code looks but how well the game plays that matters the most.

Share this post


Link to post
Share on other sites

Personally, at work I use Unity and it works wonderful, everything you need just a few clicks away and some scripting(not even much). However, on my personal project I use C++ with SFML because it brings up a lot of the under the hood stuff ( I'm also thinking of trying to go OpenGL, but only after I finish this project. If you'd like you could also give MonoGame a try, I made a snake clone with it and , sincerely, it's really awesome !

Share this post


Link to post
Share on other sites

I actually think that Unity is great if you're not that much of a programmer but you are motivated to learn to become one.

 

Because it is "real" code (is there "not real" code tho?).

 

Then if you want to go a bit more hardcore but still within an engine you could go UE4 since it is in C++. I'd say avoid the graphical programming thing they have if you want to learn to code. (the graphic thing they have is honestly amazing but it does hide a lot from you).

Share this post


Link to post
Share on other sites

I'm coming in late, but here's my two cents. I'm a beginner at game development. But I've been a software engineer for 12 years, writing enterprise applications for business. So I've got a lot of programming experience. And I can tell you there's nothing wrong with Unity/Game Maker/Whatever. When you're trying to make something, whether it's a game or a database importer, what matters isn't whether other people think the tools you use are trendy and cool. What matters is whether you make something good. It's that simple. 

Share this post


Link to post
Share on other sites
Although you can certainly make games with Unity I find it a little strange how many people here are making some implication that you'll become some great all knowing developer by using nothing but Unity.

How would you actually learn about how things work under the hood without implementing them yourself? I really doubt I'm going to walk up to someone that has only used Unity and ask them details about implementing anything in DirectX and expect any kind of useful answer, or how to deal with low level input handling and architecture between game subsystems. Frankly they won't even know a lot of those systems exist or how they work, they'll just understand the interfaces they've grown to use to interact with them.

Sure you can learn a lot of stuff, nothing wrong with that, but to pretend its some like gateway to all knowledge is a joke at best. If you want to make something truly complex you're going to have to go back and learn that stuff at some point.

It all depends on what your goals are, people making fun of you for not using "the hardest thing" are misguided.

On the other hand you aren't going likely to be writing any of the underlying code that powers unity anytime soon either, without learning it. You're stuck with the tools Unity gives you.

Share this post


Link to post
Share on other sites

Although you can certainly make games with Unity I find it a little strange how many people here are making some implication that you'll become some great all knowing developer by using nothing but Unity.


I didn't get the impression that people were implying that.


How would you actually learn about how things work under the hood without implementing them yourself? I really doubt I'm going to walk up to someone that has only used Unity and ask them details about implementing anything in DirectX and expect any kind of useful answer, or how to deal with low level input handling and architecture between game subsystems. Frankly they won't even know a lot of those systems exist or how they work, they'll just understand the interfaces they've grown to use to interact with them.


There are many levels involved in software development. You can arrange gates in FPGAs to get something done, or use assembly language, or do systems programming in C, or program in a mid-level language, or you can use a high-level tool for a specific type of software, like the ones we are discussing here. Of course expertise at one of these levels doesn't automatically grant you knowledge about the whole thing. People are just saying that there is nothing wrong with programming at the high level.


On the other hand you aren't going likely to be writing any of the underlying code that powers unity anytime soon either, without learning it. You're stuck with the tools Unity gives you.


Yes, one does sacrifice fine control and flexibility by using a high-level tool. That is a trade-off that needs to be learned. Whenever he encounters those problems, he'll have good motivation to try his hand at a lower-level setup.

The way my mind works, it was better for me to learn the lower levels first (starting with assembly language and systems programming), so at all times I had the feeling that I essentially understood how things worked internally. But not everybody learns the same way. Starting at the top and working your way down can be very effective as well.

Share this post


Link to post
Share on other sites

Although you can certainly make games with Unity I find it a little strange how many people here are making some implication that you'll become some great all knowing developer by using nothing but Unity.

How would you actually learn about how things work under the hood without implementing them yourself? I really doubt I'm going to walk up to someone that has only used Unity and ask them details about implementing anything in DirectX and expect any kind of useful answer, or how to deal with low level input handling and architecture between game subsystems. Frankly they won't even know a lot of those systems exist or how they work, they'll just understand the interfaces they've grown to use to interact with them.

Sure you can learn a lot of stuff, nothing wrong with that, but to pretend its some like gateway to all knowledge is a joke at best. If you want to make something truly complex you're going to have to go back and learn that stuff at some point.

It all depends on what your goals are, people making fun of you for not using "the hardest thing" are misguided.

On the other hand you aren't going likely to be writing any of the underlying code that powers unity anytime soon either, without learning it. You're stuck with the tools Unity gives you.

 

Just because somebody starts out with tool X that doesn't mean they are forever locked in to it and can't learn other things.  People go on about Unity so much because it is so easy to get a simple game going in a short amount of time.  You can get a handle on what goes in to making a game without dealing with the crap that isn't really related to making a game.  The people that are truly interested in becoming great developers are going to start wondering what Unity is really doing for them and branch away from it.  I have said before that it is good for a developer to make their own engine at some point so they know how everything works together.  If people just want to make games for a hobby then it doesn't really matter if they know how the system is actually polling input.

 

One thing I will say, I have finished more games with Unity then I ever did with my own game engine in C++.  For what it is worth I've finished more games in Flash too.

Edited by stupid_programmer

Share this post


Link to post
Share on other sites


Currently, I'm working on a small, pixelated, 2D platformer. I've been bashed for using Unity 2D, people say that it "isn't real coding' and that it sucks.

 

That's like saying you didn't really build that house, unless you also fashioned and fabricated all the tools you used.  It's silly.  Heck, if you're using and IDE that does any code generation at all, that wouldn't qualify as "real code" by their logic either.

 

Ignore them.  Do what makes you happy.  If the end result is a completed game, even better.

Share this post


Link to post
Share on other sites

If you're more interested in completing games than you are in designing engines, just stick to Unity for now. Maybe your priorities will change, but writing an engine to make the same game you could've/would've made in Unity, just so no one can say you're "not a real developer" is a poor use of your time -- real developers ship and support products.

 

That said, if your needs for an engine are simple to start with and you're interested in getting your hands dirty -- or if you simply have unique needs that would be difficult to support in a 3rd party engine -- then rolling your own can be a valid and rewarding exercise. Just don't fall into the trap of writing an uber-engine because you feel it won't be complete until its features rival Unity and friends. Write only the engine you need at the moment to complete the project you're working on (being forward-looking is fine, just don't try to guess at what's over the horizon), and over the course of two or three projects you'll find that you probably have a fairly robust engine.

Share this post


Link to post
Share on other sites

I know the discussion is about using Unity or not and if that would be "real" programming or not. I personally use a lot of Unity and C# at work and sometimes at hobby projects as well. I would say that there are other important questions about this subject than if it's real programming or not. I think it is a matter of the appropriate tool for the job. To start I would pick Unity because you will accomplish more in less time and perhaps that will drive you to do even more. The community is super cooperative too.

Share this post


Link to post
Share on other sites

If you are a beginner, I would suggest going with Unity2D and using C# for the coding (I would avoid C++ and Unity's "Javascript").

Programming C# is real coding, you will learn a lot making a game in that.

Edited by flodihn

Share this post


Link to post
Share on other sites

This topic is 1097 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.

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  

  • Forum Statistics

    • Total Topics
      628714
    • Total Posts
      2984350
  • Similar Content

    • By AndySv
        Total Music Collection (http://u3d.as/Pxo)   THE COLLECTION CONTAINS:   Mega Game Music Collection   Universal Music Collection   Huge library of high quality music for any project! All at an incredibly low price!   - 2,5GB of high quality audio - 100+ different music tracks - Loop and short versions   Action, fantasy, casual, horror, puzzle, epic, dramatic, romantic, positive, inspiring, motivational and more!
    • By Dafu
      FES Retro Game Framework is now available on the Unity Asset Store for your kind consideration!
      FES was born when I set out to start a retro pixel game project. I was looking around for an engine to try next. I tried a number of things, from GameMaker, to Fantasy Consoles, to MonoGame and Godot and then ended up back at Unity. Unity is just unbeatable in it's cross-platform support, and ease of deployment, but it sure as heck gets in the way of proper retro pixel games!
      So I poured over the Unity pipeline and found the lowest levels I could tie into and bring up a new retro game engine inside of Unity, but with a completely different source-code-only, classic game-loop retro blitting and bleeping API. Months of polishing and tweaking later I ended up with FES.
      Some FES features:
      Pixel perfect rendering RGB and Indexed color mode, with palette swapping support Primitive shape rendering, lines, rectangles, ellipses, pixels Multi-layered tilemaps with TMX file support Offscreen rendering Text rendering, with text alignment, overflow settings, and custom pixel font support Clipping Sound and Music APIs Simplified Input handling Wide pixel support (think Atari 2600) Post processing and transition effects, such as scanlines, screen wipes, screen shake, fade, pixelate and more Deploy to all Unity supported platforms I've put in lots of hours into a very detail documentation, you can flip through it here to get an better glimpse at the features and general overview: http://www.pixeltrollgames.com/fes/docs/index.html
      FES is carefully designed and well optimized (see live stress test demo below). Internally it uses batching, it chunks tilemaps, is careful about memory allocations, and tries to be smart about any heavy operations.
      Please have a quick look at the screenshots and live demos below and let me know what you think! I'd love to hear some opinions, feedback and questions!
      I hope I've tickled your retro feels!



      More images at: https://imgur.com/a/LFMAc
      Live demo feature reel: https://simmer.io/@Dafu/fes
      Live blitting stress test: https://simmer.io/@Dafu/fes-drawstress
      Unity Asset Store: https://www.assetstore.unity3d.com/#!/content/102064

      View full story
    • By Dafu
      FES Retro Game Framework is now available on the Unity Asset Store for your kind consideration!
      FES was born when I set out to start a retro pixel game project. I was looking around for an engine to try next. I tried a number of things, from GameMaker, to Fantasy Consoles, to MonoGame and Godot and then ended up back at Unity. Unity is just unbeatable in it's cross-platform support, and ease of deployment, but it sure as heck gets in the way of proper retro pixel games!
      So I poured over the Unity pipeline and found the lowest levels I could tie into and bring up a new retro game engine inside of Unity, but with a completely different source-code-only, classic game-loop retro blitting and bleeping API. Months of polishing and tweaking later I ended up with FES.
      Some FES features:
      Pixel perfect rendering RGB and Indexed color mode, with palette swapping support Primitive shape rendering, lines, rectangles, ellipses, pixels Multi-layered tilemaps with TMX file support Offscreen rendering Text rendering, with text alignment, overflow settings, and custom pixel font support Clipping Sound and Music APIs Simplified Input handling Wide pixel support (think Atari 2600) Post processing and transition effects, such as scanlines, screen wipes, screen shake, fade, pixelate and more Deploy to all Unity supported platforms I've put in lots of hours into a very detail documentation, you can flip through it here to get an better glimpse at the features and general overview: http://www.pixeltrollgames.com/fes/docs/index.html
      FES is carefully designed and well optimized (see live stress test demo below). Internally it uses batching, it chunks tilemaps, is careful about memory allocations, and tries to be smart about any heavy operations.
      Please have a quick look at the screenshots and live demos below and let me know what you think! I'd love to hear some opinions, feedback and questions!
      I hope I've tickled your retro feels!



      More images at: https://imgur.com/a/LFMAc
      Live demo feature reel: https://simmer.io/@Dafu/fes
      Live blitting stress test: https://simmer.io/@Dafu/fes-drawstress
      Unity Asset Store: https://www.assetstore.unity3d.com/#!/content/102064
    • By Dafu
      Hello all,
      I've been hard at work on a new retro pixel-perfect framework called FES Retro Game Framework. It is now available on the Unity Asset Store for your kind consideration!
      FES was born when I set out to start a retro pixel game project. I was looking around for an engine to try next. I tried a number of things, from GameMaker, to Fantasy Consoles, to MonoGame and Godot and then ended up back at Unity. Unity is just unbeatable in it's cross-platform support, and ease of deployment, but it sure as heck gets in the way of proper retro pixel games!
      So I poured over the Unity pipeline and found the lowest levels I could tie into and bring up a new retro game engine inside of Unity, but with a completely different source-code-only, classic game-loop retro blitting and bleeping API. Months of polishing and tweaking later I ended up with FES.
      Some FES features:
      Pixel perfect rendering RGB and Indexed color mode, with palette swapping support Primitive shape rendering, lines, rectangles, ellipses, pixels Multi-layered tilemaps with TMX file support Offscreen rendering Text rendering, with text alignment, overflow settings, and custom pixel font support Clipping Sound and Music APIs Simplified Input handling Wide pixel support (think Atari 2600) Post processing and transition effects, such as scanlines, screen wipes, screen shake, fade, pixelate and more Deploy to all Unity supported platforms I've put in lots of hours into a very detail documentation, you can flip through it here to get an better glimpse at the features and general overview: http://www.pixeltrollgames.com/fes/docs/index.html
      FES is carefully designed and well optimized (see live stress test demo below). Internally it uses batching, it chunks tilemaps, is careful about memory allocations, and tries to be smart about any heavy operations.
      Please have a quick look at the screenshots and live demos below and let me know what you think! I'd love to hear some opinions, feedback and questions!
      I hope I've tickled your retro feels!



      More images at: https://imgur.com/a/LFMAc
      Live demo feature reel: https://simmer.io/@Dafu/fes
      Live blitting stress test: https://simmer.io/@Dafu/fes-drawstress
      My own game I started working on using FES, a roguelike, very early: https://simmer.io/@Dafu/merl
      Unity Asset Store: https://www.assetstore.unity3d.com/#!/content/102064
       
       
    • By Apollo Cabrera
      Yasss!!! My first Unity3d game is on the App Store and Google Play.
      Download please! About 30 minutes to get through 5 missions.
      Let me know what you guys think.
      Thanks a bunch
       
  • Popular Now