Learning C#

As it relates to learning C# for Unity development, is it best to learn C# one project at a time? Or, is it better to learn C# from the ground up with the intent of getting certified as a C# programmer, and then apply it to Unity projects?

My thinking right now is to learn it one project at a time and eventually the light bulb will come on. However, so far I am quite confused when it comes to programming.

Perhapse takeing a C# beginners course? They have em on udemy.

1 Like

Hi @Dan_Miller, great question!

So, for myself, I have fair bit of history with .Net, but from the VB perspective instead of C#. I took @ben’s Learn to Code by Making Game - The Complete Unity Developer course and from the C# perspective, grasped things fairly quickly. The thing I did struggle with initially however was the way in which objects integrate with each other. I was used to writing the code that was behind the scenes, now, I was effectively using an application which was hiding some of what was going on being the scenes, so dragging and dropping game objects here and there seemed a bit odd.

Whilst I came at this with the previous experience in .Net I would say that the above course really gives you enough to get started at a basic level, but also creates scenarios where you will invariably want to do more yourself, extend the games further, and my belief is that it’s at that stage where you will start to enhance your C# knowledge a little further as you will want to do things that aren’t covered on the course and start finding examples/asking questions and so on. I can’t speak for the VR course as I haven’t started it yet, so I am not sure how the C# side of things is covered on this course.

I would say to take on a full C# course before the above Unity course would be over-kill and not entirely necessary from the Unity perspective at this early stage. That said, if you were planning on becoming a developer, or, already are a developer and just want to learn a new language and make games, then I guess you could do it the other way around. I personally find learning easier when it’s fun and enjoyable and it doesn’t seem like a chore - that really is the fun thing about combining the learning with the game development, you get a lot of those “Hey mom, look what I did” kind of moments, as opposed to ending the day studying object orientation and trying to explain encapsulation to your partner :slight_smile:

My advice would be start small, find some enjoyable little projects to work on, get a firm understanding of some of the basics with C#, and then look for ways to expand on the projects so that you push yourself in your own stretch zone for the C# learning :slight_smile:

1 Like

Hi @Rob, your feedback and perspective is helpful, thank you.

I have many ideas in my head, as I’m sure most people do when it comes to developing with Unity. As it relates to C#, it all breaks down in my mind because I don’t know what I can do with it. For example, an arsenal of tools so as I formulate ideas then the (high level) solution unfolds during visualization. I’m not sure if that makes sense the way I am attempting to articulate it.

As I move forward perhaps I should just think, anything is possible in Unity and tackle one problem at a time.

Based on your feedback, and comments from others, I think I will do the following and then see how my perspective has changed with more time and practice:

  1. Continue with Ben’s courses.

  2. Enroll in Udacity’s Nanodegree for VR Development when it is available.

  3. Find a good read in architecture and design methodologies

Then assess where I’m at.

It’s a little bit funny in a way. I recently decided to play around with PlayMaker. I tried for the longest to do the scripting for the GoHome game, and finally someone else did it for me. The funny part was my approach and how I was trying to solve it was failed. I had to laugh, thinking I have no idea what I’m doing on the scripting side!

One project at a time worked for me, though I already knew C and Java, and have programmed professionally (not to say a professional job, just got paid for it) in C++, using Google to get me past hard spots. I’ll say, C++ makes C# look easy, and if you know Java, you know 95% of C# already. I’d say, keep with the course, but then look for resources like the free online “Yellow Book” of C#, and maybe purchase the C# pocket reference and/or C# in a nutshell in O’Reilly books (or for free if your local library does Safari Online, mine used to, then I moved to a county that doesn’t).

1 Like

Hi @Todd_Vance, helpful feedback. I downloaded the C# Yellow Book and it looks like it will be a great reference. Thanks!

I went back to the GoHome project in the VR course. I missed something that was said and I think it may be an important step in the process. The term pseudo-code was mentioned.

Now that I’m looking that up and seeing what others are doing, I believe this may be very helpful. It at least gets the ideas out there and then I can work through it and learn how to solve using C#. It may also assist with better workflow.

Do you guys use pseudo-code? It may seem too simplistic, but I like the concept. I found one programmer that uses pseudo-code as comments in the script as a first step. Outlining the entire functionality of the program by inserting all pseudo-code in the form of comments on seperate lines, then when finished, coming back to each line respectively and write code to solve it.

