How much C# should I learn before transitioning into learning Xenko?

I’ve played around a bit with learning C++, and dabbled just enough with the Unity and Unreal engines to be overwhelmed, which recently made me decide I need a much stronger coding foundation before I get into using any game engine. I chose C# because it seems fairly (relatively speaking) easy to learn, and get up and running with, compared to C++, but is still pretty flexible in what you can use it for – at least for my purposes.

My programming interests obviously are in game design and development, which I’ve had a strong interest in for many years. While doing my best to become more fluent in C#, I’m also learning (slowly) to work with Blender for 3D modelling, etc. I feel have a long way to go before I’m fully comfortable with either one, but I’m much farther along with C# than Blender – just because I’ve been playing around with learning programming for much longer.

I’m curious at about what stage with learning both, or at least with C#, should I seriously get into learning Xenko? It seems to me like it might be awhile. I’m still learning, and Xenko (even at this stage) seems a bit lightly documented – at least when it comes to useful beginner tutorials, which barely exist at all for the time being. I’m sure that situation will improve over time. Which will probably workout fine for me, since I feel I’m not quite ready to dive into using any game engine just yet anyway.

Any thoughts or opinions on how much farther along I should be with C# before I bother trying to learn how to work with Xenko? What additional things, such as learning Blender, GIMP, more advanced aspects of using C# and the .NET framework (such as WPF, XAML, etc.), should I also consider learning as stepping stones in the right direction?

It’s kind of hard to say as it kind of depends on each person and on what you will need to write for your game.

You’ll need to understand the basics of object-oriented programming (and the specifics in the C# language), such as class, struct, fields, properties, methods. Then as a more advanced topic knowing the async/await pattern will be definitely a plus when writing scripts (esp. AsynScript), although you can skip it and stick to the SyncScript.

I’d recommend a book that greatly helped me when I myself was learning C#: C# in depth by Jon Skeet. I know he is currently working on a new version (4th), so you could either wait (Spring 2018) or buy the currently available version (3rd). You can probably find a second hand book for a good price.

Once you have read and understood this book, you can go next level with CLR via C# by Jeffrey Richter. It is much more technical and in depth and is probably not needed for the hobbyist developer but it is a good read. Again there is a new version (4th) coming soon (August) so maybe you can wait a little (you need to read Jon Skeet’s book first anyway :wink: ).

For Xenko itself you won’t need to learn WPF or XAML. That is if you want to make a standalone game. On the other hand if you want to integrate Xenko into w desktop application using WPF or WinForms then yes you will need to master those technologies too.

Lastly (and very surprisingly) I can recommend you to learn a bit with a more simple game engine such as Monogame and then come back later to Xenko once you are more confident.

Thank you, Kryptos. That first book recommendation, Jon Skeet’s C# in Depth, sounds pretty good for something more…in depth. (Pun fully intended.) That’s exactly the sort of stuff I’m looking for to move forward with learning C# more fully. There are a lot of learn C# books out there, so it is always difficult deciding which ones to get next.

I am currently working through Nakov’s Fundamentals of Computer Programming with C#, which is pretty good. It has a lot of exercises in it that force you to use your head to come up with problem solutions. At 1,122 pages, its a long book, covering a lot of ground, but I believe it also may be somewhat out of date. It’s still a worthwhile read for a beginner though, especially if you stick to completing the exercises as the learning retention, and thinking in code, tools they are meant to be.

I also enjoyed Bob Tabor’s video C# Fundamentals for Absolute Beginners at the Microsoft Virtual Academy. Tabor has got a further C# ASP.NET oriented course online at Developer University. It has a free text only version, which I have yet to checkout. I’m still heavily in Nakov’s excellent book for now.

Since you mentioned working with a game engine like Monogame first, what do you think of learning that with a book like A.T. Chamillard’s Beginning C# Programming with Monogame? It seems to be well rated. On the other hand there are quite a few tutorials listed on the Monogame website, so maybe an additional book really isn’t required to get started with that?

1 Like

Honestly, I’m not absolutely sure about this last. I’ve looked into Monogame. It’s a game programming framework, rather like XNA (that it is an open source version of, since MS stopped development of XNA – for whatever reason), rather than a full game engine with a scene editor, etc.

Monogame is supposedly great for Iearning low level graphics programming, or building a beautiful 2D or 3D game, with maximum control – that isn’t too demanding. At least for Windows. To develop for mobile platforms it seems to be more difficult and troublesome to use successfully.

I’m really only mainly interested in developing for Windows PCs right now, so developing for mobile platforms is not a major issue, but it could be in the future. I am, however, very interested in 3D game development, and Monogame really isn’t recommended for that – though it is certainly capable of it.

Monogame’s development future seems somewhat questionable as well. Not all it’s users are exactly thrilled with it either, though many do also seem to adore it – despite its many troublesome quirks. This begs the question of whether or not it is worthwhile for me to invest time learning it – even if it would just be a simple projects stepping stone into using a more full featured engine like Xenko.

Could I also not learn to do fairly simple projects at first using Xenko (including 2D), and just have that much further of a head start working in the type of engine I would end up wanting to use in the end anyway? I’d be interested in your opinion on that, but it also sounds like maybe a question I should ask on a separate thread? Honestly, I’m not sure.

Yeah, I’m not sure I’d start out by learning Monogame. That said because it’s low level there are some advantages to tinkering with it a little. Remember higher order engines like Xenko break down to the same structures under the hood so having some insight to what is going on can frequently be helpful.

If you wanted to round out your education, fire up Monogame, get a graphics device initialised and render out a couple of shapes and maybe a spinning cube or something. Just enough to get a little exposure to render pipelines, primitives and things like that.

It’s good foundation stuff and the concepts apply to pretty much every engine, you’re just a lot closer to it in MG.

Now back to Xenko, if you’re learning C# and game dev at the same time then I recommend starting with something that has small iterative challenges. The classics are good to turn to like Pac-Man.

  1. Get a 2d orthographic scene up and running
  2. Render a sprite/entity to the screen
  3. Make the sprite respond to keyboard control
  4. Make walls the sprite can’t move through
  5. Make other spites where the player dies if they overlap each other
  6. Make those other sprites move according to some logic

Nice small challenges you can knock out sequentially and have an actual game at the end of it.

A.

That makes some sense, learning how render pipelines, primitives and things like that work. Those would probably be useful things to know for helping out with digging deeper to resolve performance or bug issues that I will almost certainly be encountering in the future.

That sounds like pretty good advice. I will reconsider staring out with Monogame. Thank you.