Jump to content
  • Advertisement
Sign in to follow this  
Simon Lovschal

where to start? programming games c#

This topic is 790 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

so uhm at the moment i am studying Game Programming if u can call it that basicly a school that teaches us Game mechanics, Game specific programming languages. around Games c# c++ and so on

 

so far we have been taught on how to use classes, methods basicly the general knowledge around programming. and we have alot of projects where we make games, other applications etc.

 

so far i find myself pretty decent at programming in C# however i am stuck to as what i should start doing to further my skills?

 

i want to create something basic yet good :D 

 

any suggestions?

Share this post


Link to post
Share on other sites
Advertisement

If you are ready to go with an engine, Unity uses C# for its scripting. And I personally find the Unity C# API pretty decent.

 

Of course, there is quite some learning curve involved with it, Unity being a pretty modern 3D engine and all. But with a huge community and lots of documentation and tutorials, you shouldn't find it to hard to get started.

Share this post


Link to post
Share on other sites

If you are ready to go with an engine, Unity uses C# for its scripting. And I personally find the Unity C# API pretty decent.

 

Of course, there is quite some learning curve involved with it, Unity being a pretty modern 3D engine and all. But with a huge community and lots of documentation and tutorials, you shouldn't find it to hard to get started.

ye i know unity quite well but i just find it hard to start? if u know what i mean? i fall of quite easily and start doing something and create something fine but then i abandon it?.

 

i feel like i am missing some things here and there but in general should i be worried? that the graphics is utterly crap? or should i focus on the very core itself? mechanics, the engine ?

Edited by Simonlvschal

Share this post


Link to post
Share on other sites
Don't worry about the graphics that is not what you want to think of in the beginning. Focus on the mechanics and extending your programming skills. When you feel that you know how to get things done, focus on art and sound.

Share this post


Link to post
Share on other sites

I like to recommend Blackjack as an early project. The basic gameplay is pretty simple and using a basic set of cards for graphics you get that happy feeling that your game looks like the way you think it should pretty quick. There's plenty of ways you can add complexity like supporting one or more variations of the rules, adding computer players maybe with individual AIs, displaying and animating avatars, or adding some kind of network or online multi-player support.

Share this post


Link to post
Share on other sites

I'm beginner myself and not a professional at all, so what I say doesn't make much difference, but still:
I've always heard that whenever starting out in game programming get a fair knowledge in programming in general ( which you probably do have ), do projects, etc.
 
And then preferably go for learning a library(like OpenTK) not an engine (like Unity). This will teach you more low level things and you will be able to understand about game programming more in general. Afterwards, when you know more you can switch towards an engine.
 
But I've also have heard some who say, "you are taught numbers first then calculus, so learn an engine first and then library"
 
So, while starting out I got confused whether to use a library or to use Unity. So I tried to use both and then see what suits me better, this is what I understood:

  • While learning an engine you have to learn: a programming language (you've already learned), how to operate the engine, and how to develop games using that engine.
  • While learning a library you have to learn: a programming language (again, you've already learned), how to use the library, that's it.
  • While learning an engine you ask: "What does the update() function do?" while learning an library you ask: "How do I create the game loop?"
  • So, you understand game programming better.
  • Engine makes your learning complicated while learning a library makes it difficult.

ye i know unity quite well but i just find it hard to start? if u know what i mean? i fall of quite easily and start doing something and create something fine but then i abandon it?.
 

i feel like i am missing some things here and there but in general should i be worried? that the graphics is utterly crap? or should i focus on the very core itself? mechanics, the engine ?

 

If this is what you feel at start, then you are like me, I always used get sort of confused with engines because there are lot of things to focus upon, I suggest you learn a library first.

I went with C++ and SDL, since its more low level. Ultimately its your choice.

Share this post


Link to post
Share on other sites
I agree with Tanay. If you want to create games, a engine like Unity will be fine. But if you want to understand games and computers, use a library.

I tried to use Unity when I started. But I thought it was boring so I moved on to C++/DirectX. And I love not to use a Engine.

Share this post


Link to post
Share on other sites

ye i know unity quite well but i just find it hard to start? if u know what i mean? i fall of quite easily and start doing something and create something fine but then i abandon it?.

 

 

i feel like i am missing some things here and there but in general should i be worried? that the graphics is utterly crap? or should i focus on the very core itself? mechanics, the engine ?

 

Okay, you might need to step back when you post somethingand rework your wording and sentences a little bit... it is hard to understand what your exact questions are here.

 

Anyway, trying to answer the way I understand it:

 

"Unity is too hard to learn" - Well, yes, as said, its quite a steep learning curve at the beginning to get started in a modern 3D engine. Its more than just some C# basics and some graphics theory together... there is a whole bunch of additional, more advanced topics you shouldn't shy away from, like 3D Math, Physics and so on, that COULD overload you at the beginning.

 

The good thing is, none of this is mandatory. If you try to find a very basic beginners tutorial, you will be introduced to most basic functions step by step, without having to worry about more advanced topics.

Physics seem to hard to understand? Just leave it away, you don't need physics for basic games.

3D is way to complicated? How about getting a 2D tutorial and keeping things 2D for now?

 

"I am missing knowledge" - Of course you are. I am doing game development as a hobby for over 6 years now and I still feel like a beginner often. There is just too much to learn for a single lifetime if you want to know all, in all parts of game development. That is why there are usually many different specialist working at larger studios... for programming alone, you might have AI programmers, gameplay programmers, graphics programmers, interface or tool programmers...

Don't feel bad about it. And don't think you need to go back studying theory for another 5 years before you are trying to put all that in practice again.

 

Just do it ((tm) Nike) ... really, learn as you go. You try to achieve something, you run into a roadblock, you research the topic, you make mistakes along the way, you find a solution that works. That is the ideal way to learn something. a) you at least tried to solve the problem yourself, thus analyzing the problem yourself, b) you make mistakes along the way, which get imprinted in your brain way better than any advices from teachers or books, c) if you happen to at least get part of the solution right yourself, you get a healthy morale boost.

 

