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

Complete noob...whats involved?

2

Comments

  • Closed Accounts Posts: 33,733 ✭✭✭✭Myrddin


    RedXIV wrote: »
    So I'd suggest letting one of these tools hold your hand for the first attempt anyway, get something up and running, even if its a square responding to key presses, that's an achievement.

    Yeah I'm thinking the same, I got the free version of GM there so will install it, have a peek & poke around in it {see what I did there!} over the next few days :)


  • Registered Users, Registered Users 2 Posts: 22 Carpo II


    EnterNow wrote: »
    I'm serious about it in the sense that I'd like to make a basic game & enjoy the journey. I'm not looking to be the next Gabe Newell or anything {though I do like hamburgers}.

    One thing to bear in mind, and which may come as a surprise (it certainly did to me) is that coding is fun and interesting for its own sake, even apart from game dev. Don't be afraid to give the likes of c/c++ a try to see if you enjoy them.


  • Closed Accounts Posts: 1,235 ✭✭✭returnNull


    Understanding memory allocation and dealocation, the stack and heap, pointers and references are all very important things and Java hides that from you.
    the very reasons you give for using c++ would be the reasons why Id recommend using java or c#.

    For somebody starting out coding not having to deal with memory allocation,pointers,constructors and de-constructors etc is a plus imho.

    If they can get a good grasp of OOP from java or c#,making a switch over to c++ and its complexity isnt to much of a leap.
    use a proper language like C++
    has been dealt with to hell and back on the interwebz. There's pro's and con's to every language and thats why c#,java and c++ can and do co-exist.


  • Closed Accounts Posts: 31,967 ✭✭✭✭Sarky


    Ready-made game editors are well worth a look at, in that you can concentrate on learning on how to structure a game and how events/quests/choices/whatever change the flow of basic things like, say a database full of Pokémon and their abilities. Once you're happy you know how those bits and pieces fit together, learning about the code behind them is likely easier. Make no mistake, there's an awful lot to keep track of in even a "basic" language, so diving straight in to C++ might not always be the best idea...


  • Closed Accounts Posts: 3,922 ✭✭✭hooradiation


    EnterNow wrote: »
    I'm serious about it in the sense that I'd like to make a basic game & enjoy the journey. I'm not looking to be the next Gabe Newell or anything {though I do like hamburgers}.

    Then just use some gamemaker esque tool. Doing it "properly" is a helluva commitment and there is a long time between initial starting and payoff (comparatively speaking)
    returnNull wrote: »
    the very reasons you give for using c++ would be the reasons why Id recommend using java or c#.

    For somebody starting out coding not having to deal with memory allocation,pointers,constructors and de-constructors etc is a plus imho.

    Proper memory management is important, you need to learn it if you're looking to make a go of games programming.
    Hiding it away is a bad move, and unlearning the bad habits and misconceptions you'll have picked up from managed languages will take more time then just learning it properly in the first place.

    And it's not that hard anyway, it's just that the reliance some people have built on managed languages make it seem like eldritch sorcery.


  • Advertisement
  • Moderators, Category Moderators, Computer Games Moderators Posts: 53,447 CMod ✭✭✭✭Retr0gamer


    I'd learn the basics first in something like Java. Yes memory management is very important if you are going to build a game engine but if you are going to use something like gamemaker it isn't.

    I would however not recommend making anything but a simple text based game in java, once you are at that stage and want to do real coding then it's time to hit C++ before you learn those bad habits.

    As for Corona, one other thing I forgot to mention is that because it's relatively new you if you have a problem and need to find a solution googling it will 99% of the time not find you any solution. I'm finding this myself since I'm making a game in it. With something like Java or C++ or even gamemaker there's a lot more help out there especially on stack overflow.


  • Closed Accounts Posts: 1,235 ✭✭✭returnNull


    the point I was making hooradiation is that it brings an unnessary complexity to someone who is starting coding from scratch with the view to making a game,we're not talking about the next Call Of Duty or some other triple A game.
    and unlearning the bad habits and misconceptions you'll have picked up from managed languages will take more time then just learning it properly in the first place.
    learning to code in java or c# does not mean you have 'bad habits or misconceptions' about memory management as long as you are aware that other languages out there handle it differently.


  • Closed Accounts Posts: 33,733 ✭✭✭✭Myrddin


    Then just use some gamemaker esque tool. Doing it "properly" is a helluva commitment and there is a long time between initial starting and payoff (comparatively speaking)

    I'm not sure if I'll get what I'm looking to do from a pre-built tool. But I'm also not in a position to spend four years studying programming either. Are you saying there's no happy medium?


  • Registered Users, Registered Users 2 Posts: 7,814 ✭✭✭TPD


    Gamemaker is certainly capable of making a mario or sonic style platformer. Have a go of Iji, (http://www.remar.se/daniel/games.php), would you be aiming for much more than that? It was made in gamemaker.


  • Moderators, Category Moderators, Computer Games Moderators Posts: 53,447 CMod ✭✭✭✭Retr0gamer


    You'd be surprised how powerful Gamemaker is. You can make commercial quality games on it with a bit of dedication and good art. For an example of just how good it can be Derek Yu used it to create Spelunky and recently Hotline Miami was built using Gamemaker. The tutorials that come with it are excellent.

    I'd still think you should learn some language, if you can get your head around OOP then you can get your head around it in any language. I think after that C++ is a good next step so you can learn the stuff hooradiation is talking about, you'll never have efficient code if you are relying on a languages inbuilt memory garbage collector.

    Then again you could just be happy making games in a tool like gamemaker or a language like Java or C#. It never did notch any harm, although for a good example of a terrible engine that could really benefit from being in a lower level language, look no further than minecraft. Then again I've heard a lot of people say that C# is pretty much good enough these days, although again I'm a beginner so I'm no expert.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 22 Carpo II


    EnterNow wrote: »
    I'm not sure if I'll get what I'm looking to do from a pre-built tool. But I'm also not in a position to spend four years studying programming either. Are you saying there's no happy medium?

    The problem is that tools like game maker are there to make the process of making games as quick and easy as possible and divorce the user from what's going on under the hood, so they are intentionally far apart. Something in the middle would just be a poor tool :pac:

    That being said, if you read a book on C*, say something like this, and then do some simple opengl tutorials (using things like immediate mode and glut) you can be up and running, with (crap)graphics and user input etc in a few weeks. The problem with the likes of c/c++ is that they take a lot of effort to write well (but that can come later) and provide many opportunities to shoot yourself in the foot compared to managed languages, which can be frustrating but there will be plenty of help here abouts I'm sure :)

    *The reason I am saying C rather than C++ is that C is a much smaller and 'easier' language but will still give you a handle on the nitty gritty. I fell foul of exactly what hooridation is talking about. I learned with Java and C# and moved on to C++ from there carrying a lack of real understanding of how to deal with an unmanaged language. When I started game programming professionally I was shocked at how much I had to learn in this regard and had a difficult time catching up. By comparison, things like OO were a doddle. In hindsight it would have been much preferable to start in C work up to C++ and move on to managed languages later.

    Of course, this is all predicated on your actually wanting to get your hands dirty with the low level coding at some point!


  • Closed Accounts Posts: 3,922 ✭✭✭hooradiation


    returnNull wrote: »
    learning to code in java or c# does not mean you have 'bad habits or misconceptions' about memory management as long as you are aware that other languages out there handle it differently.

    Without a point of reference on what memory management is and why it's important (and what can go wrong when you don't do it right) I fail to see the merit of simply knowing that "other languages out there handle it differently".

    C++ is the best tool for the task, so if you're serious about making games, you might as well bite the bullet and get going on that from the start.

    It's going to be hard, programming isn't easy by any stretch of the imagination, it's part of the reason tools like gamemaker exist, but wasting time with Java et al has two downsides.

    1] Doesn't prepare you for the task your looking to accomplish
    2] It's very hard to simply "change languages" especially when you're learning because it feels like throwing away progress. It's the sunken cost fallacy, You've spent X hours on this language and now you have to start from scratch with another language and it's syntax isn't quite like the one you've had before and you're confused and what is all this memory managamWHAGLEBLARGLE JAVA FO LYFE!

    Every plea to "but it's easier to learn!" may well be true, but you're screwing yourself long term - why would you do that?


  • Moderators, Category Moderators, Computer Games Moderators Posts: 53,447 CMod ✭✭✭✭Retr0gamer


    Well I wouldn't recommend Java for game development at all. I've got as far as making a text based hangman game using OOP and that's as far as I'm going. I'm going to start teaching myself C++ during the summer and messing around with that and gamemaker on the side for fun.

    Would going straight into C++ to start not be going into the deep end first? I've no experience with it so I'm asking out of curiosity.

    As for C vs. C++:

    class.jpg


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


    Plus it may depend on what platform you might like to port the game over to.
    C# and python are both used with the Unity engine and editor for example.
    Which can be used to make top down and side scrolling games as well as 3D games.
    Unity or UDK might be a sort of medium, between straight coding and game makers.In that you have access to the scripts and the enviornment building.


  • Moderators, Category Moderators, Computer Games Moderators Posts: 53,447 CMod ✭✭✭✭Retr0gamer


    I'd steer well clear of unity for a beginner. Once you go 3D your work load increases exponentially.


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


    I really wouldn't get hung up on what language to start with. If you haven't done any programming, then you're going to be starting off learning the same stuff regardless of language - variables, operators, loops, classes, etc. The only thing I'd advise is not starting with a typeless language (javascript, python etc) as I think the lack of typing makes things a bit too vague for a beginner.

    I started with Java because that's what I was taught in college, although I had done a bit of BASIC and C myself before. The thing I liked about Java was the ease of getting something visual going - drawing lines, images and 2D polygons was simple, which made experimenting with different things easy and made it fun to keep learning. Once I started doing 3D I taught myself C++ & OpenGL because the Java 3D API was a mess at the time. It still might be for all I know. The garbage collection also made it hard to get good performance for the sort of stuff I was trying to do, but that was probably more to do with something I was doing wrong. I never liked how Java hid the memory management - I never really understood memory allocation and I hated not knowing what was really going on behind the scenes. Once I moved to C++ I never looked back.

    If I was going to start again, I'd go for C++ (I really like the tutorial at LearnCPP.com, it's well explained and easy to follow), using a library like LibSDL for windowing & input so I could start doing interesting stuff sooner than having to learn the Win32 API at the same time as the language itself. But that's just me, and other ways might work better for other people. It depends on how you learn, and what motivates you.

    The only important thing really is to keep going. Whether you start with Java or C# and then continue on to C/C++, go straight to C++ or never even touch it, the more you program the better you'll get. And once you get reasonably good at one language, it's so much easier to pick up another one.

    So don't worry too much which you pick. As long as you're having fun, you're doing it right.


  • Closed Accounts Posts: 3,922 ✭✭✭hooradiation


    Retr0gamer wrote: »
    Would going straight into C++ to start not be going into the deep end first? I've no experience with it so I'm asking out of curiosity.

    Sort of, I guess?

    There is less hand holding than in managed languages, for a start, simply by the virtue of being not being a managed language.

    Syntax wise Java, c# and (to a degree) objective-c are all quite similar so there's no big change there.
    There will be some change, obviously, but most of it is similar enough to be recognisable, or has a clear counterpart that you can reference against
    for example
    std::cout << "Hello world" << std::endl;
    
    is the C++ equivalent to
    System.out.println("Hello world");
    


    The biggest change you'll probably notice at the start is C++ has primitive types (int, char, bool, float) but does not have analogous objects (such as java's Integer) and that you're not forced into object orientated design, as C++ allows for a few different methods of organising how your program works (for example, imperative programming)

    Speaking of object orientated things are difference in C++, multiple inheritance is allowed (which isn't in Java) and there are things like copy/deep copy to worry about but that's all a bit further away from getting a basic C++ program up and running.

    tl;dr - kind of, but not as much as you'd be led to believe.


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


    Retr0gamer wrote: »
    I'd steer well clear of unity for a beginner. Once you go 3D your work load increases exponentially.

    Agreed. Unity can be utilised for 2D games quite easily too, but it is still within a 3D environment. Unity's a good pick for someone that understands the basics of programming, maybe around 2 years of college programming (of the equivalent self taught) under their belt. Without coding, you'd be severely limited in what you could do game-wise. You'd also be fighting a battle on two fronts, both learning how to code, and the nuances of the Unity engine.


  • Registered Users, Registered Users 2 Posts: 1,592 ✭✭✭DesperateDan


    If I recall Game Maker is definitely your friend for 2D games, you can code through it or hit buttons and it'll hook stuff up for you behind the scenes, but is still as in-depth as you want it to be.


  • Moderators, Category Moderators, Computer Games Moderators Posts: 53,447 CMod ✭✭✭✭Retr0gamer


    Someone here suggested Corona and at the moment I'm deep into making a platformer on it that has to be finished within a week. For traditional 2D games my advice is steer well clear.

    First you can't use the keyboard to control your character, only on screen touch buttons, which makes sense since the game is being made for a portable device but it's not ideal to see how your game will work unless you have a tablet or similar device to port it over to test.

    Secondly the collision detection which is based on a near unmodified Box2D is an absolute pig, you need to do some very hacky things just to have something as simple as an enemy getting hit with a bullet.

    For something like enternow is looking to make, don't bother with it. TBH Corona is for development for mobile platforms and traditional 2D scrollers don't work on those devices. If you have a simple game or one that requires touch controls then go for it. However be aware it's not as user friendly as something like Gamemaker. Since it's very new it's hard to find any help for it online. You'll need to learn a bit of Lua. There's also some more complex elements such as loading tiles using an array to create levels, scrolling that needs to be manually coded, bit masking collisions and a small amount of memory management.


  • Advertisement
  • 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, Registered Users 2 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, Registered Users 2 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: 53,447 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, Registered Users 2 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.


Advertisement