I just started learning C# 3 days ago in order to make some SMAPI mods for Stardew Valley ('SV'). I've never coded before, and just started with the C# beginners course on YouTube that was suggested in the SV SMAPI guide.

I'm wondering:

  1. What are some good free or cheap resources/tutorials you've used for learning C#/coding in general?; and

  2. Suggestions for good languages/your favourite language which I should try out after I've gotten some idea of C#.

The ultimate goal after just moding is to make a game in similar scale to SV with my mate — it's going to being a life sim/tactics game with similar mechanics to the first two GBA Fire Emblems.

Thanks in advance for any suggestions, beautiful comrades :jeb:

  • vertexarray [any]
    ·
    edit-2
    3 years ago

    I don't have any specific recommendations but I do have a lot of game development experience with C# in and out of a Unity context. If you've got game dev questions or need help with code, you should DM me.

    • YoungGramsci [comrade/them]
      hexagon
      ·
      edit-2
      3 years ago

      Thank you will do, I'm going to have a shot at Unity properly after I've had a go with C# doing mods for Stardew Valley, I'm sure I'll run into roadblocks I'll need advice for.

  • JoeByeThen [he/him, they/them]
    ·
    3 years ago

    Have you looked into Unity? It's a game engine running mostly on c# and they've got a decent amount of tutorials out there. Learning a whole new visual ide might be outside your scope right now, but if you're looking to eventually build a game from scratch it might be worth looking into.

  • MarxGuns [comrade/them]
    ·
    3 years ago

    Probably any tutorial you can find is fine for syntax and basics. Learning good programming practices is a long pursuit that you accrue over time, usually by making lots of painful mistakes. You can read all the best "you should do x, y, and z" books you can but you won't absorb it until you realize why people say to do x, y, and z (real Mao's On Practice vibes, :mao-shining: ). Also, doing x, y, and z don't apply to every situation. Sometimes you do need to use global variables, etc. It's all tradeoffs. I have a bookshelf that's collapsing from all the big heavy programming tomes I haven't looked at in years. They all have some nuggets.

    If you can tolerate boring tech manuals, read the latest C# language spec. Read up on how the CLR works and the IL (there are specs for these too). Learn to use the C# compiler from the command line too (it makes it easier to understand what Visual Studios (or whatever) has listed as options).

    As far as languages, you should 'touch' all of them if you want a wholistic view. Rust is nice. Even C is alright. Have a peek at Java to see how similar it is to C#. I guess for what's next depends on how big of a jump from C# you want. There are practical answers but those are less fun.

    • YoungGramsci [comrade/them]
      hexagon
      ·
      3 years ago

      Yeah that's true, I'm expecting to make a lot of mistakes, I will touch of written manuals once I've done a few video courses so hopefully (?) what I read will at least make some sense. But again totally expecting to ruin something I've spent hours on :cat-confused:

      I just quickly skimmed some stuff on CLR from the official Visual Studio forum, and it sounds super interesting but a bit beyond me just yet.

      And thanks I was thinking about C and Java seems like something practical to know. Haven't heard of Rust so I'll add it to my list :cat-vibing:

      • MarxGuns [comrade/them]
        ·
        edit-2
        3 years ago

        Haven’t heard of Rust ...

        :eye-twitch:
        Rust is something that's hard to realize why it's so great unless you struggled with C or C++ and had learned Haskell and maybe something like Python or Ruby, I think. I'd tinkered with all sorts of languages before Rust really started taking off so I could see it's advantages as it developed. What Java and C# did with class inheritance (only one extending class), Rust is doing with ownership (only one owner of data at a time). It's similar to only having one writer and multiple readers in the classic multi-access problems (I can't remember what the formal name for this class of problems is).

        And yeah, don't get stuck in the boring now, exciting later details (compilers, CLR, etc). You only learn to program once (even when you start doing something 'weird' like Haskell or Prolog or J).

        I think that you sound like you're off to a good start.

        • YoungGramsci [comrade/them]
          hexagon
          ·
          edit-2
          3 years ago

          You sound like you've been on a long and difficult journey comrade :sankara-salute: .

          I'm still interested in having a look at C++ at some point in the nearish future, but I'll have a shot at Rust before I do that, the concept of ownership sounds interesting -- at least from what I'm reading in the defiiniton section in the guide on rust-lang website.

          And thanks, I'm taking this a step at a time, this is the first time in a while I'm learning something that I think about while I'm at work and want to race home and do -- actually kind of wild how much this has swept me up tbh.

  • CatherineTheSoSo [any]
    ·
    3 years ago

    First C# tutorial I did was codeacademy. I think the interactive thing where you run the code you write in your browser window is pretty cool.

    • YoungGramsci [comrade/them]
      hexagon
      ·
      3 years ago

      Nice, the tutorials I've been doing have been step by step through Visual Studio, so definitely keen for more practical learning — I'll try Code Academy after I'm done with the current set of tutorials :zizek-ok:

      • CatherineTheSoSo [any]
        ·
        3 years ago

        Eh, it's pretty basic. I doubt you'd find it interesting after finishing other tutorials.