Slashdot Mirror


Ask Slashdot: Best Way to Learn C# For Game Programming?

An anonymous reader writes So I, like many people, want to make my own game. Outside of MATLAB, Visual Basic, and LabVIEW I have no real programming experience. I initially started with Ruby, but after doing my homework decided that if I ever wanted to progress to a game that required some power, I would basically need to learn some form of C anyway. Further digging has led me to C#. The other parts of game design and theory I have covered: I have ~8 years of CAD modeling experience including Maya and Blender; I have a semiprofessional sound studio, an idie album on iTunes, and am adept at creating sound effects/music in a wide variety of programs; I'm familiar with the setbacks and frustration involved with game development — I beta tested DotA for 9ish years; I already have my game idea down on paper (RTS), including growth tables, unit types, unit states, story-lines, etc. I've been planning this out for a year or two; I will be doing this on my own time, by myself, and am prepared for it to take a couple years to finish. The reason for listing that stuff out, is that I want people to understand that I know what I'm getting myself in to, and I'm not trying to put out a not-so-subtle "help me make a game for free lol" type of post. With all of that said, where is a good place to start (i.e., recommended books) for learning C# for game programming? I am familiar with object oriented programming, so that's a little bit of help. I'm not necessarily looking for the syntax (that part is just memorization), but more for the methodology involved. If anyone also has any suggestions for other books or information that deal with game development, I would love to hear that too. I know enough to understand that I really don't know anything, but have a good foundation to build on.

