• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
nooblet

Language Advice

13 posts in this topic

Hello!

First and foremost, I'm very very sorry for creating another thread about this same topic. I've been searching the internet for opinions regarding this, but there's quite the diversity in responses it appears. Basically, I'm in a pickle between learning C++ and C# at this point. I'd like to elaborate for those who are interested in helping me.

 

I've been programming for many years, on and off, originally learning C++ and then migrating to C# when I realized how much easier it was. I absolutely love to program, but when I start to need to learn the "intermediate" or "advanced" topics of a language, I start to get discouraged and stop programming for months. I want to dedicate an hour or two of my time each day for the next year or so to just learn a language from the absolute basics to the more advanced topics. I don't just want to develop games, I want to become a programmer. I know for a fact that I'll have to learn C++ at one point in my life, but when I think about pointers, linked lists, algorithms, etc., I just want to immediately say "nope" and go back to C# where it's nice and cozy and I have someone holding my hand.

 

Basically, I'm relatively comfortable with both; with C++ I stopped using it when pointers were involved, and with C#, I stopped when I realized I had no idea what dictionaries do, how to do exception handling, or how to handle events. I want to become a programmer but I always get intimidated when it comes to more complicated topics and discourage myself from programming the next day. Not only that, but I can't ever find any good resources that appeal and grab my attention, and when I search on the forums, it usually has outdated recommendations that don't really work for me.

 

Anyways, I hope that covered where I'm at. If you have any recommendations, please feel free to throw them my way. Thanks so much!

 

TLDR: Stopped learning C++, went to C#, getting stuck at the "harder" subjects for both languages, and now I'm having trouble deciding if I should continue down C# or start to learn C++ now to make myself a better programmer. 

0

Share this post


Link to post
Share on other sites

Hi frob,

 