Great to hear you have gone back to the course for another look through and have a plan going forwards.

Regarding your question, I have yes, typically these days only if I am trying to work something out in my head I feel is fairly complex so I can get a rough idea of what is needed. The other time I do this is when I am about to call it a night but want to leave myself some memory joggers for the next day.

I’ve not atarted a project from scratch like this but I would imagine it would work as well, deoending on the scale of the project. If it was a large project I would probably look at breaking it into small features first and then try the above approach.

:slight_smile:

Yes, I haven’t actually finished the course but I found that I went through the first segment too fast. I followed the steps but it really didn’t click. For example, if I had to sit down and write it myself I still cannot do it.

Good to hear others are using pseudo code but it sounds like it is not the normal workflow. I came across Code Rocket for Visual Studio and I really like the workflow presented. The workflow is write pseudo code, the software creates a flow chart from the pseudo code and when ready to commit changes, it then enters each line seperately as a comment and you then go to each segment and write the code.

However, thinking about how Unity works, this workflow does not present an overall picture of the entire project, but rather only how it will work on a particular game object. What I really think would be useful is to map out the entire game, taking into account all of the game logic, and see a visual representation of how it will work. Then use the above mentioned workflow to break down individual game objects, and then code.

This may seem very goofy to many people. I think it is how my brain works; seeing the larger picture first and then breaking it down into smaller parts.

1 Like

Sounds like you just described a Game Design Document :slight_smile: but not the short, quick version, the really in depth version that civers every aspect of the entire game.

I dont know whether you would find a specific tool that would help with this, I would imagine that some people use a variety of tools.

From a SCRUM perspective you could use something like Axosoft, create user stories, feature, defects etc…

Some people I know use Trello to perform similar tasks.

Git for source control maybe and so on. My point being that it seems its more of a tool belt of many tools rather than one that does it all, at least from what I have seen across the community so far. Of course if there was a tool which combines it all you can guarantee you would probably find something you wanted to do which it didn’t support - this is so often my experience… I must be the 1% customer :wink:

Be interested in knowing if you come across other tools of use :slight_smile:

Maybe but I think of the GDD as mostly a text version with supporting documentation. I setup Atlassian Confluence to serve as the area for the Concept and Game Design Documents, and JIRA Software for the Kanban board and Agile aproach. I think that will be really helpful.

It is difficult to explain what I’m looking for because I don’t know, what I don’t know. If that makes sense. I’m looking for something comprehensive. I suppose one could think of it as an overlay to the GDD in a sense. But yes, for sure the in-depth version (end to end).

I will give it more thought and research. If I do find something I will let you know. You may be right, many different tools rather than just one.

With the workflow I’m attempting to develop, coding would be one of the last steps to actually do. The reason this makes sense in my mind is so the steps to code would be well defined, and the chance of having to redo code would be minimal.

Certainly in the Unity course it is fairly textual, but its a very soft approach to creating one, and its quite a brief one at that. The Text101 game does cover state diagrams which are included in the GDD, I see no reason why your concept art and things like that could not also be in it. Effectively it should be a information source for your game that covers all aspects, of course, different audiences would require perhaps different versions (e.g. high level, low level), but that aside I don’t see why it couldn’t have a graphical representation of the flow of the game, the story line, required assets and so on. You could probably cover a lot of the detail this way, but I guess it’s one of those things that maybe until it’s tried it’s harder to evaluate.

I would suggest that will change over time though won’t it, what ever level you ascend to you will always have things that you don’t know that you need to work out, and you may not know what those things are until they happen, sometimes those things may occur in good time, sometimes those things may occur at the worst time and a complete re-think may be involved. I think the approach has to be one of relative flexibility and adaptation, at least very early on (not suggesting you aren’t by the way!), so that when the unknown presents itself its more of a case of “oh, ok, didn’t realise that, but its ok, I can change x, y, and z and bingo, we’re back in business” as opposed to “gaaaaaaaaaaahhhhhh! - the end!” :slight_smile:

That would be great thanks Dan :slight_smile:

