Great course! My feedback and wishlist

Thanks for a great course, Hugo. I really enjoyed it and learnt a lot. I’m going to take a shot at incorporating the inventory and skill systems from the RPG course.

First up my feedback (in no particular order):

  • I find it odd that some of the variables (or magic numbers as I believe they were called) such as stopping distance etc are defined in the methods. It’d be easier to find them if they’re just declared as a class variable.

  • I found myself lost on more that a few occasions. When changing files, you’d say “And over here…”, jump to another file & then quickly scroll through to another method. I had no idea where you were and had to rewind to try to catch up. This is also made harder because the capture size is zoomed in, so we can’t see what the method name is. VS Code makes it hard to tell what tab you’re on. Visual Studio Community can show the class & method names along the top of the screen. If this is possible to show in VS Code, it’d make things a lot easier.

  • I think I also would have liked to see a few more challenges. I found they helped on the RPG course because I’d have a go myself, see how different my solutions are, then I’d change what I did to match Rick & Sam anyway. That way I’m not trying to adapt two differing sets of code.

  • Why no namespaces? It was really pushed in the RPG course about separating code into namespaces to help keep code clean and separate. (I realise this is more of a personal preference).

  • I also found the hierarchy getting really messy. All the objects were just dumped in there one after the other, making it hard to find things. For all the talk about “clean code”, I found this odd. I took the time to sort things in named groups.

And now for the fun stuff…the wishlist (in no particular order):

  • Multiplayer: I’d love to see this adapted as a multiplayer game. With the COVID pandemic still nipping at our heels, this could be the basis for a fun multiplayer game. It could even be the basis of a Virtual Table Top RPG system. The enemies could be fully AI driven or controlled by a game master player.

  • Extend the AI: With the current AI, my enemy units walk straight into the middle of the players. Perhaps they should stop when in shooting range, or even specify between ranged & melee tactics. Ranged enemies will take cover and shoot from a distance, where melee units will rush in with swords ready.

  • Cover: Enable terrain such as columns and barrels / crates to provide some kind of cover for units.

  • Saving and new levels: I realise this is covered in the RPG course, but it could be good to see your take on how to handle this.

Anyway, that’s my wall of text. Remember that’s all my personal opinion. What didn’t exactly work for me will be fine for plenty of others! Overall I loved the course.

Thanks again and I look forward to seeing hopefully plenty of more tutorials from you on GameDev.tv.

Cheers,
Jim.

2 Likes

I went with local variables for those things to keep the code as simple to read as possible, I didn’t want the final scripts to have tons of parameters you can change in the editor. But yup changing them to a serializeField is a super easy change if you want to easily edit them.

That’s interesting on the capture size, were you watching the lectures in 1080p? Or were you watching on a phone? I changed the windows size to 125% so it should be pretty visible.

Personally I don’t find namespaces all that useful when working on a single game so I don’t tend to use them. I absolutely use them when I’m making a completely separate package, so for example my utilities that I use in all my projects are in a namespace, as are the various separate assets that I’ve built.
But when working on game logic for a single game I find that they just add space with no tangible benefit.

The objects in the hierarchy, yup you could place all the Grid visuals in a single game object to keep the hierarchy a bit cleaner. I didn’t feel the need to do that since all the generated objects are at the bottom, so if there’s an issue during playmode chances are the object you want to look at is right on the top.
If I were to continue building upon this as my own personal project my next step would be to refactor the grid visuals to use a single mesh which would end up fixing that same issue Code Monkey - Custom Tilemap in Unity with Saving and Loading (Level Editor)
Code Monkey - Awesome Grid Building System! (City Builder, RTS, Factorio, Survival)

I’m planning to cover multiplayer when Netcode for Game Objects comes out of preview, so perhaps I’ll look into adding that to this game, if it’s easy to add that could be a fun addition.

The tricky thing with an AI expansion is that AI is extremely specific to the Actions it tries to do, so I’m not entirely sure how I could do an AI expansion that could also be applicable to other actions, since everyone that decides to continue building upon this base will end up with completely different actions.

Yup cover is a pretty simple one so it’s something I might cover in an update.

Saving and loading could be another simple expansion, it shouldn’t be too difficult to implement.

I’m glad you enjoyed the course!
Thanks!

2 Likes

Thanks for the reply.

With the capture size, it’s perfectly readable (I’m on 1080p). It’s just with the text zoomed up to 125%, there’s less lines shown on screen, so it’s harder for me to keep track of which method you’re in. The method name has scrolled off the top of the screen at a rapid speed.

Also it’s hard to tell which file you’re in as the tabs don’t really look all that different. But that’s more of a UI issue with VS Core than anything.

Thanks again for the reply & also the hard work you put in to the course. I’ll be sure to check out the videos you linked.

Cheers,
Jim.

While Hugo isn’t a fan of namespaces in an individual game, there’s no reason you can’t utilize them using your experience from the RPG course. In real life, when we’re designing our own games, there’s often nobody around to give us the namespace ideas, so it’s good practice to work these things out for ourselves going forward.

I’m going to defend Hugo on not using namespaces for this course, when we used it for the RPG series. This project is nowhere near the scope of the RPG course which actually contains many more elements. As namespaces are already well covered in the RPG series, it doesn’t make a great deal of sense to rehash those elements in every single course.

It happens that I did split my personal project into namespaces as I went through the course (I pretty much always use namespaces from the start of any project). As an RPG graduate, I’d like to challenge you to do the same. Commit your project in source control first, of course. Remember that as you move classes to different namespaces, the scritps that depends on that class will throw errors, so at each class, you’ll likely find yourself jumping through the code fixing errors along the way.

1 Like

Hi Brian,

The non-use of namespaces wasn’t an issue. I mainly asked out of curiosity, but I fully understand why Hugo didn’t use them. It does make sense for a less complicated project than the RPG course not to use them.

I actually started adding my own namespaces about half way through the course as I knew I’d eventually make a copy of the project and start bringing in the inventory etc from the RPG course.

I suppose I’m just used to using them anyway because at work our projects always have additional projects added at a later date. Some of the projects get so stupidly convoluted that we have to use them.

Cheers,
Jim.

1 Like

Privacy & Terms