It's funny that you of all people responded. I found a response from you in another thread (prior to creating this one) so I went through some of your posts to see your opinions and to do some more research. That, and I enjoy reading posts from those in the industry currently. To answer your question, although it's rhetorical (at least, the way I interpret it), I want to be a professional programmer (more specifically a game developer, but I'd like to branch myself out because I feel like the industry may be out of grasp for me), so it appears the next steps for me is to pick up a C++ book and try really hard to study these concepts and work my way towards becoming a professional.

 

Thank you for your insight, hopefully I can motivate myself to continue past my frustrations.

Edited by nooblet
2

Share this post


Link to post
Share on other sites

Understood! I plan on going back to school this Fall, possibly taking care of my general education credits at a community college and then going to university again to work towards my CS degree (currently have enough credits to be considered a sophomore but didn't register for classes due to work). I think the points that you bring up is something that I needed to hear/read. I needed a reminder that I'll have to deal with topics that I may find boring to help land a career that I've wanted since high school. Again, I appreciate you taking the time to help me out with this! Thank you very much. For right now, I'm going to study the implementation and start self-teaching myself so that I can build my portfolio during school, and then I'll work towards the other topics when the time comes.

0

Share this post


Link to post
Share on other sites

Other than going to school, one can certainly be a self-taught programmer. But, the main requirement for this is interest.  You must be interested and excited in learning about programming and game-related topics like rendering, physics, scripting, optimization, multi-threading, and many others.  I'm not saying that you need to be interested in all of these, but being interested in at least some is good.  If your reaction to having to learn about pointers and other topics is to not want to do it, then you might want to re-examine why you want to do this in the first place.

 

If you do decide you have the interest and want to continue teaching yourself, then I'd suggest going about it like this: Start with a broad and shallow approach, working through a good introductory book, and then do small projects afterwards.  The idea here being that in game programming and C++, there's a lot to cover and master.  Trying to master things one at a time is hopeless and doomed to failure.  You need to gain a wide understanding of what the language can do and what topics will arise in game development.  At that point you'll know what questions to ask, and where to look for answers when problems arise.  Then, to get a deeper understanding of specific topics, do different small game-related projects.  This will allow you to do something that's interesting, and where game-related issues will come up naturally.  You will have to use specific algorithms or programming techniques, and as you get more familiar with those and implement them, at that point you will get the deeper expertise you need... in that specific topic.  Do this over a year or two and then you'll start to be a decent all around game programmer.

0

Share this post


Link to post
Share on other sites

Basically, I'm relatively comfortable with both; with C++ I stopped using it when pointers were involved, and with C#, I stopped when I realized I had no idea what dictionaries do, how to do exception handling, or how to handle events.


I don't have much to add that wasn't already said, but I do have this to say. You will have a better understanding of what dictionaries are if you have a solid grasp of concepts in C++ like pointers and data structures; a dictionary or map is often implemented like a hash table or a red-black tree. I know that this knowledge isn't quite useful now, but my point is, if you progress in your understanding in one language, you will have knowledge you can apply to both languages.
1

Share this post


Link to post
Share on other sites

Thanks everybody for your input with this.

 

@0r0d- It's not that I don't want to learn the material, it's the fact that I get frustrated with myself when I can't grasp the concept initially and eventually give up and blame the resource from which I'm learning the concept, although it's just me not pacing myself. Whenever I program without studying from a book or tutorial, I always have a blast and end up doing it for 12-14 hours straight because I don't realize the time has flown by. 

 

@Ectara - Yeah, I definitely understand what you mean. When I was studying C++, I learned some object-oriented principles, and of course the basics (like variables, functions, blah blah), so when I transitioned into C# it was amazing how much simpler it was to learn and grasp new concepts instead of spending days reading books and tutorials to try and figure out what functions and methods meant :P.

0

Share this post


Link to post
Share on other sites

If it helps, most of my C/C++ knowledge came not from reading books cover-to-cover, but from deciding what I want to do, and writing until I didn't know how to do something I needed to do. Then, I looked up how to do it in the most efficient way, and moved on. Repeat 100,000 times, and you're a wizard. I do have a lot of books, but most of them cover topics I already learned elsewhere.

If I had to pick something to understand first and foremost, go for pointers. Linked lists are nothing without pointers, and once you learn what a pointer is and why it is one of the most important things in a programming language (whether you manage them yourself, or the language does it for you), a lot of things will come easily.

0

Share this post


Link to post
Share on other sites

my advice is to learn by doing, not learn to learn.

It's pointless to sit down with a C++ trying to understand everything without a final target.

Once you have the concept of functions and flow control you have all you need to create whatever program you want.. yes, the code will be ugly but it is important you get something done... only by doing messy programs you will really understand why higher abstractions are good and useful.

Learn to learn, in something as practical as programming, is just wasting time imo. Knowing a programming language is only a small part of being a programmer, the real skills are problem solving and the ability to find the info needed to solve a problem... that is where the line really is.

1

Share this post


Link to post
Share on other sites

TLDR: Stopped learning C++, went to C#, getting stuck at the "harder" subjects for both languages, and now I'm having trouble deciding if I should continue down C# or start to learn C++ now to make myself a better programmer.

Core programming skill is not about knowing a language. It's about the big picture of solving and managing the complexity of actual problems. Achieving a reasonable level of mastery over some language is just an initial hump you have to get over. With C#, you can get over it much faster than with C++, and the real progress can begin.

So stick with C#. You can (and should) learn more languages later, when you are already a decent programmer. For a beginner, C++ is just about the worst major language.
2

Share this post


Link to post
Share on other sites

So stick with C#. You can (and should) learn more languages later, when you are already a decent programmer. For a beginner, C++ is just about the worst major language.


This, I can agree with. I have 100 arguments why C is an easier language for a beginner to learn than C++, but if basic concepts need to be honed first, then I'd recommend C#, Python, or some other language that doesn't deal with the implementation details of the hardware. I started with BASIC many years ago, and I would not recommend it unless you are a mathematician.
1

Share this post


Link to post
Share on other sites

Hi everybody,

 

Thank you all for the advice with this, especially lightxbulb for all of the resources for learning. I wouldn't necessarily classify myself as a "beginner", but I'm not great. I understand functions, classes, the flow of programs, arrays, looping, inheritance, and some other concepts. It's just "mastering" the language where I'm having trouble. Usually, when I learn a new topic for programming, then I immediately go out and create a new project and then get stuck again somewhere and stop learning again. I've made my own 2D games multiple times, and can say I'm a little better than most beginners, but I'm definitely not a great programmer as of right now I don't feel like. 

 

I think what I'll do is do some more studying with C# for a few months. I'll learn some of the other topics for it, such as debugging, event-driven programming, collections, and lambdas (I think that's what they're called?), and then when I feel like I'm a confident C# programmer, I'll start to transition into C++ and eventually make that my primary programming language. I think it'll be easier for me to transition into C++ rather than trying to master it first, plus I really enjoy C# right now just because of how simple it is and how easily everything fits together.

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0