Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi all! We have been experiencing an issue on site where threads have been missing the latest postings. The platform host Vanilla are working on this issue. A workaround that has been used by some is to navigate back from 1 to 10+ pages to re-sync the thread and this will then show the latest posts. Thanks, Mike.
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

Complete noob...whats involved?

2»

Comments

  • Registered Users, Registered Users 2 Posts: 346 ✭✭gambitthefirst


    Hey guys some great info and insights here, but I have a question about programming and coding.

    I'm a complete noob at this whole subject but I'm interested in learning a langauge and how the code works behind the scene, not to say that I wouldn't like to make a basic game one day. But my main goal is to get a good understanding of how code makes things happen and see what I can do with what I learn.

    My question is what is a good versatile langauge to learn that could be used to make many other appications aswel as a game. I ask cause in my research C++ seems to be considered the best but I haven't seen it referenced in many things other than game development.


  • Registered Users, Registered Users 2 Posts: 3,831 ✭✭✭Torakx


    This is the very same question I had been asking myself before starting college back in Febuary for game dev and project management.
    After looking at a couple of engines and flexibility of languages, I decided eventually on C#.
    I also asked the instructor on the first day or two if we can do programming on the course and if so in C#.
    And we did!

    I had no experience before.And didn't pick up much from the actual programming classes really.
    It was the 2D game project in Unity and C# that got me learning.
    The 2D game was feckin hard to get going, but once I learned how to move objects, Unity made it really easy to make work arounds for a lot of small issues.
    It thought me the basics of coding overall, if statements,bools,using integers, functions and linking functions from other scripts.

    I'm using gamemaker for work experience and have been trying to pick it up since last friday.
    Seems a lot harder to pick up than Unity was and that is with some programming experience now.

    Either way, any language you do, I am fairly sure you will grasp the basics of programming.
    Once you have that, it really isn't that hard to learn a new one.The structures are all more or less the same in a general sense, and it is mainly syntax you need to worry about.

    My advice, as a fellow newb for what its worth!
    Is to decide what type of games you want to make, preferably games that inspire you and motivate you to keep going and finish!
    I finfihsed my 2D game only because I had 2 weeks and I was grouped with 3 other people for the project and was made respobnsible for the unity project and final build.

    If you don't have that kind of pressure, I would say do whatever inspires you to learn coding.

    I really love 3D stuff, so I will use Unity and C#. C# I read also can be usefull for apps and making databases or some other stuff like that.

    UDK (unreal engine) is pretty awesome and the most fun one to use.
    But it uses its own language and possibly python too, which I think is on some other engines.

    So for 3D I am going for Unity and C#

    For my 2D games I will either use Unity(apparently they are now accomodating 2D development!) or if this Gamemaker goes well..that.

    Construct2 is also very simple to use, but i would take GameMaker over that because afaik Contruct does not give you as much if any flexibility with adding your own code.

    So.. what are you interested in? what games do you want to make?
    Find what you love and the rest will follow, I say!


  • Registered Users, Registered Users 2 Posts: 454 ✭✭Kilgore__Trout


    Don't know much about C++. My understanding is that it doesn't automatically handle things like garbage collection and memory management, but is faster than managed languages. Seems the dominant language for AAA games. Can't tell you if C++ is used beyond the gaming industry.

    For a versatile language, you could look at java, which is a managed. While it's probably not the best language for making a game, it is a popular language for general programming. It is also extremely similar to C#, which is used by a few game engines.

    If you're interested in java, you could look up "the new boston" on youtube. Fairly comprehensive collection of tutorials.


  • Registered Users Posts: 22 Carpo II


    The reason C++ is used throughout the gaming industry is simply because of the performance it offers. This is not just for AAA games either, I work for a small mobile game dev company and we use C++ almost exclusively, and this would be the same across most of the other companies I can think of. You just can't make (most) games without it. Even stuff like unity is only using C# / Javascript for the highest level of scripting, everything under the hood will be running C/C++.

    The reason it gives (or rather, 'can' give) much better performance than other languages is that it operates on such a low level, barely above assembler. This give you a huge amount of control (particularly over memory) that you just can't get from other languages.

    The flip side of that coin is that it gives you more than enough rope to hang yourself with and you can royally screw yourself and produce really bad code all too easily. For that reason learning C++ is hard. And I don't mean learning it at college 'yeah i can write some code' level, I mean its hard to learn at the level required to produce proper, stable, efficient code.

    For that reason if some one applied to a job in the company I work for (or as I say, a lot of other companies) and describe your self and a game programmer without knowing C++ you would be laughed out the door. And I don't mean that as a slight to the people who learn C# with Unity or GameMaker etc, those are great tools. I just mean they are on completely different levels.

    So why learn C++? Well, if you want to program games professionally you have no choice. But even if you just plan on doing it as a hobby there is another big advantage. If you know C++ you can transfer that knowledge to other languages and systems trivially because you will have a much deeper understanding of what your code is really doing after the compiler is done with it. But that is a one way street. If you know Java or C#, the transit to C++ is STILL really hard (the fact that they share similar syntax is largely irrelevant next to the other problems you'll face).

    (Also, forgot to mention, C/C++ is stupidly cross platform. Everything has at least C and probably C++ compiler!)

    Hope that helps :)


  • Registered Users, Registered Users 2 Posts: 454 ✭✭Kilgore__Trout


    The info on C++ was useful, thanks. Out of curiousity, how much better do you reckon it would perform than C#?
    Carpo II wrote: »
    Well, if you want to program games professionally you have no choice.

    Respectfully, I think this is quite the overstatement. There are dozens of non C++ Indie studios working full time and earning their primary income from game development.


  • Registered Users Posts: 22 Carpo II


    The info on C++ was useful, thanks. Out of curiousity, how much better do you reckon it would perform than C#?

    That's far from an easy question. If someone who knows what they are doing in both languages, chances are they could produce algorithms in both that would have comparable performance. What C++ gives you is the power to tailor things to your specific usage to a much higher degree.

    A fairly basic example is memory allocation. The allocators that come by default need to be general purpose which means they are usually suited to generic software development, good at infrequent, large allocations. Most game engines would use a custom memory management system (actually most would use several tailored for different purposes).

    In ID softwares Tech4 engine (the one they used for Doom 3 and Quake 4) there is a comment in their memory manager they would handle allocations up to 70 times faster than the default new operator.

    And its that kind of thing that makes C++ so powerful. Need to make sure your structs are memory aligned so you are guaranteed only one cache miss per vector in your particle system? No problem. Need to make sure memory de-fragmentation algorithms only run when there is enough spare CPU cycles? C++ can give it to you. This level of control is simply not possible with managed languages.

    Of course the flip side of the coin is that is quite possible to produce grossly inefficient code in C++ to without realizing it!
    Respectfully, I think this is quite the overstatement. There are dozens of non C++ Indie studios working full time and earning their primary income from game development.

    Perhaps I worded that poorly and I can only go by my only experience here. I don't know of any companies that will hire game programmers who do not know C++ (and I am making a distinction here between programmer and, say, Unity Developer. The two simply are not the same, but I am not trying to say they are not both game development ).


  • Registered Users, Registered Users 2 Posts: 454 ✭✭Kilgore__Trout


    Yeah, starting to see that the enhanced degree of control in C++ brings with it a different order of complexity. Does it increase the amount of code required / development time by much?


  • Moderators, Category Moderators, Computer Games Moderators Posts: 51,922 CMod ✭✭✭✭Retr0gamer


    It might be more complex but once you get it right sure that codes in your coding database so you can call on it when ever you want. It might be slower going at the start but after your first project you'll be flying.


  • Registered Users, Registered Users 2 Posts: 3,831 ✭✭✭Torakx


    Does that mean you can't make a game to the same degree as a c++ coded game? I mean using an engine(gamemaker,construct,Unity,UDK etc) for 2D or 3D?


  • Advertisement
  • Registered Users Posts: 22 Carpo II


    Yeah, starting to see that the enhanced degree of control in C++ brings with it a different order of complexity. Does it increase the amount of code required / development time by much?
    Retr0gamer wrote: »
    It might be more complex but once you get it right sure that codes in your coding database so you can call on it when ever you want. It might be slower going at the start but after your first project you'll be flying.

    Pretty much what Retr0gamer said. C++ is just a language, and even compared to other languages it comes with very little out of the box so there is a lot of work to be done building yourself an engine before you start on your game.

    You can build the engine yourself, and this is doable by a single person in a reasonable amount of time, if you are interested in this I would recommend Game Coding Complete by Mike McShaffry. This will take you through building an entire (if simple) game engine from the ground up.

    If that doesn't take your fancy, there are umpteen game code libraries and engines out there that you can use, combine as you see fit.

    Either way though there is a significant amount of work required before you get to the point where you can actually make a game.

    The beauty of tools like Unity is that they have already done all this work for you and wrapped it all in a fancy editor to boot.
    Torakx wrote: »
    Does that mean you can't make a game to the same degree as a c++ coded game? I mean using an engine(gamemaker,construct,Unity,UDK etc) for 2D or 3D?

    I'm not sure what you mean by 'make games to the same degree' here. You can certainly get more control over what your code is doing if you write an engine yourself and can therefore tailor its usage to a higher degree.

    I realize I am starting to sound like a C++ evangelist on this thread but that's really not what I am trying to do at all. I am trying argue 'the right tool for the job' and to clear up a few misconceptions I had when I started in Game Dev.

    If you want to make games then things like Unity are great (I am not familiar with the likes of GameMaker but Unity is amazing) and can be used to make superb games.

    All I am trying to say is that if you learn Unity then what you will know is how to make games in Unity (and a little bit of C style syntax). If that's what you want, then that's great! But what you wont learn, is what Unity is really doing for you behind the editor, or skills that will help you out if you ever do decide to start programming games yourself. In fact in my case I had so many bad habits and misunderstandings from using C# that it made using C++ even harder.

    If that doesn't sound like something you want to do, that's fine, save yourself the headaches and go with something like Unity. I guess I'm just saying it's best to make your decision understanding to the implications of that decision and all the pro's and con's that go with it.


  • Moderators, Category Moderators, Computer Games Moderators Posts: 51,922 CMod ✭✭✭✭Retr0gamer


    You're not going to be making AAA level titles. For games that a person solo or a small team can make then there's plenty of tools out there to do the job. The thing about C++ is you have full control over everything you want to do. I'm trained up in Corona and have an app/game coming out soon that I worked on but for my own work I have lots of ideas but I can' work on them until the graphics 2.0 patch comes out. If I could get into the display code like C++ will let me I wouldn't have these problems.

    I also wrote some pathfinding AI for the app. It runs like a dog unless the levels are designed to disguise this limitation. For stuff like this which requires a lot of messing around with arrays/tables you can could it an awful lot more efficiently in C++.

    Really the tools are there to make very good indie or small game projects with the likes of Unity, gamemaker, Corona etc. But C++ will give you better control and if you are looking into getting into the industry then stuff developed in C++ will be a massive boon.


  • Registered Users, Registered Users 2 Posts: 3,831 ✭✭✭Torakx


    Is making your own engine a massive project?
    If none of the other engines use C++ I might have to do it all from scratch.
    How long a process would it be to learn enough to start making a game?
    2D or 3D.

    Maybe C++ is something I might try to work on an hour a week as I train up with Gamemaker and Unity 3D.
    I'm already working on unity with C# and GML.
    Can't even find time to do some fun stuff, like photoshop painting or 3D modelling :(


  • Registered Users Posts: 22 Carpo II


    Torakx wrote: »
    Is making your own engine a massive project?
    If none of the other engines use C++ I might have to do it all from scratch.
    How long a process would it be to learn enough to start making a game?
    2D or 3D.

    Yes making your own engine from scratch is a big undertaking. Someone who knows what they are doing could spend months creating one from scratch. There is simply a huge amount to do before you can even start working on a game.

    But there are other options. The book I recommended in a previous post, Game Coding Complete, will give you such an engine and explains how it works and, more importantly, why it works that way. It goes through memory management, asset management, rendering pipeline, audio, a scripting plugin (using lua), the works!

    Or you could use something like SDL. This will give you all the kinds of things that unity gives you but instead of using an editor, you manipulate it directly through C++.

    There really are a lot of different options out there for whatever you want to do, but before taking on something like building even part of a game engine in C++ you need to be sure it is something you want to do (there WILL be many times when you want to throw your keyboard out the window when you can't understand some bizarre compiler error).

    The upside to all this is you will gain a more complete understanding of what is going on in a game, how it all works, what impacts performance and everything else, than you will from pretty much anything else (and pretty much everything else will be a joy to work with afterwards :pac:).


  • Registered Users, Registered Users 2 Posts: 1,481 ✭✭✭satchmo


    From my experience, here's how the average game programmer progresses...

    School: [Basic, Python etc] is awesome - look at what I made!
    1st year of college: C is awesome - look at what I made before it crashes!
    4th year of college: I am a C++ master! I now know everything about the language and programming.
    1st year of game development: Maybe I don't know as much as I thought I did. But I do know that C++ is superior to everything else because of X, Y and Z.
    4th year of game development: C++ has some problems, but it's still the best for making games.
    8th year of game development: There's got to be a better way of doing this...

    I still like C++ because of the versatility, low-level control and performance. There's also no real alternative - C++ is the only language you can use for console development. But in terms of productivity it's far from perfect and there are a bunch of edge cases where it doesn't do what you expect it to.

    Having said that, I do think it's far and away the best language for learning how computers fundamentally work. And once you know C++ well, learning most other languages is fairly easy.


  • Registered Users, Registered Users 2 Posts: 2,021 ✭✭✭ChRoMe


    You need to choose if you are making a game or an engine. You won't have resources to do both.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 7,213 ✭✭✭witnessmenow


    I know the thread has progressed but I just want to throw my opinion on the question in the title.

    The most important thing that is involved is dedication in my opinion. Time heals all wounds makes all games.

    There is tools & tutorials out there to suit whatever level you are at. Don't try and find the perfect enginge, layout your minimum criteria (what platform etc) find one that works for you in terms of your knowledge and skill sets and get building a game. Doesn't matter if its good bad or indifferent you will learn from it and will come back better for the next one.

    Manage your scope, dont get carried away with your first couple of projects. If anyone has played my game Soc-car there probably hundreds of hours worth of work in that game and tbh it is a simple enough game. I am also working as a software developer for 4 years and have done a decent few side projects so I am a reasonably experienced developer (although none of it was games) so if it is taking me hundreds of hours to make a simple game, you can imagine its going to take someone with less experience longer

    I made a game at the Derry game craft a couple of weeks ago, I wrote it 100% from scratch (I had no lines of code already written before going there). I had an artist working on the art and sound.

    The game was completely simple, there was a platform and user controlled "warriors" that tried to bump each other off the edge (it looked isometric, but mechanically it was 2-d). So basically it would be difficult to make a simpler game and other than 3-4 hours where I slept I worked on it for 24 hours and it wasn't properly finished (I had no overlay to display the time or player scores and no way to restart). I also had some parts of Soc-Car I could borrow (controller inputs etc) so even the simplest games take time.


  • Registered Users, Registered Users 2 Posts: 454 ✭✭Kilgore__Trout


    satchmo wrote: »
    C++ is the only language you can use for console development.

    Hi Satchmo,

    Saw a trailer for Watchdogs recently. The hacking mechanic looks like a real leap forward from the usual tps in terms of gameplay. Nice work. I buy very few full price games, but am severely tempted with Watchdogs!

    I'm working on my first game at the moment, which is a 2d shooter with bells and whistles, developed in Unity(C#). Will initially release on Windows then Mac and Linux, but I've been considering the possibility of releasing to the next gen consoles as a long term goal.

    I know with the new consoles moving in that, things are up on the air, but are there issues with releasing an undemanding game made with Unity on consoles? Or (as CarpoII pointed out) does Unity do okay, because it's running C++ under the hood?

    Thanks!


  • Registered Users, Registered Users 2 Posts: 2,021 ✭✭✭ChRoMe


    Hi Satchmo,

    Saw a trailer for Watchdogs recently. The hacking mechanic looks like a real leap forward from the usual tps in terms of gameplay. Nice work. I buy very few full price games, but am severely tempted with Watchdogs!

    I'm working on my first game at the moment, which is a 2d shooter with bells and whistles, developed in Unity(C#). Will initially release on Windows then Mac and Linux, but I've been considering the possibility of releasing to the next gen consoles as a long term goal.

    I know with the new consoles moving in that, things are up on the air, but are there issues with releasing an undemanding game made with Unity on consoles? Or (as CarpoII pointed out) does Unity do okay, because it's running C++ under the hood?

    Thanks!

    Unity does just fine on consoles :)


  • Registered Users, Registered Users 2 Posts: 1,481 ✭✭✭satchmo


    Yeah Unity should be fine performance-wise, unless you're doing something particularly intensive. And yes, it's written in C++ (except the editor's UI which was written in C#).

    However to release a Unity game on console, you'll have to pay a hefty license fee that the regular Pro version fee doesn't cover. I don't know what that is (you have to contact Unity to get a quote), but I would guess at somewhere in the low to mid 5-figure range. You'll also need to officially create a company, get first-party approval, and pay for age rating. You'll probably also need to get an external publisher, although Sony seems less finicky about that part.

    First-party approval will probably be the hardest part - things are a lot easier than they used to be, but the platform-holders want to keep the quality of games released on their platform very high (for good reasons, nobody wants an equivalent of the Apple Store on consoles), and so will be very picky about what they choose to approve. Having previously released high-quality titles will help a lot.


Advertisement