254 comments

  1. just try it, it's fun by Anonymous Coward · · Score: 2, Insightful

    You should just start. I'm an "expert" on game programming in C#, and the hardest thing about it is not reading slashdot.

    1. Re:just try it, it's fun by Noah+Haders · · Score: 2

      I disagree. spend a little time to think about your path then dive in. example, I needed to pick up a language for simple scripts, choosing between php and python. PHP was simple to install through an XAMPP php/apache/PHP package. so i just dived in and did it.

      retrospect, I wish I had invested in python instead. Now that I can use PHP I'll just make scripts there, but python could have been so much more potential for other work.

      that being said, I recommend swift, apple's new language for iOS apps. It's got a really nice IDE, it's pretty much tailored to people making games. you can get access to all the gaming power of the iPhone, and not have to worry about other PC headaches.

    2. Re:just try it, it's fun by Anonymous Coward · · Score: 1

      Start simple - very simple. Try breakout, tetris, a board game, etc, then start adding features to learn about those features. Then make the game you really want to do in the same approach - minimum viable product, then flesh it out like stone soup. When the soup's done, ship it!

    3. Re:just try it, it's fun by Anonymous Coward · · Score: 0

      retrospect, I wish I had invested in python instead. Now that I can use PHP I'll just make scripts there, but python could have been so much more potential for other work.

      You can still learn Python in a couple of weeks.

    4. Re:just try it, it's fun by Anonymous Coward · · Score: 1

      It truly does depend on what the programmer wishes to accomplish
      In order "fastness" it's always this way:
      ASM (no runtime),
      C (runtime),
      OBJC, C++ (as they they require their own runtime, in addition to the C runtime)
      Lua, C#, Swift (assumed), and any managed .NET programming and anything with LLVM JIT's
      Javascript (as a compiled scripting language), Python (compiled)
      Flash(actionscript3)
      Java (Requires an enormous runtime environment)
      Javascript, Python, Ruby, PHP, Perl as JIT's

      But in order of RD (Rapid Development) it's somewhat different
      C is still the easiest language to understand, as no OOP anxiety is attached to how you program, aside from that anything that is C-like tends to be easier to manage, like Javascript until you try to go OOP, then Javascript/Actionscript becomes easier to understand than C++ and Java
      Likewise C# and Swift can be considered a middleground between Javascript/php/perl/python/ruby interpreted JIT's and compiled ones like Lua

      But everytime you introduce a runtime, you also introduce the potential for the game to be broken by the OS updates.
      For example, damn near everything programmed in C and statically compiled, still works, even on the latest version of the OS, provided you are running Windows or OSX. If you are running Linux or FreeBSD, you are screwed, as binaries never work between major versions of the OS. This is why sometimes you need to compromise.

      Take the "SDL" stack. If you can recompile SDL and ONLY use C99 functions (no C++, no other language bindings) and statically compile everything into the game except the SDL layer, one could get the game to work on a future version of the OS by recompiling SDL. In theory at least. In practice, static compilation is only done on game consoles because you want to optimize out all the stuff that isn't used so you maximize the RAM.

      So coming full circle...
      Unity can target all platforms, uses C#, and can generally be decompiled to figure out where to optimize things. I'll give you some hints. Unless you have your heart set on doing something 3D, with 3D models and 3D scenes, don't use Unity, heres why:
      A Unity game will easily eat 200MB of RAM on the device, (50MB is just the game binaries) , depending how many plugins/extensions the developer uses, this may be even larger. Unity is poorly multi-threaded, owing to the C# usage, as developers do not multithread if they are not forced to. So the multimedia might be threaded (video and sound playback) but the game AI in the main wait-loop is still how people are programming games. Asset wise, Unity does not de-duplicate assets. So you might have a shader for a model, but the game packaging will include this file every single time for every asset, and essentially recompile the shader for every single asset used, wasting time and memory. Unity games on mobile devices leak memory pretty heavily as well. The game I'm talking about would sometimes need to be restarted 20 times to play through a 3D portion of the game. This is on Android BTW. On iOS Unity doesn't have the Dalvik cruft layer to deal with, and on native Windows/OSX the games tend to not even have a problem. It's just mobile itself that is a problem.

      The people who develop OpenGL ES and WebGL seem to have it in their mind that we can keep adding layers of cruft to build a game, when in fact the problem isn't OpenGL, but the entire thing outside of it. A console game (3DS, PS3, PS4, Wii, Wii U, Xbox, Xbone) will always be faster because there isn't a bloated OS trying to do everything at the same time. OpenGL and Direct3D are crufty, and have to deal with layers of bad programming like the web browser having to do sanity checks against everything before translating it into whatever the native OS supports. So a WebGL game is pretty much dead.

      Is Unity bad? No. But developers using it are being terribly bad at using it. Seems like Mobile is an after-throught instead of the first.

      My suggestion is, really, if you want to learn to prog

    5. Re:just try it, it's fun by chentiangemalc · · Score: 2

      Have you actually been using swift. Nice concept, buggy as hell implementation. Sure it's beta, but in my opinion it's too buggy even for beta release. and lack of support for fixed arrays in my opinion is strange...

    6. Re:just try it, it's fun by rasmusbr · · Score: 2

      Start simple - very simple. Try breakout, tetris, a board game, etc, then start adding features to learn about those features. Then make the game you really want to do in the same approach - minimum viable product, then flesh it out like stone soup. When the soup's done, ship it!

      This.

      Except, start with what you know. If you're good at audio, start by writing a program that can receive and handle requests to play sounds. Now, in a complex game like an RTS the sound effects will need to overlap. So for instance in a space-based RTS the roar of a rocket launch may need to overlap with multiple bangs och zaps of plasma rifles and lasers. Once you have a sound program that works well enough you can call that your sound engine.

    7. Re: just try it, it's fun by Anonymous Coward · · Score: 0

      Swift is just obj-c with a different syntax so the performancd is the same.

  2. The best way to learn $foo is to practice $foo. by Anonymous Coward · · Score: 3, Insightful

    So just do it. Use free tools so you don't spend coin on something until you are sure it's something you'll stick with.

  3. help me make a game for free lol by Anonymous Coward · · Score: 0

    i can't help ya, dude. but i'll take what you have so far.. for educational purposes, yeah. it's all on github rite?

  4. Udemy by Bodhammer · · Score: 3, Informative

    Udemy has 12 courses(https://www.udemy.com/courses/search/?ref=home&q=c%23) up there and they have big sales all the time. If you can get some for $10, it might be worth it.

    --
    "I say we take off, nuke the site from orbit. It's the only way to be sure."
    1. Re:Udemy by ZenMatrix · · Score: 1

      Udemy has 12 courses(https://www.udemy.com/courses/search/?ref=home&q=c%23) up there and they have big sales all the time. If you can get some for $10, it might be worth it.

      Has anyone actually used these. I've looked at some of the courses but haven't been able to bit the bullet even with some of the deals they do.

    2. Re:Udemy by darkgumby · · Score: 1

      I took a free intro course on iphone development on Udemy. I wrote C years ago and do PHP and Javascript now. Until I took the course I had never used X-Code or written any Objective-C. So not a total newbie, but still starting from almost zero. I was shocked at how good the course is and how easy it was to get an ipad app working. There are plenty of free courses of all types available on Udemy so you can test the water to see if you think paying for a course is worth it.

    3. Re:Udemy by Anonymous Coward · · Score: 0

      Udemy has 12 courses(https://www.udemy.com/courses/search/?ref=home&q=c%23) up there and they have big sales all the time. If you can get some for $10, it might be worth it.

      Has anyone actually used these. I've looked at some of the courses but haven't been able to bit the bullet even with some of the deals they do.

      I took the Code a Responsive Website with Twitter Bootstrap 3 and found the course content, presentation, and instructor to be excellent.

  5. Re:It's too slow. by steppin_razor_LA · · Score: 1

    I'm not going to argue that C# is faster than C++, but 1000x seems a bit surprising. I'm also not sure why you say that C# requires a desktop OS?

    --
    Evolution: love it or leave it
  6. Pick up a book and turn off the internet by cyberspittle · · Score: 1

    Once you don't hear the noise, you can think. With no internet, you won't be able to cry for help and then have to work through your own problem. Don't worry about reinventing the wheel.

    1. Re:Pick up a book and turn off the internet by Anonymous Coward · · Score: 1, Insightful

      Yeah, no shit... is anyone else sick and tired of these Ask Slashdot "stories" where the obvious answer is "pick up a fucking book"?

      Seriously, Amazon has a shitload of them with titles like "C# Game Programming," "Learning C# by Programming Games," "Beginning C# Game Programming" etc. etc.

      What the hell is wrong with kids these days? Oh... I'm sorry, the question was "what's the BEST way?"

      There are these little stars next to the book titles on Amazon...

    2. Re:Pick up a book and turn off the internet by SirSlud · · Score: 0

      It's like there's some strange black hole of information available on the internet that only happens around the super specific topic the Ask Slashdotter is interested in. I'm pretty sure all of these folks are the ones that were our best horses in Keener Bingo:

      http://www.mathnews.uwaterloo....

      --
      "Old man yells at systemd"
    3. Re:Pick up a book and turn off the internet by jones_supa · · Score: 0

      Maybe these askers somehow need other people to confirm their choices to make them feel warm and cozy.

    4. Re:Pick up a book and turn off the internet by Anonymous Coward · · Score: 0

      To the mod who modded me "offtopic" - I answered the guy's question, the answer is "read a fucking book."

      Just because you don't like that answer is no reason to pull rank. Crackheads like you are the reason I post anonymously.

    5. Re:Pick up a book and turn off the internet by Anonymous Coward · · Score: 0

      Maybe these askers somehow need other people to confirm their choices to make them feel warm and cozy.

      In the case of the person submitting the Ask Slashdot question I would say you are right. Remember only some of us grew up and learned (self-taught) programming before there was publicly-accessible Internet and even BBSes were a long-distance toll call away. Self-reliance and books and experimentation are fondly stored in my long-term memory. ;-p)

    6. Re:Pick up a book and turn off the internet by qwak23 · · Score: 1

      Maybe they are just trolling?

      Any question about programming on /. is bound to start several arguments about which languages do what and blah blah blah.

      To the OP, if not trolling, Pick a language, any language and just try making simple 2d games for awhile. Try recreating classic games like pong (very simple) to space invaders and tetris. You don't need to worry about engines or anything so much as the graphics are simple and the games themselves are easy to tweak and experiment with. Then once you have a good feel for that you can always move on to something more complex and maybe consider using a game engine.

  7. mess around in unity3d by Anonymous Coward · · Score: 3, Informative

    do the unity3d tutorials and mess around with C# in there. you get to use your 3d skills and actually make something whilst you learn

    1. Re:mess around in unity3d by Anonymous Coward · · Score: 0

      This. Also most of their documentation is in javascript, but objects and methods work the same on both sides. they mix disgustingly well.

    2. Re:mess around in unity3d by gbjbaanb · · Score: 4, Informative

      True - if you're going to write games in C#, you need Unity. Unfortunately Unity is really Mono so you will have some issues with the toolchain - ie its not as nice as native Visual Studio coding.

      But even then, all the games I've seen written in Unity work, but they suck up your CPU like nothing else. If you really want to code games, stick to what most people in the industry use - C++.

      There are plenty of engines that help you, like Irrlicht, or Ogre3d. Or go with a commercial engine like Unreal.

      Take a look at the list, count the number targeting the different languages.
      http://en.wikipedia.org/wiki/L...

    3. Re:mess around in unity3d by AnthonyTurner · · Score: 1

      Agreed. I seen some of Unity, and I really don't like. I would much rather code directly with C++.

    4. Re:mess around in unity3d by eulernet · · Score: 1

      If you really want to code games, stick to what most people in the industry use - C++.

      While I agree with you, because C# is too high-level for game programming, Microsoft just released a native C# compiler:
      http://msdn.microsoft.com/en-U...
      This should provide performance almost equivalent to C++.

    5. Re:mess around in unity3d by Anonymous Coward · · Score: 0

      Or, heaven forbid, you could use the Visual Studio Express for Web, which is a free download from MSFT. In that you can do Basic, C, C++ and C# and there is even the ability to do F#. But, of course, for all you /.ers, it is MSFT and not some Open Source stuff.

    6. Re:mess around in unity3d by Brulath · · Score: 3, Insightful

      Not every game needs to be super CPU-intensive though; Hearthstone is created in Unity3D, for example, and that works super well on everything but an iPad2. Skipping C++ initially and learning to create a game in Unity3D with C# is probably a wise choice for a bunch of people, at least for prototyping and for a wide variety of games that aren't CPU-limited.

    7. Re:mess around in unity3d by ZenMatrix · · Score: 1

      why web.... just download c# or even better try xna studio to start. They give you a basic start and go to http://xbox.create.msdn.com/en... for help on where to start

    8. Re:mess around in unity3d by Anonymous Coward · · Score: 0

      you don't need unity, theres also monogame and probably some other crappy managed frameworks. i hear theres a C# port for OGRE, and some closed source junk called WAVE engine or something that uses entity/components for UI --- LOL :\

    9. Re:mess around in unity3d by Anonymous Coward · · Score: 0

      No, no, no. At the very least, if you are a true /.er you will check out trunk here. You will then waste half your life getting to the point where you have a workable IDE. Then, and only then, you will go about solving your original problem. That is the /. way!

    10. Re:mess around in unity3d by gbjbaanb · · Score: 1

      you miss the point - its not about performance (though I think the native C++ compiler for C# code shows that Microsoft has stopped willy waving between their divisions and are actually going for stuff that works - performance will still be worse, all that GC going on means C# code tends to be less performant due to the way the language works. A C+ program that allocates and copies memory all the time would be slow too)

      Anyway, its the fact that everyone else does it in C++ that matters. A bit like writing web code, you wouldn't do it in C++ (well,, I would, haha) but in a web-based scripting language like PHP. When you come to ask for help, there will be a lot of C++ based help available, not so much C#.

    11. Re:mess around in unity3d by gbjbaanb · · Score: 1

      Unity is mono, not .NET. It uses Eclipse as its IDE.

      So if you want to code games in C#, you can't use VS.

    12. Re:mess around in unity3d by bastard01 · · Score: 1

      Not precisely, Unity more or less is your IDE, with the text editor and build tools being outsourced depending on what platform you are targeting. You have a separate text editor(which, you actually CAN use Visual Studio(Or Notepad++, Sublime Text, etc..), if you have Windows and a desire to. Also, there are products where you can use VS to develop Unity games,like UnityVS( http://unityvs.com/ ) which, at $100... Isn't precisely cheap, but considering what Visual Studio and Unity Pro costs, game development shops generally don't find too much of a problem paying it. Without that Unity leverages it's own editor for handling your build logic and debugging dependent on platform, which for Windows Store and Windows Phone apps, that ends up in Visual Studio, for Android apps it spits out an Android project or an APK depending on how you set it up, an Xcode project for iOS, etc...

    13. Re:mess around in unity3d by Anonymous Coward · · Score: 0

      Terraria was written in C# using XNA. I wouldn't have chosen XNA myself, even before it was virtually abandoned by MS, but it is something other than Unity that works reasonably from within .NET languages.

    14. Re:mess around in unity3d by Xest · · Score: 1

      There are a number of commercial indie games on platforms ranging from Android, iOS, Windows, Mac, the PS3, the PS4, the XBox 360, the Wii, the Wii U and the XBox One written using C# executing via Unity or Mono using something like MonoGame.

      C# is not too high level for game programming, it's perfectly adequate. You may start running into issues with it if you're trying to produce photorealistic next gen console graphics with it, but I assure you, if you're an indie developer, you are not doing this, because you do not have the 1000 people behind you required to produce the art assets that make that kind of engine worthwhile. Even then it wont even be C++ that'll save the day, it'll be assembly optimisations and making use of platform specific functionality (like say the ESRAM in the XBox One).

      So anyone who isn't part of a professional studio most definitely should look at C# and Java for game programming, they wont hit any performance problems from the language/runtimes and they hit the ground running much faster due to the faster development times that higher level languages grant you.

      Unless you already know C++ and only know C++, then there's no real benefit to using it as an indie developer. The language/language runtime is never going to be the bottleneck for the indie - the algorithms they use will be the bottleneck if anything.

      As an indie you'd be a fool to use C++, especially if you're new to programming, because it means you'll probably be stuck learning and dealing with it's increased complexities rather than actually getting done what you're there to do - write games.

      I learnt this the hard way, I spent 10 years on and off chasing down the perfect engine, a beautiful modular cross platform compilable C++ thing and all I ever got was this base engine each time (then new API versions would come out and I'd re-think things) and never really ever ended up getting anywhere game wise. Nowadays I'm using things like MonoGame and I'm actually doing what I wanted to do all along - write games. The only performance problems I've faced have been from using the wrong data structures and algorithms - performance is entirely in that area. Get your algorithms right and visual quality and hitting the magical 60fps is no problem at all if you do that.

      The one thing any indie developer needs to understand is that it's about just doing with what you have. Don't worry about targeting every platform under the sun, just pick what you know best and run with it, and if you do finish something, if you do end up with a game by the end of it that's decent then you'll be raking in enough money to worry about creating a beautiful cross platform native compilable wonder afterwards.

      I'd wager anyone who thinks "all games are written in C++", or that "C# is too high level for games development" hasn't actually done any games development and doesn't know the industry. Even some of the big boys are moving away from low level cutting edge C++ in many cases now, performance of high level JIT compiled languages has pretty much reached par with native anyway, the industry has changed, and even large studios have started taking notice.

      In fact, in relation to indies, just about all succesful indies that have actually released something in recent years have used managed code, for C# there's Fez, Terraria, Super Meat Boy, Bastion, Magicka, Schizoid, Dishwasher, for Java there's the obvious - Minecraft. I think this really highlights how important managed languages actually are to indies, the speed of development they offer has in many ways been the enabler of the indie movement in the first place.

    15. Re:mess around in unity3d by Xest · · Score: 1

      MonoGame is a drop in replacement for XNA and it's actively developed by people who are themselves game developers. It even has some commercial PS4 releases to it's name.

      I was skeptical at first, but I've started playing with it and it's absolutely excellent. Most definitely fit for rapid high quality indie game development.

    16. Re:mess around in unity3d by eulernet · · Score: 1

      While I agree with some of your arguments (yes, it's nice to have an easy to use language), you are too focused on delivering fast.
      When you are a hobbyist who would like to create your own game, what you need is not to deliver fast, but to deliver something really new and creative.
      If you really want to quickly deliver a game, why even bother writing in C# ?
      You can use a game framework, and you may be able to publish a game in a few weeks of work.
      The problem is that if you do that, you'll get a game similar to thousands of other ones.

      What you really need is an engine that is easily configurable in order to add some customization.
      So any language will do as long as you can put your hands into the engine and be able to modify it.
      So the real question should be: what engine will allow me to create this kind of game ?

      About performance, I coded games on consoles during 20 years (in C/C++ and Assembly) and I'm currently working in C# since 10 years.
      Performance in C# is quite good as long as you don't have to care about memory, but that is not the case of mobile phones and consoles.
      Of course, if your target is PC or a system that has several gigabytes of memory, C# is excellent.
      But if you are targeting something smaller, C++ and probably Java are your best choices.

  8. Re:It's too slow. by sideslash · · Score: 1

    I would say that this AC was either trolling or clueless about software optimization.

  9. Unless your platform requires C# by tepples · · Score: 5, Informative

    Everyone I know that tried it, gave-up on it.

    Except for those people who had to target a platform that requires verifiably type-safe CIL that targets the .NET Compact Framework. Xbox Live Indie Games was this way, as was Windows Phone 7. Practically the only language that produces such bytecode is C#, as standard C++ as compiled by C++/CLI is not verifiably type-safe and IronPython requires Emit which isn't part of the Compact Framework.

    the C++ code ran on a server instead of a desktop OS like C# requires.

    Windows Server is a server operating system whose NT kernel is inspired by the architecture of Digital's VMS. It runs C# in the .NET Framework. FreeBSD is a server operating system. It has a port of Mono, a .NET Framework workalike, called BSD#.

  10. Re:It's too slow. by Anonymous Coward · · Score: 1, Informative

    Sounds like you're a shit programmer. You should stick to COBOL.

  11. Re: It's too slow. by Anonymous Coward · · Score: 0

    What?

  12. Re:It's too slow. by Anonymous Coward · · Score: 0

    that is probably because you had C# manipulating the data, instead of the database where it belongs

  13. Head First C# by __roo · · Score: 5, Interesting

    Warning: this is blatantly self-promotional. It's also a pretty good answer to the question, I think, so hopefully I won't get violently modded down.

    It sounds like you're exactly who Jenny Greene and I wrote Head First C# for. I played around with a lot of different ways to teach both C# language and core object oriented programming and computer science concepts, and I found that building games was easily the most satisfying way to do it.

    The only way to really learn a language is writing a lot of code, and one of the biggest challenges I had putting the book together was coming up with many different projects. The answer was games: a card games, a turn-based game, arcade games -- it turns out that building a game is a great way to keep readers motivated, especially when they're learning new concepts. I've had a lot of really positive feedback from first-time programmers who found it really satisfying to get through the book, and especially building the final project (a retro Space Invaders game).

    You can download a free PDF of the first three chapters of Head First C# from the O'Reilly page and see if you like it.

    1. Re:Head First C# by Anonymous Coward · · Score: 0

      I've picked up the Head First books on HTML5 and the more recent one on JavaScript. They are truely great.

      I have no experiance with the C# Book, but if it holds true, then it's most defently worth your time to download the first three chapters.

    2. Re:Head First C# by Anonymous Coward · · Score: 0

      Nothing against the authors, but I find the Head First format infuriating. They try sooooo hard to keep your interest and keep you on track so you don't get bored while reading a dry computer text.

      Unfortunately, I'm the kind of reader who learns best by jumping around a lot - I like to skim over the headers, read the captions on the illos, look up terms in the index etc. This reinforces the concepts so that when I dig into the section text, I'm well prepared.

      Head First books are almost impossible to read this way. 'A' for effort, but they are definitely geared toward a certain type of reader.

    3. Re:Head First C# by fldsofglry · · Score: 1

      I really enjoy the Head First Series of books. Head First C and Head First C# are great!

    4. Re:Head First C# by Anonymous Coward · · Score: 0

      holy fuck it looks like someone has ADD and just spews a bunch of shit all over the page. I got a headache after reading 5 pages. I am sure the content is good but all the drawings, arrows, different sized text, different fonts, gives me a brain aneurysm.

    5. Re:Head First C# by Anonymous Coward · · Score: 0

      Kudos for writing a book at all.

      But please stop. That book is for brogrammers with the attention span of a gnat. We don't need more of this, we need more people who have balls, design skills, understanding of the principles of maths, stats and computer science, and for whom collaboration means filtering input, taking on board useful information and giving credit, rather than forming committees and asking everyone else what they should do.

      Not code monkeys who transcribe bad requirements into soggy messes of applications that pull in every library under the sun and "demonstrate" the topics in your book.

    6. Re:Head First C# by Anonymous Coward · · Score: 0

      I did not like Head First C#. The marginalia was too distracting. I would of preferred to draw/write my own comments in the text.

    7. Re:Head First C# by __roo · · Score: 1

      Thanks!! It's super gratifying to hear that! :)

  14. C#? by Dan+East · · Score: 5, Interesting

    Why C#? Develop your game in C++ using OpenGL ES for rendering. Your code will compile as-is for iOS, Android, Windows, OSX, and others. You will only need a couple hundred lines of native code (java for Android, Objective C for iOS, etc) to handle events and pass execution into your C++ code. My game engine runs on all the above platforms and 99.9% of my code is shared across all of them.

    Also, these days many, many developers simply use an existing game engine and only bother with the high level code specific to their game. Mundane stuff like the low level rendering, Audio APIs (which unlike OpenGL ES, differ quite a bit from one platform to another), physics, etc, is ground that's been treaded several thousand times nowadays, and most game developers leave that stuff to the experts in the various fields to handle the nitty gritty. Optimization of those routines is usually where the "expert" part comes into play.

    I work with a game designer / artist who implements all the high level game stuff in Lua, and my engine takes care of all the aforementioned "boring" stuff, freeing him up to actually develop games, and not worry about crap like polygon tessellation algorithms and tons of other very boring stuff that would just be a waste of his time.

    --
    Better known as 318230.
    1. Re:C#? by ncmusic · · Score: 1

      You mean high level like http://unity3d.com/unity ?

    2. Re:C#? by Anonymous Coward · · Score: 1

      lol, are you kidding me? C# runs on all major desktop, mobile and console platforms. And so does unity and it's tightly integrated with c#

    3. Re:C#? by Anonymous Coward · · Score: 0

      I hate to say +1 but +1.

      Don't be locked in to Microsoft. Use C or C++. Take an online course or read some texts. Browse the web to see what tools are available. Decide whether to write your own game engine (a lifetime sort of task) or use and extend the best you can find for free.

      Once you have done all that, when you hit a problem, you won't know instantly how to fix it, but you will remember where to look. Do more research then, so as to not re-invent the wheel.

      New stuff (languages and tools) is always coming out. Some of it is worthwhile, but some of it is done by people that just want a new thing whether it is better or not. Don't get caught in the "If I only had new tech XYZ this would all magically code itself."

    4. Re:C#? by Anonymous Coward · · Score: 0

      Unity uses c# and can target all of those platforms along with browsers (via a plugin). A novice should start there. Telling him to start with OpenGL and c++ is really bad advice in 2014.

    5. Re:C#? by Anonymous Coward · · Score: 0

      Use C or C++.

      As much as I'd like to, C/C++ is so heavily fragmented that it's rather annoying to get something crossplatform to an acceptable degree. One has to use and setup ./configure, which allegedly detects what's broken with your platform and applies workarounds - and then runs make. I'd instead prefer being able to simply run make without worrying about whether or not my C/C++ system library is functional.

      To experience first-hand of what I encounter - try compiling MinGW/MSYS packages for MinGW/MSYS. Some of them error out mid-way through the build, some are functional, and some get a whole string of error messages. One of the most common problems is missing EILSEQ - this is missing in MSYS but is requires per the 1994 Ansi C amendment.

      Aside from that, it works perfectly once you clear that hurdle.

    6. Re:C#? by Anonymous Coward · · Score: 0

      Develop your game in C++ using OpenGL ES for rendering. Your code will compile as-is for iOS, Android, Windows, OSX, and others.

      Counter examples for code working as-is for iOS, Android, Windows, OSX and others:

      • Grep-2.20: When downloaded from http://ftp.gnu.org/gnu/grep/ - it contained a modified version of isatty() that had a optimizationshortcut based on the file handle - if the low two bits were set, it was a tty, otherwise it was a file redirect. This broke on Windows 8.
      • Cmake-3.0.0: Compiled cleanly under Cygwin, but not under MSYS. MSYS was missing inttypes.h or stdint.h
      • Gettext-0.19: Only compiled under Cygwin, not with MinGW/MSYS. The documentation they provide is outdated, recommending to use depreciated -mno-cygwin
      • Angband-3.5.0: First, added -mno-cygwin (and errored out) because I forgot to add MINGW=yes to the commandline. Then the compilation failed because of #include<io.h> - MinGW's header breaks if you use -ansi or -std=c99. Then, struct stat wasn't properly defined.
      • These three packages are things that are allegedly cross-platform, yet trivially break as if the build meta-environment is as stable as a house of cards. It doesn't help that the build environment isn't stable either, considering MSYS doesn't even implement ANSI-requirements such as errno.h's EILSEQ.

        And yes, I am recording this in a log. Whether I should fix MinGW/MSYS/Cygwin or instead fork it will be determined later.

    7. Re:C#? by Anonymous Coward · · Score: 0

      Why C#? Develop your game in C++ using OpenGL ES for rendering.

      Because he doesn't know C++ and because he'd spend about 5 times as long just learning the basic language to become proficient enough to work with C++ versus C#, since C# is a much more newbie-tolerant language. Because 99% of games developers don't actually need to use the features you gain by talking to OpenGL directly but would be much better off working with one of the pre-written 3D engines, of which Unity3D is rapidly becoming the de-facto standard for indie developers, and is designed to be programmed via C#. And because most programmers are of the opinion that they are more productive working in an environment with automatic memory management (although experienced C++ programmers may find that this isn't the case, it takes many years of practice at using C++ to become good enough to be able to avoid memory management issues, in my experience).

  15. Take a free class by Anonymous Coward · · Score: 0

    Like this one coursera or you could check into one of the many free game engines like these: develop-online

    1. Re:Take a free class by UnknownSoldier · · Score: 4, Informative

      Three of us took that "Beginning Game Programming with C#" Coursera course. Two of us were professional programmers (myself a professional game developer) so we blew through the course; our third was a gaming buddy who wanted to try out programming -- he was an excellent gamer but had never done any programming. (Back in the day he had done a little shell scripting on Windows.)

      The coursera is NOT a beginner friendly course -- it had two major problems:

      * it teaches concepts in the wrong order, and
      * doesn't explain key critical concepts at all, or extremely poorly.

      My buddy dropped out after a few weeks because he just felt completely lost. We would spend hours going over concepts with him and he would get most of it. But when it came to the assignments he didn't have enough of the big picture and low level details to reason things out. IMHO there are better lessons out there, such as:

      * http://www.codecademy.com/
      * http://learn.code.org/hoc/1

      Which is a shame too, because the professor is actually friendly, and has good intentions.

      MOOCs are "famous" for having a 98% drop-rate. Seriously, like 20,000 students signed up. Very few made it to week 5.

    2. Re: Take a free class by AnthonyTurner · · Score: 1

      That is the reality of computer science. In my first semester of college, there were about 20 students in the Intro to Comp science class. By the next semester, there were maybe half or less left, and by the third semester, there were only about 4 of us left.

    3. Re:Take a free class by Anonymous Coward · · Score: 0

      Also check out Stanford's CS classes offered by iTunes U. A good teacher can make a big difference. Yes, they're a little bit boring compared to "make a fantastic iPhone game in six weeks!!!" kinds of classes, but you actually feel like you're doing some learning and not just trying things out.

  16. Swift! by Anonymous Coward · · Score: 0

    If your going to learn a proprietary language from scratch to program games you might as well learn Swift. Your game will perform better and be playable on more devices. Cocoa/iOS have great APIs for what your trying to do.

    1. Re:Swift! by Anonymous Coward · · Score: 0

      You might as well try to learn English too while you're at it.

    2. Re: Swift! by Anonymous Coward · · Score: 0

      Someone made a typo! Now I too can make a "witty" comment on the internet!

    3. Re:Swift! by master_kaos · · Score: 1

      At least his sentence compiled, but a little more debugging may be required.

  17. Play with Unity3D by sideslash · · Score: 1

    You start out saying that you have no real programming experience, but at the end say that you feel like you have a good foundation to build on. I think that is a contradiction. Serious game development benefits tremendously from a deep knowledge of computer science, and you are likely to struggle to accomplish much without a solid foundation in programming.

    With that said, I suggest you download Unity3D and play around with it. You can do a lot purely visually, and knock yourself out with as much C# scripting as you feel like doing. In my opinion, it's both a low barrier to entry and a great option for you to quickly put together something much more than the OpenGL/DirectX equivalent of Hello World.

    Disclosure: I am currently developing a cross platform MonoGame based game written in C#.

    1. Re:Play with Unity3D by Anonymous Coward · · Score: 3, Informative

      Yep,
      Unity - you would be surprised how many commercial games are using it. Several new independent titles like Wasteland 2, Torment: Tides of Numenera, Castle Story, Kerbal Space Program. Runs on Windows, Mac, Linux, iOS, Android. I also heard that over 50% of the mobile games are using unity (check out "The Room" and "Temple Run" for examples). The scripting language is C#. The workflow is tailored to the visual assets, so it is perfect for someone with your background. The unity engine does a lot of the work for you, so you can accomplish quite a lot with not a lot of scripting.

    2. Re:Play with Unity3D by Shaterri · · Score: 3, Insightful

      To reinforce this: Building your own engine is a great way to fall into a trap that you won't escape for years if not decades. If you're interested in building a game, then you should build a game, and use the toolchain that lets you get to your game as quickly as possible. Right now that's a race between Unity and Unreal Engine 4, and while neither one has perfect support, I'd say the userbase for Unity is sufficiently deep that it's a better starting point. Don't worry, you'll still get plenty of opportunity to code (and to learn C# - another reason to go with Unity over UE4, if that's the language you really want), but there'll be enough that you don't have to code that you can focus on the fundamentals of building your game.

    3. Re:Play with Unity3D by sideslash · · Score: 1

      To reinforce this: Building your own engine is a great way to fall into a trap that you won't escape for years if not decades.

      Hahahaha - I resemble that remark!

    4. Re:Play with Unity3D by Anonymous Coward · · Score: 0

      Also Cities in Motion 1 & 2, Sir You Are Being Hunted and, Jazzpunk.

      Just remember that using Unity instead of native engine will increase your game's system requirements by some amount. You can forget customers who have only so-so hardware (such as a Pentium/Celeron CPU and NVIDIA GT630).

    5. Re:Play with Unity3D by Anonymous Coward · · Score: 0

      Often, people say they want to build a game, but what they really want is to build game engines and libraries!

      I know. I spent my teen years on that and can pretty much code anything today. However, today I spend most of my time directing others instead. Being relatively young and knowing ancient stuff that is still relevant, provides a great fundament for that. Besides, I really think enterprise solutions for JEE and using javascript more and more sucks balls, so why would I spend time with details I disagree with?

  18. Re:It's too slow. by neminem · · Score: 4, Insightful

    I'm pretty sure the reason your payroll calculator written in C# was that slow had nothing to do with the .net framework and everything to do with something you failed to optimize in that version, but did optimize in the original Cobol version. Either that or you were running it on a way slower computer - a "desktop OS" rather than a "server", even though those terms are pretty meaningless and there should not be any reason you would have to run it on a desktop machine? Unless, of course, you're defining "server" as "machine that doesn't run Windows", in which case, that's pretty no-true-scotsman-like. You can make a plenty fast Windows server machine, then run headless, server-like C# programs on it.

    Yes, obviously C# programs aren't going to be quite as fast as equivalent c++ programs - you *are* compiling C# code to bytecode and then running it through a virtual machine, so of course it'll be a little slower. But only a little. I doubt you could write a balls-to-the-wall Crysis-like shooter in C#, but I don't imagine there'd be any performance-related reason you couldn't write an RTS in C# and have it run just fine on any machine not so old that its OS wouldn't support the .net framework anyway.

  19. C#? by Just+Brew+It! · · Score: 0

    While C# may get you ahead in the business world, IMO you really need to go with something more OS-agnostic unless you're OK with limiting yourself to MS platforms. C++ (or Java... maybe) and OpenGL are the way to go IMO.

  20. Do you even endofunctor bro? by Anonymous Coward · · Score: 5, Funny

    Forget C#. Start with Haskell and get a PHD in category theory and applied mathematics. Then study GHC internals for several years in order to figure out how to make Haskell fast enough for anything non trivial. Only approach game development once you have a solid understanding of GHC internals, endofunctors, lenses, monoids, monads, comonads, cofree, cofree comands, synergistic cold fusion, rankntypes, multi parameter typeclasses, string theory, functional dependencies, synthesized kinetic energy, generalized new type deriving, existential quantification, existential crisis, scoped type variables, GADTs, the space time continuum and have solved the halting problem. Also reimplement the entire standard library because the current one is terrible and horribly inefficient.

    Either that or pick up any of the few dozen C++, C# or Python game development books and start reading.

    1. Re:Do you even endofunctor bro? by Darinbob · · Score: 1

      I wondered a bit recently about "game programming" and what that really means. This morning on a radio show about maker fairs, one person said her young daughter was on a one or two week game programming camp. It really dawned on me that game programming just does not mean what I think it means. But guess is that the kids must be using pre-build gaming platforms and then scripting on top of it. Similar for the weekend hackathons, they can not possibly be writing a game from scratch, they don't have time to optimize any code, it takes at least a weekend to learn a new API even if it's at a high level. I wonder if people are getting an overly simplified view of what game programming really means, or worse, that programming itself is something easy (and which doesn't require extensive training and education).

      (and scientists have never actually been able to detect a monoid in a laboratory setting)

    2. Re:Do you even endofunctor bro? by pjt33 · · Score: 2

      It really dawned on me that game programming just does not mean what I think it means.

      Do you think it means AAA FPGs and RPSes? The vast majority of games are much smaller scale than that.

      It's possible that the game programming camp is setting the children up with a point-and-click game dev engine (although I hope not); but it might well be giving them a framework like PyGame and a lot of help to get a couple of simple 2D games running. If it fosters the kind of experiences that my generation had growing up in the early days of home computers, it's a good thing.

      Weekend hackathons, on the other hand, allow far more time than is necessary to get an alpha version of a simple game running. When I worked in the industry, I once put together an alpha for a word game in 2 hours. It wasn't optimised, it had one bug in the UI, it had placeholder graphics, and as we play-tested it we made major changes to the scoring system, but it was playable and enough fun to get the green light for further development.

    3. Re:Do you even endofunctor bro? by Anonymous Coward · · Score: 0

      Maybe you're just really out of touch? Most game companies do not start from scratch, but uses whatever engines they can get their hands on. Mostly they'll settle for just one engine if possible, or combine them in a standardized fashion.

      Now that commercial-grade engines are available free-as-in-beer, game development has truly arrived for the masses:
      http://unity3d.com/

      (I'm in no way connected to Unity3D)

      Remember, there are many ways to skin a cat. But starting by building your own knives is not optimal.

    4. Re:Do you even endofunctor bro? by darkgumby · · Score: 1

      I've got 7-9 year old kids writing games after a few hours of introduction to Scratch. Programming itself *is* easy (and which doesn't require extensive training and education).

    5. Re:Do you even endofunctor bro? by meustrus · · Score: 1

      It's possible that the game programming camp is setting the children up with a point-and-click game dev engine

      There's no better point-and-click game dev engine for learning than Scratch; if that's what they used, expect the kids coming out to have learned some of the logical skills involved in computer science. Syntax is easy if you've already got a good grasp on splitting up complicated problems into smaller ones, breaking smaller problems down to math and logic structures, and integrating many smaller components into a larger system, all of which is the core of computer programming and is what you learn in Scratch without worrying about syntax.

      --
      I sometimes ask revealing, often ignorant-seeming questions. Maybe they're harder to answer than you think.
    6. Re:Do you even endofunctor bro? by meustrus · · Score: 1

      Now that commercial-grade engines are available free-as-in-beer

      Free-as-in-FREE-beer! It doesn't make sense the way you say it! Beer is not automatically free!

      --
      I sometimes ask revealing, often ignorant-seeming questions. Maybe they're harder to answer than you think.
    7. Re:Do you even endofunctor bro? by pjt33 · · Score: 1

      When I wrote that line, what I really had in mind was a specific platformer-creation tool which was responsible for a rash of crappy games on Kongregate a few years ago, but I couldn't (and still can't) remember the name.

  21. C# MMO by Anonymous Coward · · Score: 1, Informative

    I was in a similar position to you a few years ago. Wanted to code up my dream game and C# was the obvious answer. I knew C and Java at that point, so I ended up learning C# and using XNA. I'd say that it's not a bad choice these days, but Unity3d is easier. MonoGame is a good library that is the spiritual successor of XNA.

    The issues of performance are an easy point to gripe about, but honestly I wouldn't worry about it too much. The advantages of a higher-level language offset the performance losses compared to C/C++. If you're going into this as a one man team, you should really focus on optimizing for development time instead of performance. You can optimize your code when you start to need it. Check out /r/gamedev there are a lot of really good people there that can help you with planning this out.

    If you want to check out my project, it's at http://spacerambles.com/

    1. Re:C# MMO by freeqaz · · Score: 1

      This is me on my actual account. To follow up, for cross-platform support you have Xamarin's tools which I've used in the past. Really depends on your priorities.

    2. Re:C# MMO by Molt · · Score: 1

      Microsoft are no longer actively developing XNA, and haven't been for quite some time now. Better to go with something which is going to support the systems which will be available when your development's finished.

      --
      404 Not Found: No such file or resource as '.sig'
    3. Re:C# MMO by Anonymous Coward · · Score: 0

      I'm been working on something for over a decade. I started off in c++, then switched to c# and xna. I'm still working on it and wondering where to go next - I don't like the idea of going back to c++. I looked at c++ and directx11 in visual studio 2012 and hated it, if anything c++ seems to have gotten even uglier or perhaps my memory is playing tricks on me.

      Anyway, do you have any suggestions on a replacement for c# and XNA?

      I tried unity and even though it's great it's not for me and I hated debugging in it. I tried sharpdx and it's not bad but there's just not enough documentation for it (They say it's almost identical to to c++ and dx butthe little details kill you, also there are breaking changes between versions and you either update and try to work out why your code doesn't work or don't and get left with an old version.)

  22. Teach yourself by michael_rendier · · Score: 1

    you have your game...what's the first thing you're gonna need to program? (I needed a GUI for a project of mine...teaching myself python...started there) Ask google how to accomplish this. You may end up spending time in and around the stack exchange sites...and as each 'challenge' arises, you dig around and find out how to write it yourself, and in the process, slowly teach yourself c# (or any other language for that matter)...the important thing you already have, is familiarity with object oriented programming...the rest is just syntax. You're likely to get better results that way. Also as you spend your time sifting through answers on google, you'll likely come across peoples suggestions for reading or teaching etc...good school sites, sites bent on game creation and language of your choice...

    --
    There are three kinds of people in the world. Those that can count, and those that can't.
  23. Re:It's too slow. by The+Mysterious+Dr.+X · · Score: 1

    I just want to make sure you're trolling. You are, right?

  24. Re:It's too slow. by jd2112 · · Score: 2, Informative

    C# is typically slightly slower than Java so....

    Citation please? In my experience C# is somewhat slower than native code but much faster than Java.

    --
    Any insufficiently advanced magic is indistinguishable from technology.
  25. Choose another language by richardtallent · · Score: 4, Interesting

    I love C#. I program in it every day. It's plenty fast, and it's a great language.

    However, there are two reasons I would suggest looking to another language.

    First, the hottest market for gaming right now is mobile. While it's possible to compile C# for iPhone or Android using Xamarin (along with Windows and OS X), it's not exactly a native experience.

    Second, C# (like O-C, C++, etc.) is a general programming language -- it's not in any way specific to the domain of game programming. So, while it's *possible* to design complex games in any modern language, you're probably going to spend *way* too much time dealing with silly stuff like tracking graphics resources and animation loops and simulated physics. You'll have a higher chance of success if you use a language and platform that is more game-specific out of the box.

    I would suggest looking into Swift -- it'll give you access to the lucrative iOS market, it's C-like, and it has features that are game-specific. Sure, it's a new language it doesn't compile to Android, but by all accounts it looks like a great language with first-class support for gaming, so you can focus less on infrastructure code and more on the game.

    Another option would be HTML5. Depending what sort of game you're looking to build, Javascript and HTML5 may be just the ticket, and there are a number of libraries that can abstract away browser differences and assist with the plumbing needed to make a game run.

    1. Re:Choose another language by Anonymous Coward · · Score: 1

      I would suggest looking into Swift

      You're either trolling or you're retarded. Which is it?

    2. Re:Choose another language by Anonymous Coward · · Score: 0

      You're either a Microsoft shill or an Android fanboy. Which is it?

    3. Re:Choose another language by shutdown+-p+now · · Score: 1

      What's non-native about Xamarin? It gives you a higher level language, but it still exposes the native platform API directly. To the user, a Xamarin app is native.

    4. Re:Choose another language by Molt · · Score: 1

      A lot of the mobile games are written using Unity which allows C# to be used on all platforms, from mobile, through PC, and even consoles if you have the dev license for them.

      The only issue with Unity is if you need the Pro version be ready to pay some serious money, but for a lot of mobile games the Indie/Free version is fine.

      --
      404 Not Found: No such file or resource as '.sig'
    5. Re:Choose another language by Anonymous Coward · · Score: 0

      ... and it is compiled into native code, so Xamarin app is a true native app.

    6. Re:Choose another language by shutdown+-p+now · · Score: 1

      So far as I know, it only (pre)compiles into native code on iOS - on Android, it's a full-fledged VM with a JIT.

      But then so is Dalvik, so one could argue that it is at least as "native" as Java Android apps.

    7. Re:Choose another language by Anonymous Coward · · Score: 0

      As a Xamarin user, I can confirm that Xamarin is essentially a toolkit which bundles Mono for your desired platform, with a .NET wrapper for the native API (other than VS integration that is what people are really paying for). I would broadly agree that philosophically there is little difference between Java running on Dalvik, and Xamarin compiled .NET running on Mono. Word of warning though, when you want to interface with the usual OS and pass around common UI components, callbacks, etc.. this does require the use of automatically generated wrapper objects which marshal calls between the two VMs. I have not had any major performance issues with this, but it does require an appreciation of the relevant object lifecycles when you have memory management shared between these two frameworks. My main issue with Xamarin for this kind of experimental work is the price-point, it is a large outlay for a single-user 1 year subscription, and some of the marketing around the product is disingenous.

      To qualify that, the Xamarin website claims it supports WCF, but if you want to use anything other than half-duplex basic HTTP interfaces it simply will not work - it is not supported - the API wrapper does not include the relevant classes - it is a lie.

  26. XNA by ZeroSerenity · · Score: 1

    Might be depreciated but it's tailor made for C#. Go look it up.

    --
    For those who seek perfection there can be no rest on this side of the grave.
    1. Re:XNA by Anonymous Coward · · Score: 1

      But first, you go look up "deprecated" and "depreciated" in the dictionary.

  27. Re:It's too slow. by Opportunist · · Score: 1

    Considering that he's a beginner: Badly optimized C++ code is slower than well optimized C# code. Or, in another way, if you're new to programming and optimization is the least of your problem (because getting that damn thing to compile and do what it is supposed to do is a much bigger one), it doesn't really matter that much...

    One thing has to be said for C#, as much as I am a subscriber to the "If C is Play-Doh, and C++ is Lego - C# is Duplo" philosophy, it does allow to get results fast without having to use a ton of libraries that in the end weigh you down more than C# would.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  28. Start with the engine by Anonymous Coward · · Score: 2, Interesting

    Pick an engine you want to use first, then pick a language to learn that is used by that engine. Very few games now are written purely in a native language with no supporting engine, so pick a modern game engine that will do a lot of the hard, low level work for you. Then, learn the language that is used for interacting with the desired engine. For example, if you wanted to use the Unity engine, then you would basic learn C#. If you wanted to use CryENGINE, then you would learn C++ and Lua scripting. If you wanted to use the Unreal4 engine, then you would learn blueprint visual scripting and C++.

    Once you know the engine and language you need to use, then pick up a book, take a course, etc... There are lots of ways to learn a language, but the most important thing is to practice, especially in the environment and engine that you plan to use. Each of the engines have extensive documentation on how to program for their engine and interact with the game assets.

  29. Patterns by CODiNE · · Score: 4, Informative

    http://gameprogrammingpatterns...

    This site takes a subset of the "Gang of Four" patterns and explains how and why to use them in your games.

    You'll especially enjoy the command pattern which will be heavily used in an RPGSgame.

    --
    Cwm, fjord-bank glyphs vext quiz
    1. Re:Patterns by mistshadow · · Score: 1

      I would also recommend this; well-written introduction, and talks a lot about the systems-issues that come up in games programming as well.

    2. Re:Patterns by Anonymous Coward · · Score: 0

      This site takes a subset of the "Gang of Four" patterns and explains how and why to use them in your games.

      Not joking around here, but I hadn't heard "Gang of Four" used since the 80s -- because when I read this paragraph, my immediate reaction was "what do Chairman Mao's cohorts have to do with programming languages?"

  30. There is no such thing as "Learn Game Programming" by goruka · · Score: 1

    The best way is to make games first, then see what language do you need later. Most games do not even need something such as C# and what might seem as " more powerful" can also be seem as "more wasted time doing something more complex than needed".

  31. Re:It's too slow. by ericloewe · · Score: 1

    [Citation needed]

    If anything, they should be comparable.

  32. Don't focus on C#, you want game dev methodologies by Anonymous Coward · · Score: 0

    (Currently a CS undergrad with a deep love of games. Highly inexperienced, but I hope you'll find something useful here)

    I understand some of the problems with wanting to make your own game. That you've chosen a language is a big first step. I can only assume you've decided not to go with a game engine like Unity3d and you have your reasons for that.

    So I'd suggest this old book that I really like, it's called The Black Art of 3D Game Programming. http://amzn.com/1571690042 It's from 1995 but a lot of the basics are still the same. You just have to take it as a mini-primer. There's plenty of good information there if you're willing to dig through it.

    There's a lot of other books that will get you going with a basic understanding of what the game engine is going to need. Basically, you need to handle graphics, sound, events, user interface and probably networking.

    How you build those is really up to you.

    There's a book I have heard good things about but I never have the money or opportunity to look at it: Game Coding Complete http://amzn.com/1133776574

    I suggest trying that. Don't worry if the code in it isn't written in C#. If you pick up a little C or C++, translating it to anything (java, javascript, python, or c#) is really trivial.

    Good luck!

  33. Re: It's too slow. by Anonymous Coward · · Score: 1, Insightful

    Ok. I'm going to make wild ass guesses here.

    1. Your company was using COBOL-based payroll system. FROM WHICH:

          a. Your company is not in the business of writing software for sale to others. They're not software engineering experts.

          b. Your company's business process changes very slowly. It is not a dynamic working environment. Slow growth, if any, OR

          c. Your company's business is highly regulated.
    2. Your management is fairly conservative.
    3. Management does not know, value or do a particularly good job of using technology to increase productivity and automation.

    This kind of environment isn't a preferred opportunity for highly skilled, creative software engineers. Your engineers were likely average or low-average talent. Probability. Not fact. That's OK. Not everyone is a superstar. It doesn't take superstars to get the job done. It just takes work.

    People who really understand how to work in COBOL have a set of patterns and ideas about software engineering that is a lot different from
    the usage patterns in which Java and .NET were designed to perform well.

    I'm not saying that there aren't plenty of engineers who "get" COBOL who also "get" .NET. It's just that gaining expertise in those to skill sets come from divergent experiences.

    Finally, it's just not that hard to do things with .NET and Java that make it be slow. They're garbage collected and safety checked. Sometimes that hurts.

    So, bottom line, your software engineers probably used C++ to construct a system that was likely structured a lot like the COBOL system was structured. It's safer to do it that way.
    And likely, some of that structure and a few of the idioms they used within it were killing performance on .NET. .NET and Java are awesome platforms. They have limitations. It's not always clear what they are at first glance.

    The good news is that most of the time, you can get a lot of performance gains for not much work if you just sit down and do it methodically.

    Finally:

    There's a lot of games out there with core logic and game engine type stuff written in C#. The graphics, IO, Sound systems are the ones that have to perform fast.

    When you want to push a lot of bits, code closer to the hardware. When you want to do a lot of complex logic, give yourself some help with higher abstraction.

    Good luck.

  34. Re:It's too slow. by AnthonyTurner · · Score: 4, Interesting

    I'm currently using C++ for developing an RPG, and I would recommend it over C#. I don't know much about C#, butI have coded in it a few small programs. C++ is very well known in game development. I would recommend it and a framework such as SFML or SDL. Once you get more familiar with these, you can move onto learning Directx3D and OpenGL. Learn about Game States (I just learned this the other day and it drastically makes management of game code so much easier), game timing, game loops, Isometric games, sprite-sheets and tiling. The latter two are important for 2D games and since you are building a RTS, It may be essential for you. I know you are not doing a RPG game, but a lot of the material can be used for an RTS. I'm following a book called Programming Role Playing Games in Direct x, it's not for beginners, but it has valuable information on gaming algorithms for Enemy AI, Game States, Game loops, etc. I would recommend checking out Coke and Code ( type that into Google ). I think the same person also released a Youtube RPG tutorial series. 3DBuzz has some tutorials, but some are paid. There C++ one also does a RPG game. SFML Made Easy is another series on Youtube that is really good. It wont be an easy task, just start small, take your time, and don't do too much at once. Start with just getting a character walking around on a screen ( this will require animation frames, so look that up ). Understand the update() and render(), calls in a game loop.

  35. Unreal 4 by alteveer · · Score: 5, Insightful

    My advice, as a professional game developer, is "don't write code unless you need to."

    If you must write C# you should take a look at Unity, but honestly you would be remiss if you overlooked Unreal 4. It is the newest version of the Unreal Engine, and it includes most of the most important features of a game; behavior trees, navigation, user interface, physically-based rendering, animation state machines, multiplayer replication, etc. You can do most of what you want to in Blueprint (a visual scripting language), and if you really need to, you can edit the source code (the license is a full-source license) and make what enhancements you need in C++.

    Writing most of this shit from scratch will take you years, just get down to the actual MAKING of the game, and use someone else's engine. The terms are fair ($20/mo, 5% gross revenue for PC platforms and mobile), and the engine is extremely well curated.

    1. Re:Unreal 4 by alteveer · · Score: 1

      P.S. anonymous reader: you don't know what you are getting yourself into. I wish you luck, but honestly unless the exercise is academic, at least use Monogame (http://www.monogame.net/) if not a real, fully integrated, third-party engine. Seriously, then you will actually get to do game programming and game design.

    2. Re:Unreal 4 by Molt · · Score: 1

      Agreed. Writing a game is something that one enthusiastic developer can at least sensibly aspire to in their spare time, trying to build a game on top of a custom engine is something else entirely- the amount of rendering code, tools, integration, and other side tasks just pile up too quickly.

      --
      404 Not Found: No such file or resource as '.sig'
  36. Re:It's too slow. by Jane+Q.+Public · · Score: 2

    C# is typically slightly slower than Java so....

    Which means, just as GP AC said, it's completely unsuitable for a "serious" game.

    What OP needs to learn is C, or at a minimum C++. Nothing else will fly for this application. Rudimentary games can be done in other languages, but anything that really needs fancy graphics or fast processing will need C++ or C.

  37. Re:It's too slow. by Anonymous Coward · · Score: 0

    Yes, I am.

  38. Keep dreaming but don't give up the day job! by mtthwbrnd · · Score: 0

    Let's get this straight. You have no programming experience and you want to make games. Well, I am a fat 42 year old without a drivers licence but I would like to become an F1 driver. We can all dream, but I am not going to post a question in F1 Magazine asking for advice on how to get signed up by a team.

    These days games are made by production companies. They have huge resources and budgets. This is a good thing. It means that the games are better than you would get from one guy sitting at home. No matter what language you use, you are never going to come up with a competitor to Gran Turismo or GTA et al. by yourself. Whole teams work on these projects for years. Even Jon Skeet could not do this.

    1. Re:Keep dreaming but don't give up the day job! by Anonymous Coward · · Score: 0

      These days games are made by production companies.

      And that's why, these days, most games suck.

    2. Re:Keep dreaming but don't give up the day job! by Anonymous Coward · · Score: 0

      There's still a place for the bedroom programmer, though the chance of making a living from it now is slight.

    3. Re:Keep dreaming but don't give up the day job! by St.Creed · · Score: 1

      The maker of Flappy Bird would like to disagree. So would Vlambeer Studio. And a whole host of small indy gamestudios.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    4. Re:Keep dreaming but don't give up the day job! by mtthwbrnd · · Score: 1

      What idiot marked my answer as "troll"?! You are the troll! trolling around slapping troll votes on answers that are not even slightly trolly. Nothing I said was trolly. I pointed out that making games these days is mainly carried out by large teams in a production company environment so Go F UR SELF FAGGOT.

  39. Re:It's too slow. by Anonymous Coward · · Score: 0

    You are troll sir. All our midle tier messaging and web services layer is built using c# and web api [with a mix of WCF] and it's blazing fast. I guess you have an incompetent programming team!

  40. Re:It's too slow. by Qwertie · · Score: 1

    C#'s speed depends on the coding style than on the language. If you know what you're doing, Microsoft .NET gets within 2x of C++ speed most of the time. Mono is substantially worse (have a look at these benchmarks, which focus on simple programs that are written in a "C with classes" style.) If you are using features like LINQ (considered a "must-have" C# feature) you'll take a performance hit, but when you write C# code as if it were C code then its performance isn't far from C. Luckily you don't have to write the whole program so carefully, just the parts that have to be fast.

    Games aren't just concerned with what is traditionally thought of as "speed", namely throughput; games are also concerned with latency. C# is based on Garbage Collection, and GC tends to add more latency than deterministic memory management (C/C++). Since writing games largely in GC languages is now a very common thing (e.g. Java on Android), I'm sure articles have been written about how to avoid getting bitten by the GC, but I don't have an article handy to show you.

    I doubt the OP wants to write a graphics engine in C#. I'm no game dev so I won't suggest an engine, but the point is, the most sensitive part of game performance tends to be in the area of graphics, and you probably can use a C# wrapper of a C++-based graphics engine, so that the overall performance of the game doesn't depend that much on the performance of the .NET CLR (but performance may be sensitive to native interop costs, which are not insignificant. Interop benchmarks are included in the link above.)

  41. Re:It's too slow. by alen · · Score: 1, Troll

    everything is faster than java

  42. Re:There is no such thing as "Learn Game Programmi by Darinbob · · Score: 1

    Then what are they built in? I've been wondering this because of a lot of stories and anecdotes about quickly built games, hackathons, etc. Is there some sort of "game builder" software that everyone uses, an update of RPGmaker that's actually useful, or...? Having been programming for 30+ years, I haven't seen any programming that is as easy as these hackathons or makerfaires seem to imply it is.

  43. You Already Know It by Jaime2 · · Score: 1

    I think it's interesting that you know Visual Basic, but want to get into C#. My first question would be "Why?". Both run on the same framework and both are equally capable. All you're doing is learning new syntax to do things you already know how to do. After that question is the comment "You pretty much already know C#". Sure, it's a different language from VB, but that's the easy part. It uses the same tools and libraries, so you know 95% of it already.

    1. Re:You Already Know It by Anonymous Coward · · Score: 0

      Visual Basic != VB.Net ...

    2. Re:You Already Know It by Jaime2 · · Score: 2

      Visual Basic went to .Net five versions ago. It was acceptable to take VB to mean classic VB in 2003, but in 2014, you have to say so if you mean the old stuff. The VB6 development environment doesn't even run on any supported operating system. VBA is still around, but it's always been incorrect to refer to VBA as VB.

    3. Re:You Already Know It by Anonymous Coward · · Score: 0

      Any real game code demos are in c#. Unity uses c#. When I interview .net developers if they list vb.net as their primary language (over c#) I pitch the resume. Fortunately this rarely comes up anymore.

    4. Re:You Already Know It by V+for+Vendetta · · Score: 1

      The VB6 development environment doesn't even run on any supported operating system.

      My Visual Studio 6 runs just fine on Win 7+8, thank you very much ...

  44. Get the best book. by DMJC · · Score: 0

    Get howto program Linux games, and get a copy of the OpenGL spec. That's about all you need. It tells you howto setup the engine for proper operation. Swap out the 2D renderer from the book with a 3D renderer you write yourself. Simple enough.

    1. Re:Get the best book. by Anonymous Coward · · Score: 0

      Oh boy, Linux gaming! The platform that brought you TuxRacer and xBill!

  45. This retarded idea again by Anonymous Coward · · Score: 0

    Making your own game isn't kid stuff. You've got to be prepared to take on a professional mindset when you are using professional tools, otherwise your efforts will be hurt (the whole affair will be a waste of life, you'll build false confidence by using the wrong skills, etc.)

    Here's a clue: programming language does not matter at all. The purpose of learning your first programming language is not to know the language, but to gain competency in expressing your thoughts in computer-interpretable written language through practicing writing in this language. All the major programming languages are the same exact thing, C, made with different ideas about what makes pleasant syntax and what 'extra features' are needed for modern code-writing. They all decide on pretty much the same thing.

    That being said, if you really want to be pro, you'll do all the work you can in C++. All the languages are basically the same, but C++ is slightly better in several ways.
    C++ will always be the best text-based interpreted programming language. It's lean, mean and everyone uses it. Java is proprietary bullshit, a dinovampire that should have had a stake through its heart 20 years ago. C# is the same thing but younger and from Microsoft. C is a dead language, the only use is writing for old hardware. Lisp and all the other gimmicky languages should never have been created. Python is trash. Fuck everyone who uses that shit.

    1. Re:This retarded idea again by Anonymous Coward · · Score: 0

      Are you a fucking moron? C++ is NOT interpreted. Nor is C DEAD by any means. The modern world is built on C. And Lisp? Every new wiz-bang feature these "modern" toys languages brag about, Lisp had 50 YEARS ago.

  46. Re: It's too slow. by halfdan+the+black · · Score: 1

    Once the app is up, if done right, performance can be decent for most things, pretty comparable to C++. The big thing is once it's up. The REAL killer of any c#/.net app (or any env that requires a VM like Java) is the load times. Even tiny c# apps take forever to load. So I would really recommend c++. I know if you really wanted you can do cross platform with mono but it's a lot easier with c++, especially if you use a framework like SDL.

  47. Re:There is no such thing as "Learn Game Programmi by St.Creed · · Score: 3, Informative

    Surprisingly enough, there is. A lot of game developers use GameMaker to prototype games. But some of them are good enough to be published on Steam straight out of Gamemaker. And it's simple enough that my 11-yr old has been using it for his own game.

    Disclaimer: my former prof built it.

    There's also Unity3D.

    These tools take away a lot of details that used to be 80% of the work, and leave you to work on the *game*, as opposed to rendering the screen without tearing or trying to get the audiobuffer to play without clipping, or... etc.

    --
    Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
  48. Learn something else by gweihir · · Score: 2, Insightful

    Unless you want to be locked in to MS? Learn, any of the things that also work on iOS and Android and you may actually end up with an useful skill.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    1. Re:Learn something else by Anonymous Coward · · Score: 0

      I have used a blend of C# and Java on Android and it worked rather well actually

  49. Re:You have to pay $$ to use C# in a game. by paulpach · · Score: 4, Informative

    I use unity. Like you say, if you make more than $100K per year, then you need to buy pro.

    But really, who cares? $1500 - $4500 (depending on what you need) is a very reasonable price for the tool, and an insignificant cost at that point. The cost of writing games is orders of magnitude higher than that, and Unity will end up saving you more in time than $4500 worth of programmer's time. They don't even charge royalty.

    Also, why a trap? The terms are clear and you know them up front. Nobody is deceiving you into paying for something you did not want. From my point of view, the terms are quite generous and reasonable, and if you don't think so, then you simply use other tool and this does not affect you

    If you have to pay $4500 because you are making $100K/year , it is a very nice problem to have :).

  50. Motivation? by mike260 · · Score: 1

    The fact that you're not already coding and Ruby couldn't hold your interest makes me wonder exactly what you want to do and why.

    If you plan to learn to code mainly as a necessary step towards creating your dream RTS then I hate to piss on your fireworks, but you're wasting your time. It's just way too much dang work and frustration for something you don't find interesting and exciting in and of itself.

    If I got the wrong idea and you do find coding interesting, forget about the RTS for a while and just worry about getting good at the basics.

  51. C++ C# by Anonymous Coward · · Score: 0

    I've messed around with various languages. Save yourself the time and trouble and go with C++. You will undoubtedly run into road blocks with C#. C++ is the king!

  52. Re:It's too slow. by Anonymous Coward · · Score: 4, Informative

    C# doesn't 'run through a virtual machine' - CIL bytecode is 'always' JIT compiled to native machine code in both Microsoft's .net platform and in Mono.

    The only overhead/problem here is quality of the JIT (you need only look as far as ECMA 262 to see how much difference that can make, eg: JaegerMonkey vs. V8), CIL JIT has type checking requirements - so there's once-off validation overhead for each JIT, and lastly unlike C/C++ your JIT compiler rarely has (or wants to have, due to memory and performance considerations) a complete view of the entire program - so you don't get anything remotely similar to link-time optimisations.

    That said - for relatively flat code structures - well written C# will JIT into, in many cases, identical instructions to what GCC/Clang/MSVC will do for equivalent C/C++ code.

    The primary differences are around exception handling and boxed types. Neither of which you're going to be using heavily in performance critical code segments in C# anyway - because all of them can be avoided with well written C# or some unsafe magic.

  53. Build a simple first game ! by eulernet · · Score: 5, Interesting

    The reason for listing that stuff out, is that I want people to understand that I know what I'm getting myself in to, and I'm not trying to put out a not-so-subtle "help me make a game for free lol" type of post

    I'm sorry, but your long list of "I did this and that" means only that you are a gamer with a few artistic skills, it has absolutely no value for game programming !

    During my 18 years of game programming, I met a lot of people that had "wonderful" ideas (it's funny how everybody has a dream game), but no skill to realize them.
    They always boasted about the fact that their idea was great, but their project never got released.

    Writing a game requires the following skills:
    1) technical skill: coding
    2) art skill: graphics/animation and sound/music
    3) gameplay skill: making the game enjoyable
    4) story telling: making a coherent game's universe
    In my life, I never met a single person with all of these skills, at a decent level.
    The most talented ones had only 2 skills.

    Firstly, before coding your dream game, try to write a very simple game. It will show you where you'll need help.
    If you are a beginner, you won't be able to code Starcraft.
    Try something related to your project, so you can increase your knowledge.

    Secondly, since most of the CPU power is spent on display and AI, you'll need to learn:
    1) how to optimize the display.
    Since the whole screen needs to be redrawn very frequently, you have to learn techniques to render fast.
    There are tons of techniques in 2D and 3D.
    2) AI algorithms, most notably path-finding algorithms if you want to program a RTS.

    Thirdly, try to build a prototype in one month.
    If you are able to build it in one month, you'll probably be able to work on your project during several months.
    It will also show that you don't lose yourself on details (non-professionals tend to waste their time on small details, thus the final goal disappears).
    If you are unable to build it in one month, it means that your project is not well defined, probably too ambitious or completely unrealizable.

    Fourthly, I would recommend to build a motivated team around your game.
    This is a virtuous circle: when your motivation will decrease, they'll encourage you and when they'll get demotivated, you'll encourage them.
    Nowadays, I believe that it's impossible to write a game alone, unless your game is very simple.
    Find people who believe in your project and who may help you.

    1. Re:Build a simple first game ! by Anonymous Coward · · Score: 0

      In my life, I never met a single person with all of these skills, at a decent level.

      While I agree that it's rare to find people with all the skills needed to make a game, it definitely happens. I work at a well known PC and cosnole game developer and we have many people who could individually produce a high quality indie game. Sure these people aren't word class in each of the areas you listed, but for the most part they are in at least one or two areas and they are proficient in the others. Having that level of breadth of skills is rare, but it's extremely valuable and I don't think the OP should be discouraged from working to develop it.

      Also, OP, ignore all the C# hate. Unity is a great game engine to use when you are working alone or in a small time and you value simplicity and productivity over awesome graphics running at a flawless 60fps. C# will serve you will building a game in Unity, and it sounds like programming is going to be one of your weaker areas at least at first so limiting yourself to a ready made engine and to a programming language that protects you from some of the sharp edges in C/C++ is not a bad choice. Tons of great games have been built on Unity in recent years and you are unlikely to find any of it's limitations to be an issue for the type of project you are talking about.

    2. Re:Build a simple first game ! by Barlo_Mung_42 · · Score: 1

      I first want to say that I agree with much of what you've said, especially about starting small.
      But...
      Notch has shown us (yet again) that #3 is really the only one that matters.
      Early Minecraft was not well coded. It still doesn't have great graphics or sound (though I do like the music) and there really isn't much of a story.
      You don't even have to play the story part of the game to have hours and hours of fun and Mojang is doing quite well for themselves.

    3. Re:Build a simple first game ! by eulernet · · Score: 1

      You are building a rule from a single example.

      Notch is an exception, and I have a famous counterexample: Carmack/Romero.
      Romero focused on gameplay while Carmack focused on technics.
      When they split, Carmack continued to produce hits, while Romero had a lot less success.

      What I wanted to say is that you'd better be excellent in a domain, but you cannot expect to succeed if you can't find people to address your weaknesses.

      About Notch, he focused on a concept, like some rare authors. I met 2 of them in my life, but I met probably 300 or more creators.
      I believe that the submitter doesn't even realize that he needs to acquire a lot of bases.
      Playing games and creating them require totally different skills.

      I agree with you on some points:
      1) the story: some games don't require a story, so if he writes a RTS, he doesn't need a story
      2) the gameplay: the most addictive games I played were really fine-tuned. I met only a few coders who were playing their game to fine-tune it perfectly.

    4. Re:Build a simple first game ! by jones_supa · · Score: 1

      Actually I think Minecraft has excellent graphics, the pixel art is very well done. That's all it targets anyway, not realism or high-poly models. The sound deparment...well, it's mostly pretty good, but some of the monster grunts have somewhat "homebrew" characteristics to them. :)

  54. You may be wasting time... by Anonymous Coward · · Score: 0

    By not using an engine, and writing it from scratch you may be wasting time you'd otherwise be spending on actual game content.

    If you want to actually make a game, rather than learn some language you should check out ready-made engines, for example http://springrts.com/wiki/About or any of the dozens RTS engines out there.

  55. Re:It's too slow. by mlw4428 · · Score: 2

    The performance reasoning may go away sometime soon. Microsoft has been working on a native compiler and has a preview for Windows Store apps. They've said they're bringing it to the full .NET platform. At which point you get all the performance of C++ with the benefits of a robust framework and a good language.

  56. Re:It's too slow. by Anonymous Coward · · Score: 0

    >What OP needs to learn is C, or at a minimum C++. Nothing else will fly for this application.

    Except for you know most major titles that have their own scripting engines built in, like Unreal and Cryengine. They can handle the C++ engine, rendering, AND running script, and do it efficiently enough to run on decent hardware....

    C# is just fine for many games.

  57. wrong by slashmydots · · Score: 1

    Don't learn C# for game programming. None of the major engines use it. Learn C++
    That's directly from one of the game designers of Ghosts.

    1. Re:wrong by Barlo_Mung_42 · · Score: 1

      I already know C++ and like it quite a bit but if you want to use C# for games you might as well give Unity a try. I've only worked on small projects (and as a one man team that's all I really can do) but it's fun and powerful enough for everything I want it to do.

    2. Re: wrong by ctid · · Score: 1

      "None of the major engines use it."

      Unity uses C#.

      --
      Reality is defined by the maddest person in the room
    3. Re: wrong by jones_supa · · Score: 1

      The Unity engine is written C++. Unity uses C# as the interfacing language.

    4. Re: wrong by Anonymous Coward · · Score: 0

      Unity uses C#.

      The Unity engine is written C++. Unity uses C# as the interfacing language.

      Like parent said, Unity uses C#.

  58. Re:It's too slow. by drakaan · · Score: 0, Troll

    Mod. Parent. Up.

    --
    "Murphy was an optimist" - O'Toole's commentary on Murphy's Law
  59. Some options by mjzemek · · Score: 1

    I once spent ~6 months making an RTS in C# and it was quite hard, but I had the basics - shooting tanks, pathfinding, economy, 3d maps. I did it in XNA with the help of Riemers tutorials.

    These days, monogame is now 'the C# way' of writing games. As a bonus you get multiple device support, but the the thing that is good for you is it's very like XNA, which until recently was the best choice, so all of the XNA tutorials still have relevance for you.

    Unless you are making a simple game, C# is not going to cut it. If you are making C&C1, then it will be ok, but if you plan to make Supreme Commander then you will need C++ for performance reasons. Still, you could get it up to a certain level with C#.

    I am a (perhaps obsessively) massive fan of the RTS Supreme Commander Forged Alliance and play daily on FaForever.com. In my mind the game is a technical marvel and recently I have come to understand how it is built, which may interest you. All of the hardcore processing is done in C++ (physics, pathfinding, 3D) and all of the game logic (eco, unit definitions, is a building finished, what can a unit do, ui) is done in LUA, which is like javascript. All of the LUA files are included in the game so you can see how they do things, but you can also edit it and change it. In fact you can rip all of the content out of the game and replace it with your own models, sounds, bitmaps, units, logic and behaviors. I think this could be interesting for you because you could actually implement your entire game now using their engine (it's called the moho engine) which would get your game up and running instantly (without having to spend 1 month just to get pathfinding working). You could never sell it this way, but in terms or rapid prototyping it's a great idea.

    I'm not sure if you've thought about it but you will be a) building a game engine and b) building a game that uses it. The first step involves crazy headaches and frankly, a level of programming that most developers never achieve. Why not skip it?

  60. Re:It's too slow. by digitalchinky · · Score: 0

    OP doesn't necessarily need to learn C or C++. The gap in other languages is closing faster than you might be aware. Have you taken a look at HTML 5 and canvas lately? There are a load of very detailed (fancy) 3D games using WebGL, not rudimentary at all.

  61. unity3D by Anonymous Coward · · Score: 0

    Do Not try to write your own engine. look for an engine with favorable licensing terms, good features, and a scripting language you are comfortable with.

    unity3D is written in optimized C and has scripting hooks in mono C#, plenty of options and plugins.
    http://unity3d.com/unity/licenses

  62. Want to learn how to make a game? Just do it. by Mystiq · · Score: 2

    I started by working with the Quake 3 engine and seeing what I could do to it. I wound up modifying the guns by adding new firing modes, modifying how the camera a little and learned how to add effects to the game.

    Then I messed around with the trigger editor in Starcraft.

    Then I messed around with the trigger editor in Warcraft 3 and made a lot more complex things, including implementing the character progression system from a single game from a popular Japanese RPG series -- which shall remain nameless -- in a tower defense map. (It was an awesome-bad project.)

    What did I find? This taught me the basics of game programming as well as a lot of about algorithms. It made me a better programmer. Then I made some Starcraft 2 maps, one of which was a port of a Warcraft 3 map. Then I said fuck this, and took the RPG I started in Warcraft 3, moved to Starcraft 2, and I now have a 2D RPG game engine written from scratch for PC that is well beyond the progress of either of the maps it came from. I would argue you don't learn to program games in a language. You just learn the paradigms used to make a game work, and then apply that to a language. You want to learn? Do it. Books may help if you get stuck along the way, but do yourself a favor and stick to libraries if they exist. No one wants to draw their own fonts or write a PNG loader.

    Although yes, you may learn some more about the language you're using along the way. I learned a lot about C++. Try to stick with learning to do things The Right Way (tm) and you will surprise yourself with what you learn. For the record, I wrote my own game engine because I wanted to learn how to do that. I sometimes wonder if I should have used a ready-made engine but the learning experience is massive, although I don't recommend it for everyone. I am quite insane.

  63. Subscribe to Unreal 4 by Anonymous Coward · · Score: 0

    Hi, I worked on big budget FPS games as a technical designer for 7 years, and went indie about six months ago, and am currently working on two funded projects.

    Unreal 4 costs $20 for a license with all source code. It includes C++ example projects for every major game type (FPS, Top-down, platformer, etc.), plus a metric shit-ton of free supporting assets and shaders.

    If I knew all the things you know, but had the hole in my knowledge you describe, UE4 is the very first place I would head to.

  64. Find a mentor, and write automated tests by complete+loony · · Score: 1

    Other people have suggested how to learn the basics of a language, so I'll ignore that problem.

    Designing and writing good code is an art form. There are many anti-patterns you may fall into that could doom your project that a more experienced developer can help you avoid.

    A couple hours a week spent explaining your design before you start writing code, or helping to track down why your code doesn't work as expected, or reviewing the code you believe is finished, will save you days of wasted effort.

    Structure your code so that you can write automated tests to cover *everything*. It will seem like a pain to start with. But once your project picks up speed, it will be invaluable to ensure you never break something that you know already works. Tracking down bugs in old code is painful.

    If you do this right, you will get into the habit of writing the tests first, or along side the code you are writing. You will find that you rarely run the code as a user would, because that just wastes time. And when you do finally run the code as a user, it just works.

    --
    09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
    1. Re:Find a mentor, and write automated tests by complete+loony · · Score: 1

      Oh, and point 1.5 should have been; Source control!.

      When you get something working, commit it. It's like the scientific method, if you can't reproduce something it doesn't exist. Source control gives you confidence to experiment, knowing that you can easily undo everything without losing something that you know works.

      --
      09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
  65. Coding = Practice, practice, practice by SirAudioMan · · Score: 1

    As someone who has been coding non-professionally for 20+ years as mostly a hobby (though I have developed a few apps to make my life easier at work) here is my advice:

    I started coding as a kid with QuickBasic, them moved on to VisualBasic (pre .NET), did some x86 assembly too. Back then I tried and tried to learn C/C++ over the years but never really liked it for some reason. I finally started with VB.Net 10 years ago. Initially I found it hard to make the move to .NET, but grew to really like it's power, bells and whistles. I didn't code for a few years, but did tinker around with PHP/Javascript which is a C-like syntax. This forced me into getting used to such simple things like brace brackets, semi-colons, etc, and I began to really like finding that switching back to the VB syntax was a bit of a pain (I kept adding those damn semi-colons at the end of each line!!!)

    About 5-6 years ago I finally started to make the switch to C#. I started with re-writing an app entirely in C# (previous version was in VB.NET). This allowed me to translate/transfer my knowledge to a new syntax as they are both very similar thanks to the CLI. Eventually I had completely moved over to C# and was loving it. Over the last few years I have been into programming in C/C++ for the Arduino/Atmega, which has taught me a huge amount about embedded programming and mostly how C/C++ manages memory (gotta love pointers). Nothing (except maybe assembly) forces you to understand memory management like coding in C/C++. I am by no means an advanced C/C++ coder, but I am getting stronger every day and love just how much control I have with it!

    Now my actual advice:
    Start with C/C++ because in my opinion it's the hardest to master and teaches you the 'nitty gritty' of coding without all the crutches of the other language like garbage collectors, type safety, exception handling, and fancy libraries. If you can learn to code in C, or more specifically C++ you will be able to learn anything easy. But do it the other way and you may struggle due to bad habits and crutches the other languages teach you! I wished I had started out with C/C++ way back when, however hindsight is always 20/20!

  66. Best Way to Learn C# .. by lippydude · · Score: 1

    C# is a multi-paradigm object-oriented programming language designed to totally lock you into Microsoft dot.NET ..

    1. Re:Best Way to Learn C# .. by Anonymous Coward · · Score: 0

      gee thanks for that useless comment fucktard

    2. Re:Best Way to Learn C# .. by lippydude · · Score: 1

      You're welcome, it's understandable why you would want to remain anonymous ..

  67. Re:It's too slow. by Anonymous Coward · · Score: 0

    Including a dead squirrel nailed to a tree.

  68. H1B and the will to work 60-80 hours a week no OT by Joe_Dragon · · Score: 1

    H1B and the will to work 60-80 hours a week with no OT pay.

    And you just need to be a sub par coder as well.

  69. Don't! by Murdoch5 · · Score: 0

    C# is one of the worst inventions in Computer Science history, you're better off using C and a graphics library.

  70. Unity3D is your tool by Anonymous Coward · · Score: 0

    As a game developer, I would suggest giving Unity3D a try. I've used it for a few years now for commercial and personal projects, and it's been great.

    You get a visual editor to compose your scene, you can program in C# or Java, it handles 2D and 3D equally well now, and it supports building for all platforms you would care to deploy to. Building a game engine from scratch will be a waste of your time, so use a tool designed to build games that doesn't sacrifice any of the power you're looking for.

  71. The very best book for C#? by Weaselmancer · · Score: 2

    Google.

    I'm 100% serious. I learned C# that way and wound up writing the application code for a product that sells for about 5 million a year.

    Here is your task, since you're interested in making games. Make a game of pong in C#. Use Google to look up how to do it. Start with a hello world program. Then make a program with a form. Then figure out how to paint to it. Keep going.

    At the end of the pong game you'll know enough to be dangerous. Good luck!

    --
    Weaselmancer
    rediculous.
    1. Re:The very best book for C#? by tomxor · · Score: 1

      Good advice, make pong then make something marginally more complex and repeat. Then when the OP knows enough he will probably have to re imagine his original concept anyway.

    2. Re:The very best book for C#? by SuiteSisterMary · · Score: 1

      I've been thinking about this, as my daughter has asked me to teach her some programming, and quite honestly, the progression of games in real life is perfect.

      Make pong. Make death race 2000. Make Asteroids. Make Space Invaders. Make Tetris. Make a platform jumper with static screens with transitions at the edges. Make a side-scrolling jumper. Keep working your way up.

      --
      Vintage computer games and RPG books available. Email me if you're interested.
  72. Re:It's too slow. by pete6677 · · Score: 0, Troll

    It would be hard to make a programming language slower than Java, even if you tried.

  73. Re:It's too slow. by stephenmac7 · · Score: 1

    No, it's not.

    --
    "No man's life, liberty, or property are safe while the legislature is in session." -- Judge Gideon J. Tucker
  74. Re:It's too slow. by Anonymous Coward · · Score: 0

    I get the feeling a large number of people aren't that in C# is you can link to external dll's written in C/C++. If you need speed that's one way to skin the cat. Some engines also use Lua for scripting.

    Other advantage of C# is you can do stack allocation if you want. That can lead to huge speedups compared to other languages that allocate everything on the heap. Go is another high level language that does stack allocation automatically. If an object or structure doesn't leak, then Go will usually allocate it on the stack.

    The other comment I have is Unity can be scripted in C# and Javascript and it's mostly free as in beer. Going that route at least you get something to play with up and working fast. Vs like what trying to write your own game engine from scratch, or trying to compile and muck with one written in C++.

  75. Re:It's too slow. by flargleblarg · · Score: 2

    It would be hard to make a programming language slower than Java, even if you tried.

    1996 called and wants its Java insult book back.

  76. Re:It's too slow. by Anonymous Coward · · Score: 0

    everything is faster than java

    Especially your mom.

  77. Re:It's too slow. by flargleblarg · · Score: 1

    One thing has to be said for C#, as much as I am a subscriber to the "If C is Play-Doh, and C++ is Lego - C# is Duplo" philosophy, it does allow to get results fast without having to use a ton of libraries that in the end weigh you down more than C# would.

    So in other words, C# gets results fast without having to weigh you down more than itself would?

  78. There is Coursera training for by I+will+be+back · · Score: 2

    Try Beginning Game Programming with C#
    About the Course
    The Beginning Game Programming with C# course is all about learning how to develop video games using the C# programming language. Why use C# instead of C++, Java, ActionScript, or some other programming language you may have heard of? First, using C# lets us use the Microsoft XNA and open-source MonoGame frameworks, which help us quickly develop games for Windows, Android, iOS, Mac OS, and others. Second, the Unity game engine is very popular with indie game developers, and C# is one of the programming languages you can use in the Unity environment. And finally, C# is a really good language for learning how to program.

  79. Re:It's too slow. by Anonymous Coward · · Score: 0

    This only shows how you're grossly incompetent at anything but COBOL. You would have failed equally well in any other language really. C# has its share of issues but speed isn't one of them, especially for LOB apps like payroll.

  80. Re:It's too slow. by SirSlud · · Score: 0

    Ding ding. Fuck, C# is fine and dandy and pretty fucking fast, if your target platforms and related asset and tool ecosystems are cool with it, and you're not boneheaded about what you're doing. Questions like these are so silly - if you do so much homework to know what you know and what you don't know, I'm pretty sure you're smart enough to find the right information, books, etc. What a passive aggressive inquiry. If you're convinced you can write an intelligently framed question with tons of context, then why on earth can you not do a little google mining for books that focus on C# game development? This discipline is hardly a secretive cabal.

    --
    "Old man yells at systemd"
  81. Re:It's too slow. by Anonymous Coward · · Score: 0

    Haven't we heard all of this before?

    Sure - it's just as fast. Until you run it.

    Robust framework - what are you smoking? Massive bloated side-by-side installs of successive versions, loading libraries hugely slow etc.

  82. Microsoft? Realy? by Anonymous Coward · · Score: 0

    It's your call, if you want to tie your future to Microsoft that's your business, personally when it comes to languages I look at the ones that give me the widest audience.

  83. Why do you want to do it? by Anonymous Coward · · Score: 0

    It doesn't sound like you're a finisher. What is your motivation?

    Since you beta tested a game for 9 years... and you're only digging into programming now. What is going to keep you working hard at learning code, language, environment? Make clear goals for yourself, and understand that it is only the long-term achievement ("I want to get a job in this") that keeps you focussed on the short-term achievements.

    If you're going to plan for a year... realise you don't know enough to know what you're doing. So tackle that first, build a demo in what you do know - even flash - in as short a time as possible. Get feedback from someone you trust and knows their gaming arse from their elbow, and learn technicalities in parallel. Also read around working in teams, and find people who you can ping ideas off or technical discussion to shorten your learning cycle.

    By the time you do know what you're doing, you can plan more a priori and learn to plan in the large so you're not sensitive to details, and have more flex. That could buy you back more than a year on a multi-year project.

  84. Why would you want to? by Anonymous Coward · · Score: 0

    C# is a private language. Private. It was designed as a response to real languages. It offers nothing that real languages offer, except that some members of a private fan club (and employed by a particular company) want their group to use it so that its incompatible with everything else. As for games, see what other games have been written in, and use that. Unless of course, you want to be limited to a single platform that someone can pull the plug on at any time without notice. Go as the .net developers. Ask them about the community. How happy are they? How much did they pay for training and manuals and updates? Ask them if they remember exactly when the rug got pulled out from under them, not unlike the death of a parent or life altering car accident.

  85. You like being stuck with one platform? by Anonymous Coward · · Score: 0

    If yes, learn C#. I'm sure your game will get noticed on .... maybe Windows CE. Or however they call embedded Windows this week. On Windows, not so much since all the AAA call of honor of duty games are available.
    Otherwise, learn something that would be useful on more than Windows.

    1. Re:You like being stuck with one platform? by Anonymous Coward · · Score: 0

      Unless you're just a troll on Microsoft's payroll: http://uncrunched.com/2014/06/...

  86. Unity3d by Barlo_Mung_42 · · Score: 1

    It's free. It's fun and there is a large community of people doing tutorials and videos and answering questions.
    Just dive in.

  87. Re:The best way... by bumba2014 · · Score: 1

    Lead by example, please....

  88. Re:It's too slow. by Anonymous Coward · · Score: 0

    The main draw of C# is the Unity engine.

  89. programming a game is the same in any language by Osgeld · · Score: 1

    I was thrown into the deep end with C# best way to learn it is to do it, that should be a no shit for anyone who has written in any language ever

    programming a game however requires a totally different way of thinking about the problem at hand, and it doesnt matter the language, its the methodology of writing a game, just like writing a db app is different from writing a website

    quit asking dumb questions, its a new to you language, do what you can and figure it out, god knows there's enough resources out there that even a non programmer like me can barf out fairly complex systems by basic programming structure + a bit of google within an hour.

    Let alone a bazillion XNA articles to make your game even though for some odd reason you think that the game is made by the underlying language and not the gameplay formulas involved, which usually best suit pencil and paper

  90. Your Scope is Too Fucking Big by Orestesx · · Score: 1

    Settle down there buddy. Making something small and simple in scope. It's your first game - it's going to suck.

  91. Harvard edx cs50 by Anonymous Coward · · Score: 0

    You can learn C from basics with CS50 online free course. Google it.

  92. Re:It's too slow. by Anonymous Coward · · Score: 0

    If he was clueless about software optimization, we should then assume that the C++ version was unoptimized too, and it still ran much faster.

  93. Coursera by gnupun · · Score: 3, Informative

    Also sign up at Coursera. They have a course titled "Beginning Game Programming with C#" taught by the University of Colorado. The course also teaches basic C# syntax, so it's very beginner friendly. You just have to wait for it to be offered again before signing up.

  94. "don't write your dream game" hah by Anonymous Coward · · Score: 0

    I love all the comments about not trying too hard or reaching too far.

    I say go for it! I've written parts of my dream game at least 3 times. It didn't hurt me, it didn't discourage me, it was fun to realize at least part of my dream.

    If I were in the OP's position, I would decompose it into small pieces and work on the small pieces.

    The worst case scenario is you wasted some time learning a shit ton of stuff about writing a game, programming and the platform you're working on.

  95. Re:It's too slow. by Narishma · · Score: 1

    Aren't they in the process of deprecating C# use in the Unity engine?

    --
    Mada mada dane.
  96. Re:It's too slow. by Anonymous Coward · · Score: 0

    Yes, but as you say, Unreal and Cryengine both have their core engine written in pure C++. You almost always need some performance-critical code written in C++ no matter what.

  97. you might do better with this by Anonymous Coward · · Score: 0

    http://www.gamedev.net/

  98. Re:It's too slow. by BlackHawk-666 · · Score: 1

    " I doubt you could write a balls-to-the-wall Crysis-like shooter in C#, but I don't imagine there'd be any performance-related reason you couldn't write an RTS in C# and have it run just fine on any machine not so old that its OS wouldn't support the .net framework anyway."

    You might be surprised to discover you are completely wrong on this account. I'm currently write a game using the CryEngine 3. The code comes as a mix of C++, Lua and Flowgraph (a graphing system that allows rapid prototyping). There's an example implementation using the engine which is a complete FPS game, and that is a mix of all three languages. The hardcore stuff is done in c++ and access is provided to this through script binding for Lua and other means for Flowgraph.

    There is also a working implementation of Mono (c#) which can be added to the system. Several teams are using that to produce various games using CryEngine.

    Of course, the rendering, and main guts of the system is all nasty looking, balls to the wall c++, but a large amount of the game logic, AI, character handling, and the like is all in Lua, a simple scripting language.

    --
    All those moments will be lost in time, like tears in rain.
  99. ditch C# for C++ by Anonymous Coward · · Score: 0

    It will be more useful to learn C++ well for your programming career, no matter where it takes you.
    But you need to get really good at it.

  100. Lua by BlackHawk-666 · · Score: 2

    If you really want to learn to program games, start with Lua instead of C# or C++. It's a tiny little scripting language that can be learnt in a few hours and is used by an enormous number of game development companies. Lua is often tasked with providing a UI for the game, logic flow, rapid prototyping of features, anything really except for the critical loops - which are all handled in C++.

    Once you have Lua under your belt you should learn C++, because at the heart this is what all performance sensitive games are written in. The game engine will be a mess of tight, sometimes obscure C++. If you want to make changes that are at that level then you absolutely need to be able to write C++.

    Finally, think about learning C# if it's supported by the game engine you have chosen to use for your game. It should perform about the same speed as the Lua code and it's used for the same tasks - game logic, etc.

    Since you're a beginner, I'd recommend you go with either Unity or Unreal Engine as these are both easier to learn and have a lot more community support. Unreal Engine now comes with the complete source code in C++, so you can take a solid look under the hood and see what's happening in there. CryEngine is moving towards releasing more of their source code, but are not there yet.

    Really your first question should be which language to learn, but which engine to learn. The engine will dictate which languages you need to learn from there.

    --
    All those moments will be lost in time, like tears in rain.
  101. C# != C by Anonymous Coward · · Score: 0

    I initially started with Ruby, but after doing my homework decided that if I ever wanted to progress to a game that required some power, I would basically need to learn some form of C anyway. Further digging has led me to C#.

    C# is basically Java with some enhancements and differences. It does not have much relation to C.

    Anyway, C# is a good choice if you are going to use a framework like Unity that supports it. If you are not, make the choice based on what platform you want to make games to. Java might be a better option than C# in that case, as Android supports Java. Lack of operator overloading does hurt a bit when making lots of vector calculations, though.

  102. Coursera .... by Robbie61 · · Score: 1

    Hi I think this course is perfect for you. https://www.coursera.org/cours... Regards

  103. Serious sub-question (slightly off-topic) by Anonymous Coward · · Score: 0

    Not specifically for game creation, but I've seen a few people mention mono on this thread.

    The last time I was doing any serious .NET programming (VB, not C#) was several years ago and mono was in its infancy. One of the biggest drawbacks to using .NET at the time was that it pretty much made your application windows only.

    Has mono come far enough that this is no longer true? With respect to games or really any .NET app?

  104. Re:It's too slow. by deniable · · Score: 1

    everything is faster than java

    Especially your mom.

    Naturally, she won't do garbage collection.

  105. Learn Game Programming - Not C*!# by tomxor · · Score: 1

    You have a more important problem than which language to chose. The most striking thing about your post is it sounds like you have grand designs for a game (your first game) and that's a bad thing. What you are doing is what almost every new game developer attempts to do... or at least thinks about: going in too big, running before you can walk, building a supersonic jet before you've built your first paper plane etc etc...

    Sure you have programming experience and sound design and 3D modeling experience. But when you made your first 3D model did you create a masterpiece with immense detail? or just randomly poke around vertices of an abstract nurb? It's easy to get carried away having big plans for a big game, but you are one person, and you haven't? made your first game yet. You will fail in one way or another, so fail on something small first, then build up to your big idea (which will almost definitely change after you get your feet wet and get a sense of how practical the original ideas were).

    Even just pick a small part of the big game that you envision... something so small that it should not take long to build (but it will take longer than you think), don't flesh it out, don't get carried away with detail, focus on a basic concept and see how far you get, this is how you learn: iterate. Wanting to have everything you imagine in your game is easy, deciding what you can have and what is more important is what you will learn.

    Also something that might bias your choice of language, is that you will have to decide how much you want to build from scratch and how much 3rd party code you want to use, i.e in terms of engines. If you have very little interest in the physics engines and graphics engines behind games then you will have the task of choosing from the vast range of readily available ones. Not only does that sway your choice of language but it also sets you on a different path of learning, you have to learn how to use someone elses engine rather than learn how to write your own. Using someone else will give you more capability but less creative freedom and insight into how things really work, and could limit you to particular languages.

  106. C# != C by plopez · · Score: 1

    Hasn't anyone noticed that? Rithet there in the right up? C# is more like Java. Either that is a typo or the poster is clueless. So what what does the poster really want, a C# like language or a C/C++/Objective C type language?

    --
    putting the 'B' in LGBTQ+
  107. Re:It's too slow. by sideslash · · Score: 1

    I don't assume anything about that post, except the cluelessness/trollfulness of the poster.

  108. Re:It's too slow. by Anonymous Coward · · Score: 0

    You're experience is pretty limited then.

  109. Re:It's too slow. by Anonymous Coward · · Score: 0

    Although I am not a fan of C# or .NET in general, I have to say that learning C / C++ for *game* development is overkill - don't. Get a game engine like the free Unity engine and get to work on your game. And avoid writing your own game engine - the existing ones are generally much more capable than you need on a solo project.

  110. Re:It's too slow. by Anonymous Coward · · Score: 1

    Don't take the parent poster's advice unless you want to spend several years writing an engine just to discover that it's outdated by the time you can start on your actual game. Get an existing game engine. There are excellent ones out there for no or next to no money and they already care about all the tedious fiddly things that take several man years to develop and port across platforms.

    Game development isn't about coding anymore. It's all about the game content. And that is always more work than it may seem to laymen.

  111. Look at other games written in C# by Anonymous Coward · · Score: 0

    OpenRA is an RTS written in C#. Study it's code for a while, see what you like and what you don't.

  112. GTGD by CNTOAGN · · Score: 1
    I like Unity - it is a powerful tool and helps to put all the pieces together. I used XNA to write a single person game modeled after the board game Pandemic and when I wanted to take it to multi-player, it became quite a chore. Unity has built in networking (RPC style messaging and also object sync), so I ported my game to unity and was able to get the networking pieces done in days. It uses c#, but can also use javascript for the scripting language. Finally, the asset store is amazing. Filled with quality free assets (and even higher quality paid) - everything from full 3d models with animation, to scripts that you drop on your project that make the camera function exactly like the camera in Civilization.

    Lastly, there's a "game" you can buy through Steam - called GTGD (Gamer to Game Developer) - some Aussie walks through creating a first person shooter with teams and multiple weapons. There's a S1 and S2 and after about 12 or so of the videos (out of 20+ in S1) I had enough to start programming my own game. He's writing it all in c# and explains the code decently.

  113. Unreal Engine 4 by Anonymous Coward · · Score: 0

    Use Unreal Engine 4. No programming necessary. In fact all that problem solving and creating algorithms part is still there you only do it visually with "Blueprints" by connecting nodes to each other. And it's way polished and advanced than it sounds. You have interfaces/inheritance in blueprints. Some thing you can't do with blueprints? Write a blueprint node for it in c++.

    It's also alot cheaper than Unity.

  114. Game Framework by Anonymous Coward · · Score: 0

    You'll probably want to pick up a framework that will provide a game engine or the tools to make your own. Why reinvent the wheel? If you're looking to stick with c# try Unity. Many popular games are written, or prototyped, in Unity. Unity is a game engine, and game making tool set, that will allow you to relatively easily make a playable piece of software. The only drawbacks for Unity are it costs money and has less flexibility; if you don't pay for it they display a 2-3 second ad at the start of your game and if you wanted to implement some quirky new mechanic into your game it may be more difficult than if you had also written the engine. Xamarin is another option, but it is also not cheap.

    There are frameworks out there for making your own engine. The one I like is Libgdx, it is fast, free, and easy to use (its in Java but knowing C# that shouldn't matter). This also comes with Box2d, which I would highly recommend if you ever make a physics based game, or just wanna add realistic physics to any game. Box2d is used in many of the most successful mobile games: Angry Birds, Limbo, Tiny Wings... (You will be amazed at how little effort went into the Angry Birds code after using Box2d).

    I would start with tutorials on Libgdx from youtube, my favorite are by a guy named dermetfan (links at the bottom). He covers everything you will need to know to start making a game with Libgdx and Box2d. This will help get an idea of what it takes to implement various mechanics in your game.

    The most common advice I have heard for people trying to start making games is: reduce your scope. "Take the really awesome idea that you have, cut it in half, now cut that in half again, now it might be possible for you to make that in less than a year." Your first game cannot be the idea that made you wanna start making games, or else you will get frustrated and abandon game dev all together. Never start with 3d or multiplayer. Baby steps. Create really simple things that just demonstrate certain mechanics. Or my favorite, clone other games. Make a clone of tetris, or Angry Birds :) I usually pick old atari games.

    Here are some links you may find helpful. Since you are most interested in methodology watch the talks given by Jonathan Blow and Will Wright, they contain better advice than I could ever give.

    These talks by Jonathan Blow are a must watch for anyone interested in making games. In here he talks about the methodology and general mind set you should have about making a game on your own. Key advice includes, 'your biggest enemy is early optimization', 'quickly implemented specific systems, are often better than general systems', 'as an independent developer dont try to make a AAA game, make an indie game'
      How to program independent game - by Jonathan Blow
      Indie Prototyping - by Jonathan Blow
      The Implementation of Rewind in Braid - by Jonathan Blow

    Game Design - by Will Wright

    The Theory of Fun (must read!)

    Dermetfan Libgdx Tutorials

    iForce2d Box2d Turorials

    Open Game Art

    Indie Game the movie (for inspiration)

    Sup Holmes (awesome interviews with indie game devs)

  115. Re:You have to pay $$ to use C# in a game. by Anonymous Coward · · Score: 0

    If you have to pay $4500 because you are making $100K/year , it is a very nice problem to have :).

    That's great except that's not how it works. You pay $4500 and then maybe you'll make $100k or maybe you'll make $500. In the latter case, you're probably going to wish you had that extra $4000 to help pay the bills. (I write this an an independent app developer, albeit not in games. Money-wise, I've had several times where I realized I bought something for development that I didn't really need. I've never bought anything where I wished I'd bought it earlier, or otherwise regretted not buying something.)

  116. Re:It's too slow. by jd2112 · · Score: 1

    It would be hard to make a programming language slower than Java, even if you tried.

    Actually, the problem with Java isn't as much that the language itself is slow but that most of the GUI frameworks (particularly older ones) are slow.

    --
    Any insufficiently advanced magic is indistinguishable from technology.
  117. Monogames by Anonymous Coward · · Score: 0

    If you want, there a lot of resources on Monogames. It's basically the XNA 4.0 framework. It's pretty easy to find pdfs of XNA 4.0 books. http://it-ebooks.info/book/439/ is a good one.
    You'll have to figure out the content pipeline, and learning how to compile shaders is a pain, but there is online material that can help you with that.

  118. Test Driven Development by Anonymous Coward · · Score: 0

    That is the only "methodology" you need to use in order to save your sanity.

  119. hahaha by Anonymous Coward · · Score: 0

    Gaming power of the iphone lol

  120. Re:It's too slow. by Jane+Q.+Public · · Score: 1

    There are a load of very detailed (fancy) 3D games using WebGL, not rudimentary at all.

    Yes, and they are SLOW.

    Crank them up to anything like a "decent, modern" FPS gaming (or even RPG gaming) resolution, and watch the framerate hit the floor.

    Sure, it's getting faster. But you're missing the point. While WebGL and the like are getting ever faster, due almost entirely to better hardware, guess what? C++ or C are also getting faster at the same rate. Allowing better, faster, better resolution and more realistic games.

    So he STILL needs to learn C or C++ if he's serious about writing games. Even a graphically-intense smartphone game has C underpinnings.

  121. Re:It's too slow. by Anonymous Coward · · Score: 0

    I'm currently using C++ for developing an RPG, and I would recommend it over C#.

    If someone is asking this sort of question on slashdot, C++ is not the answer, because they are sufficiently inexperienced that they will end up spending the next 10 years trying to learn C++ before they have anything to show for it.

    C++ is a dead end. It's old, over-complicated and creaking at the seams. While C# will basically condemn you to life in Microsoft land, at least the guy will stand a chance of actually getting something to run.

    Managed languages these days are more than fast enough, so I'd seriously consider one. All the stuff that needs to be done "fast" is taken care of by libraries like OpenGL. If it were me, I'd chose something very high level (and more cross platform) like scala.

  122. Depends on what level of game development you want by Anonymous Coward · · Score: 0

    If you want to make DotA then you are in for a long haul. It's not as simple as understanding how the game works, you need to know the underlying mathematics of how it all works. Remember in a computer it's all numbers, there is no magic move unit up, it is all add 5 to xPos of object 015Bh. Then you get into the complicated 3D stuff, this includes shaders, meshes, possibly bone manipulation. That is after you decide which you would rather use Direct X, OpenGL. Don't forget to implement intersection and clipping detection. If it renders slow it is unlikely that you will get much of a following.
    Don't forget sound, and how to implement movement controls (please remember key mapping, as it is rather annoying for the rest of us if you forget it.)
    Now that you got all of that, you get to figure out how to attack another unit, oh this part gets fun as you need to optimize your algorithms so that you do not need to check every unit to see if it was damaged for each unit doing damage, and this sucks because if you do it wrong you will have to impose some serious limitations to the number of units.
    How do you plan to save your data, what file format(s) are you going to use? Do you use encryption, compression, are you going to use a master data file like Blizzard, or just leave everything open, to make moding easier? Is it all binary or plaintext, you might need to write an efficient parser depending on your decision here.
    Next is Networking, you will need to code up a server, this should be fairly easy after you have everything else down, unless you want a scalable server E.g. do you plan on having over a couple hundred people playing at a time? If you want to support a million connections at once you are going to need to write a good server, don't forget the chat interface.
    And before you can even do this you need your artist, are you making all of the art and sounds your self?
    What platform are you planing to code for Windows, MAC, Linux, Xbox, PlayStation, iPhone, Android, etc... Each is different, I'm assuming since your using C# it is Windows or Xbox, as other implementations of .net are rather primitive if they even exist.
    and lastly don't forget hosting

    How do you plan on funding this? Are you paying everyone helping? Who's paying for the host server?
    Game development seems easy and fun until you actually have to consider all of this, the idea is easy, but if you actually want to build it then you need a bit more. All of this can be learned online via tuts, free books, and/or free/cheap classes. But don't expect to be done this year, or even within 5 years, at least not if your making it yourself. A real formal CS education will really help you, but don't expect it to be as easy as dreaming up a game, you need real dedication for this, think beyond Calculus type dedication.

  123. Learn Java instead! by paulo.ortolan · · Score: 1

    What about learning Java instead? It's free and it has free frameworks and IDEs too!

  124. Unity is the answer you seek by BobbleHeadVader · · Score: 1

    Yes c#!! It's the main scripting language for the unity game engine which has a basic version that is free. I've been learning it for a year and compared to many things out there is phenomenally user friendly and has a great online community that can walk you through just about everything and provide piles of sample code for free. Especially if you want to make an rts, look for the a* path finding project which provides all the basic navigation functionality for your ai. Google - unity rts and there are several projects that are already done and free to use that you can learn by tweaking. Unity!!!

  125. Coding for kids by Weaselmancer · · Score: 1

    My six year old son spends a lot of time on this learning-to-code site. I think his kindergarten teacher introduced him to it. It's probably the best thing I've ever seen for teaching kids coding.

    Click on a starter project. Click the green flag to run the program. Click "See Inside" to look at the code in their editor. It's visual, easy to read, and quite elegant.

    It really is a completely fantastic site. Brilliantly done.

    scratch.mit.edu

    --
    Weaselmancer
    rediculous.
  126. Visual Scripting by Anonymous Coward · · Score: 0

    Hey! I'm a game designer who also has moderate programming experience, but am in the same boat as you. Recently I taught myself Playmaker- a visual scripting tool for Unity. It is similar to Unreal's blueprints, and it really makes it easy to create a game without too much programming knowledge. Basically it has all the basic scripts you need, and you just attach them to your game objects. The logic becomes easy because it's all visually represented. I definitely recommend you learn a visual scripting tool and this will allow you to also learn a bit of C# since you can create your own custom scripts.

    All the best,

    m3ndi3

  127. Re:It's too slow. by epyT-R · · Score: 1

    sorry, that 1996 insult book is still largely up to date. java is slow and resource hungry compared to well written equivalent native C/C++.

  128. Re:It's too slow. by epyT-R · · Score: 1

    Yeah and that code is calling what amounts to libraries all written in C or C++.

  129. Re:It's too slow. by toddestan · · Score: 1

    Java is still slow. But unless you're using it for heavy number crunching, you won't notice it on a 2014 computer like you did on a 1998 computer.

  130. Re: It's too slow. by si618 · · Score: 1

    Isn't that what .NET native is supposed to tackle?

    --
    Sometimes I doubt your commitment to Sparkle Motion
  131. Mike Murach C# by Anonymous Coward · · Score: 0

    Mike Murach C#

    You'll want his books, I've been with them since they were used as textbooks in schools where I learned programming, systems analysis, etc. His method is based on the psychology of learning, you get a whole overview ch. 1, fleshed-out skeleton of parts by ch. 2 when you begin coding, rest of ch. #'s expand on skeleton parts; detail info is well organized in tables, not scattered everywhere: http://www.murach.com/books/

  132. Existing map editors by keith_nt4 · · Score: 1

    So I, like many people, want to make my own game. Outside of MATLAB, Visual Basic, and LabVIEW I have no real programming experience. I initially started with Ruby, but after doing my homework decided that if I ever wanted to progress to a game that required some power, I would basically need to learn some form of C anyway. Further digging has led me to C#. The other parts of game design and theory I have covered: I have ~8 years of CAD modeling experience including Maya and Blender; I have a semiprofessional sound studio, an idie album on iTunes, and am adept at creating sound effects/music in a wide variety of programs; I'm familiar with the setbacks and frustration involved with game development — I beta tested DotA for 9ish years; I already have my game idea down on paper (RTS), including growth tables, unit types, unit states, story-lines, etc. I've been planning this out for a year or two; I will be doing this on my own time, by myself, and am prepared for it to take a couple years to finish

    I don't have any gaming programming experience and a lot less programming experience than you do already.

    You mentioned a lot of details but failed to mention if you'll be targeting a particular platform. For instance: will you release you game for sale/free? Is a mobile version ever a possibility? Will you release it for the "Windows Store"? Steam? Both? Neither? Is this just a hobbie no one else will ever see? A resume bullet point?

    Anyway, speaking not as somebody who has done what your describing but merely as someone who did a lot of research into it I would say go to steam and filter the game list to only "Strategy - RTS" genre and start looking at the ones with both an extensive map editors/mod creator and a fairly large community. Try a few out. Pick a favorite. Make sure it's something you can stick with because it will be consuming thousands of hours of your life. This will probably work better if it's a game you're not that familiar with. Thus your learning the game creation bit along side the actual editor/scripting/programming end of it.

    Then at least get a version of your game up and going/playable. After creating the most polished version of your laid out game in your engine of choice if you still want to build an engine from scratch with it...well best of luck to you.

    --
    "UNIX is very simple, it just needs a genius to understand its simplicity." -Dennis Ritchie
  133. Re:It's too slow. by euroq · · Score: 1

    but anything that really needs fancy graphics or fast processing will need C++ or C.

    Totally incorrect. Anything that needs fancy graphics just require an SDK with access to a fancy graphics processing engine. I've written games in Java that use OpenGL on the backend. You don't need the language to be C or C++ to access OpenGL. As far as fast processing requirements, I guarantee you most games don't actually need processing that would not be fast enough in bytecode but would be fast enough in native code.

    --
    Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
  134. Re:It's too slow. by euroq · · Score: 1

    Java is, by all benchmarks that I can find, the fastest non-native language that exists. Java was known as slow in 1996. It's been intensely optimized since. I'm sure there are some programs that are sometimes faster due to very circumstantial situations. Here's one example, there are countless others: http://benchmarksgame.alioth.d...

    I also think my given citation or the many others I can find just isn't enough to make any declaration about which is "fastest" - it would be safe to say they are fairly equivalent, and this whole argument about their comparative speeds is stupid. Average CPU abilities, amount of memory accessible, and what not change so consistently that anything you write now which is a little bit too slow will be fast enough in a year.

    --
    Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
  135. Re:It's too slow. by euroq · · Score: 1

    So he STILL needs to learn C or C++ if he's serious about writing games. Even a graphically-intense smartphone game has C underpinnings.

    WTF? No, he or she doesn't! Name 1 game that actually requires a programmer to learn C or C++, and I can name 100 or even 200 that don't. ESPECIALLY on a smartphone.

    --
    Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
  136. Riemer's by Anonymous Coward · · Score: 0

    Riemer Grootjans has some pretty decent DirectX tutorials if you want to go that way:

    http://www.riemers.net/eng/Tutorials/DirectX/Csharp/series1.php

  137. Re:You have to pay $$ to use C# in a game. by paulpach · · Score: 1

    If you have to pay $4500 because you are making $100K/year , it is a very nice problem to have :).

    That's great except that's not how it works. You pay $4500 and then maybe you'll make $100k or maybe you'll make $500. In the latter case, you're probably going to wish you had that extra $4000 to help pay the bills. (I write this an an independent app developer, albeit not in games. Money-wise, I've had several times where I realized I bought something for development that I didn't really need. I've never bought anything where I wished I'd bought it earlier, or otherwise regretted not buying something.)

    No. you do not have to pay _until_ you start making $100K/year. It is not required to pay the cost up front, you can use the free version until you reach that threshold.

    You can go ahead, make your app, and if it fails and you only make $500/year, you never have to pay a dime to unity.

  138. download volam 3 by seolentop · · Score: 1

    Mobile Vo Lam is based on the story of the late Kim dynasty, famine raging across the country, puts Disorders harassed everywhere. Ethnic Man Outside visual intrigue invaded territory. Inside the busy military power competition no longer worry about her own life essence, more black people pushed into poverty and suffering misery, food robbed, exploited wealth from taxation. During that time the factions also gradually create hinhthanh many Vo Lam Mobile in 03 major power including: + The mission: This sect was formed by three main sects: Shaolin, My Russia, Wudang + Neutrality: including his account of the sect 3: Uranus, trails, Thuy Yen. + I must: is the set of the heroes of the sect 3: Christian forbearance, Doc Ngu, Ming Church. Map Vo lam mobile Every great power on a local, they have said that only they can help spread misery nature from catastrophe. 3 This power is growing stronger. That power increasing peak. And everyone wants to eliminate the remaining forces and become an independent Vo Lam Mobile. And what is to come, a forest can not have two tigers. Competition is becoming increasingly fierce and intense. The skirmish escalated to the level of the head of the 3 forces declare: "No Friends could also be to the left side" and the battle between the forces 3 becomes ever more stressful, the power of this artist's implacable determination to fight, attended by other factions became fierce than ever. Download Mobile Vo Lam (The program automatically detect the phone) Or write: TG 525 190 6086 posts

  139. C# D by rdnetto · · Score: 1

    I suggest you look at using D instead. It is as powerful and efficient as C++, syntactically very similar to C#, and can link C++ libraries.
    The main benefit this provides (apart from performance) is that it will be much easier to do a cross-platform release - although C# has Mono, I've found it to be unreliable.
    That said, D is somewhat obscure, so caveat emptor.

    --
    Most human behaviour can be explained in terms of identity.
  140. Unity by Anonymous Coward · · Score: 0

    As the title says, start with Unity. It's amazingly simple, powerful and can be an amazing C# tool while also allowing you to use javascript.