Stranger things have happened… hehe… seriously though, I am no expert, just offering a perspective/opinion… If it were me I would be happy to have access to a variety of tools that I could use reasonably well to achieve what I needed to do, relatively proficiently, rather than being an expert in only one tool and then find I was locked into that tool/software/approach etc and struggle when facing something different. For example, I currently use Trello for a variety of things (rebuilding my life and getting through a week!) but I doubt I use half of the functionality, I am by no means an expert on the use of Trello, if you asked me to show you how to use a feature I hadn’t used before I would be like “Oh, really, it can do that, erm, sure I will take a look” - and best endeavours would apply to show you, however, for now, I can do what I need to do with it and it works well for what I need. That’s not to say I won’t look at it in more detail later on but I am comfortable knowing that I don’t know all of it’s functionality :slight_smile:

For a whole range of solutions that can be a very good approach. So many times in my previous job we would receive a “spec”, produce an application that was “exactly” what was asked for - only to be then told after months of work it wasn’t any good because it didn’t do this, that and the other… we followed a rigid specification, assuming the user/client knew what they wanted - it was often the case that they didn’t. They had a problem and they often understood what that problem meant to them and the impact, and they had an idea of how it may be solved - then it was handed to IT! lol…

We changed our approach to this with the introduction of Agile / SCRUM… We also started putting together very early on mock-ups of screenshots of how the app may look and what it may do - this gave the user the ability to get a feel for it really early on and they could see what was going to work for them or what was going to be a problem for them and they could feed back to us before we had actually started any coding at all. I used to keep a library of screenshot elements (drop down boxes, navigation items, template web forms) just so that I could knock up the screenshots even faster. Quite often the user realised that what they thought would be the answer really wasn’t. It created talking points, questions with answers, some that were known, some that had to be discovered first at their end. It bought and saved time. The end result was a much better solution that worked for the users/clients and was huge more rewarding for my team.

Re-writing code though - I think you will always find that there will be a need for it. No matter how good you are, how many bugs you’ve squashed, how thorough your planning/preparation, someone will always find a way to screw it up and report a bug! :smiley: Equally, on the very topic of not knowing what you don’t know - this time next year there may be a whole better way of writing that code you produced last week - its 56% more efficient - but you don’t know that now - so we do the best we can now, and be prepared to adapt and embrace any changes as they happen.

/steps down from soap box…

lol… sorry, bit preachy but I am sure you get the idea… sometimes too much specification can tie you down and prevent you getting anywhere, I think there is a balance and each project may have a different approach.

Hope some of this is useful… :slight_smile:

No problem and I do appreciate the insight, and a different perspective. I am always open to looking at things from many angles.

For now, I think I found some tools that will help me learn and will be useful for the first project when I’m ready.

  1. dundoc.com and the reason I’m liking it is because of the game design templates. It is helping me to consider things that I have not discovered, or thought about, yet.

  2. I’ve found a few products that have a workflow of pseudo code to flow chart to C#. Although the output in C# is not quite the same as we would use in Unity, the concept and general structure is there which helps with direction. I haven’t settled on which product I will be using yet, but I absolutely like the idea of typing things out once in pretty much plain English, which automatically generates flowcharting and code. Not that the code is production code, and by no means a copy/paste solution. But it seems like this is the glue between all people involved, especially in an Agile environment. By that I just mean not so technical that others cannot understand what’s going on. And since I’m trying to learn code, it puts me in the ballpark of what would logically happen next on the coding side, so I can then look it up and use the Unity docs as a guide.

  3. Kanboard (Kanban on my own server). For now, I’m considering dropping JIRA and Confluence for open source, free tools. I haven’t decided just yet, but experimenting to see what I like best. The primary reason for JIRA and Confluence was to get experience on industry standard tools. I see they also have a server version of the license which I might consider at some point.

Looks like I have plenty to keep me busy with the Udemy courses and learning the tools. In summary, all is well, I’m starting to find more pieces that make a larger, overall picture.

I don’t recall the name of the game, but thinking back there was a game that as you progress through the game, more and more is revealed about what is in the scene. That is similar to what learning all of this feels like :slight_smile: I would rather light all of the scenes, see what’s there, and then get to work.

1 Like

Sounds like you have some cool tools and some great plans set Dan - good luck with them and please do keep us all updated on the progress, it’s really cool to see what everyone is doing and how they overcome hurdles along the way.

hehe, if only there was a switch for that eh!! hehe… :slight_smile:

1 Like

Privacy & Terms