And along the way, you have learned a thousand little things like "where is the build button in Unity", "how do I rebuild a lightmap in Unity", and so on.

 

 

"I don't know what to concentrate on" - Well, what do YOU want to concentrate on? What are YOUR longterm goals?

 

If you want to learn EVERYTHING there is, you will of course have a hard time focusing, and will find that not even 10 years are enough to really master everything. It MIGHT be a good idea to get more knowledgeable about multiple topics IF you plan to go the Indie route later, working on your own or in a small team.

No matter if you will later work with freelancers for your graphics for example, having the basic skills needed to fix small errors made by freelancers will save you a lot of time and money when deadlines are nearing.

 

If your plan is to get a job in the industry, then you should really try to concentrate at some point. Additional knowledge never hurts (after all, you will be working in a Team, and even as lowly programmer you will have an easier time if what the artists are talking about is not just gibberish to you... and if you at some point climb the ladder, you will most probably interface with other disciplines even more often)...

But: you will work as a specialist in many Studios. In most actually, besides the smallest one. That means, you need to find your passion, and get really good in it to be attractive to future employers.

 

Now, about your specific question: Do you want to work as an engine programmer? If yes, then maybe it does make sense to build your own engine. In any other case, less so (though as said, additional knowledge never hurts).

Are you interested in becoming a graphics programmer, or want to become an artist? If no, then do not care too much about graphics. If you are not an artist natural, or have the ability to work with an artist, you will either have to live with ugly programmer art, or with stock art from the internet. None of both is particularly bad, as long as what you create now is just for your portfolio.

A finished game in a portfolio looks awesome anyway... people will only look if the graphics shine if you are looking for employment as an artist, or MAYBE a graphics programmer (nice art is not the graphics programmers job, but it never hurts to have nice art to make your clever shaders shine).

 

 

If you really feel overwhelmed using an engine, go back several steps and work from scratch. Just remember, you are now doing a lot of tasks that the engine would take care of, so you need to reduce your scope several notches. Think pong instead of super mario bros.....

Share this post


Link to post
Share on other sites

Like others have said, Unity is a great place to start. If your primary goal is game development, I would focus most of your efforts there, especially if you're interested in C#, which I like.

 

The main thing is to make games and experiment. There is really no better way to learn than through experience. If you're stuck for ideas, or how to do things, visit the unity forums, look at the unity learning section, pick up a book or take an online course. That will help expand your knowledge base, and probably give you ideas for new game mechanics, as well as how to implement certain features. 

 

There's a really good course that I can recommend on Udemy. You can find it HERE, and get it for only $24 (it's regularly $197), and it's a great course, especially for beginners. It will give you a fairly solid knowledge base when it comes to coding and Unity's interface, as well as a pretty decent idea of a regular development workflow.

 

You can also find a lot of ebooks on https://it-ebooks.info (though I'm not sure of the legality of the site).

 

But the main thing is to KEEP PLAYING WITH UNITY (or whatever technology you're learning). You don't even need to make a full game. To start, you could just try to make different mechanics work. You'll learn WAY more actually making stuff than you will any other way. Courses and books, etc. are not a replacement for experience, they just help it along. And don't get discouraged. You will never MASTER game development. You will ALWAYS be learning. Even now I get discouraged sometimes when I see something awesome someone else has made. Just remember some of the things you've seen were made by people who've been doing this for decades, or by huge teams of people.

 

The main takeaway from this: Make games, learn, don't get discouraged, make games, make games, make games (And make sure your share your games!)

 

I'll provide a couple other tips here too that I wish I'd known about when I started:

 

  • You can make money from your games on Kongregate.com and armorgames.com. You can get paid on a per play basis, and ArmorGames will even sponsor games they particularly like. Their website says they typically pay between $1,000 and $5,000 to sponsor a game they like. Anyone can put a game on Kongregate, and even if it doesn't make any/much money, at least people can play and comment on it.
  • You can get tons of free and paid assets from the Unity Asset Store.
  • You can also get some really good free and paid 3D assets from Turbo Squid (just pay attention to the licensing for each asset if you plan to use it, and contact the author if in doubt.)
  • Lots of free 2D assets from Open Game Art (again, pay attention to licensing).
  • Great textures from Textures.com (all of them are free I think). 
  • FreeSound has tons of free sound clips and music (again, pay attention to licensing)
  • BFXR is a free, easy to use sound effect creation tool that can be downloaded or used online.
  • These might be less useful in game development, but all of the images on PixaBay and Pexels are completely free to use.
  • PiskelApp is a great free online pixel art app. You can even find a free course for it on Udemy HERE
  • LunaPic is an online image editor with some quick and easy tools (add transparency, change color, etc.) in case you're not good with PhotoShop or something
  • Newgrounds' Audio Portal has some really great music, but you generally have to request permission to use it from the author (but it's extremely high quality, and the community is pretty friendly)

 

Best of luck, and keep at it!

Edited by JEJoll

Share this post


Link to post
Share on other sites


so uhm at the moment i am studying Game Programming if u can call it that basicly a school that teaches us Game mechanics, Game specific programming languages. around Games c# c++ and so on

so far we have been taught on how to use classes, methods basicly the general knowledge around programming. and we have alot of projects where we make games, other applications etc.

 

Your post confuses me. You're at school which is teaching you game programming and you have projects where you make games. What games have you made in this class? What APIs or libraries have you used in this class? Did you ask you teacher(s) the same question you're asking us? If so, what did they say? If not, then why not?

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!