6 votes

Eight questions for anyone who has developed a game (especially with Unity's Engine)

(I already wrote this once, but my phone didn't like it and randomly deleted the whole thing... ◕∩◕ )


I've been wanting to develop some games for a while now, and I have an overarching theme idea in mind. I couldn't decide on top down pixelated game or 3D style, because it's more of a visual story kind of game, where you explore, build a base (or several), meet and talk to NPCs, learn the story, etc. I want a lot of detail but I only have (minimal) experience with pixelated games. So naturally, 3D sounds better for a higher detailed, and maybe stylized environment.

I don't know much at all about code ( for example, I had to look up how to format this post). I don't even know what languages there are other than Java. I make resourcepacks for Minecraft, but that's minimal coding for the .mcmeta file. I do also make fabric mods for it, but I use MCreator for those, which I'm sure is like training wheels for coding.

I have the skills for graphics for both characters/environments and GUI/HUD elements. I have an idea for my story, and a few ideas for characters. What I know I don't have is experience in balancing things like economies, rpg skills, fighting, and weapons/armor and their upgrades. But I'm not really planning on implementing those, at least not right now. (The economy would be first if I did)

I recently saw a video on youtube showcasing Unity Engine's nanite environments, and basically, I want in on that. They're gorgeous.

The Questions

So my 8 questions are, on a scale of one to ten (ten being basically impossible for one single person to do), how difficult would it be to make these elements in a singleplayer, 3D game for someone without experience (like me):

  1. Sky, ground, objects (like trees, flowers, rocks, etc) and other environment visuals' 3D models for exploration? I need to be able to walk on it, and maybe hit things like trees for lumber.

  2. Base building and gathering the materials to build? This comes with the inventory issue as well (looking at you, Minecraft), which I'm still trying to figure out how I want to do this.

  3. Crafting said gathered materials for building elements and items to gift to NPCs? This will need GUI and workbench, most likely.

  4. Collectibles? Think koroks from BoTW or the museum artifacts in Stardew Valley. I'd like for the player to be able to display these only in/on a shelf/table/glass case inside their base(s).

  5. NPCs with many hours worth of randomized dialogue interaction, gifts to and from NPCs, as well as a few friendship levels and unlockable interactions/gifts?

  6. What would the time frame look like for me to learn Unity's Engine for these elements, or is there a better engine I should be aware of?

  7. What materials might you guess that I'd need to spend money on to make this game? I already have: a Mac, the Adobe Suite, a drawing tablet, all the time in the world, and ideas. Would I need a license for anything?

  8. What have I overlooked? 3D modeling (and not just blocky models in blockbench) is a skill I realized I'd need to learn just as I was writing this post.

The reason I'm asking so many questions is because I can't tell if trying this will be worth my time or not, and if I could afford to hire someone for parts of it, if need be. I have ADHD, so I'm wondering if this is just the "new shiny thing" that has caught my eye (probably is). I don't want to dive into a major learning session and project development if it ultimately won't go anywhere because it's too hard for my smooth brain.

Then again, I see some games (what I would consider low quality) that I'm like, "man, I could've done that, that looks so simple and easy!" So basically I have no idea whether I'm near the peak of Mt Stupid on the Dunning-Kreuger graph, or if I'm past it and somewhere in the valley.


Any advice is greatly appreciated.

Also, feel free to talk to me like I'm a dumb 5 year old.

11 comments

  1. [2]
    j4th
    Link
    Hey! I saw you didn't get a response yet so wanted to throw something out there, but please understand this is going to be coming from a general programming perspective, not a game dev one. May...

    Hey! I saw you didn't get a response yet so wanted to throw something out there, but please understand this is going to be coming from a general programming perspective, not a game dev one. May still be helpful perspective though.

    In my mind, the most important thing to address first is:

    I don't want to dive into a major learning session and project development if it ultimately won't go anywhere because it's too hard for my smooth brain.

    I don't think this is a particularly constructive concern for someone just learning in the space; building projects that go nowhere just to learn is part of the fun of coding! I think unless you enjoy the learning process enough that this isn't an issue, you'll be setting yourself up to fail when you run into roadblocks when a drive to learn and discover would otherwise get you through them. This is by no means a small undertaking, so coming at it purely expecting results while still learning is a recipe for an abandoned project.

    Now more specifically to your questions: 8 is certainly a lot, and it's almost impossible for anyone to give a clear answer, especially if you don't have experience yet in the domain as everyone learns different things at different rates. The ONLY way to know is to start trying and assess yourself.

    As for the individual components and how they are done, I think you would be best served reading repos of games that implement similar systems; this can also give helpful direction to your learning.

    If you can't read the repos because you don't know the language well enough, then your first step would be building that literacy imo.

    Finally, don't get into your head about "the new shiny thing." So what if it is. Even if it is, it's giving you motivation and interest/excitement into something new, use that, learn, and have fun!

    7 votes
    1. Oslypsis
      Link Parent
      Thank you very much for answering! I still have quite a bit to think about. I appreciate the advice.

      Thank you very much for answering! I still have quite a bit to think about. I appreciate the advice.

      3 votes
  2. [3]
    kru
    Link
    I guess a key piece of advice that I'd offer is that making games is hard, even simple games. Hard, but fun and totally doable if you're willing to learn. Those games that look like they're low...

    I guess a key piece of advice that I'd offer is that making games is hard, even simple games. Hard, but fun and totally doable if you're willing to learn.

    Those games that look like they're low effort, which spawn the "I could do this!" thought, probably have a lot of heavy lifting scaffolding behind them that goes unseen. Shipping a game is hard, and I have respect for anyone who manages to put something out on steam that is more than a simple asset flip. That "I can do this!" thought is excellent, and you most certainly can do it, if you're ready to put in the dedication needed to pull all of the disciplines needed to craft the product you
    want. The amount of time and effort you'll need depends a lot on the scope of your ambition. Shipping a game is a lot like writing a book. A short novella is a lot easier to finish than a 3 novel trilogy.

    When I approach a new project I first consider the basics: How is the player going to interact with the world, and what does the world need to know to interact back with the player. Break down the game needs into the disparate systems. You've already identified that you'll probably need an inventory, that's great.

    Some typical systems that modern games tend to require as a base level of sophistication:

    Save game system - How is your data serialized to disk and restored when starting a new session?
    Game settings - both graphics scaling settings as well as in-game settings, getting this scaffolding set up early will make integrating the settings into your project much easier (shoe-horning settings in at the end of a project is more painful than having them ready to go as you develop features)
    Replication for multiplayer - If your game is multiplayer, then you'll need to get your networking stack figured out asap. Foruntately, unreal makes this pretty easy, but you'll still need to understand how their replication works before you get too far into development.
    Player profiles - Profile management/integration is required for consoles, and just generally useful for people who have multiple gamers playing in the same household.
    Character and animation pipelines - How are artists getting animated characters into the game? This will evolve over the life of a project, but it's important to get a skeleton process fleshed out early.
    World Transitions - This one seems like a detail, but knowing how the game world is structured is important. Are there discrete levels? A seamless streaming procedural world? Something else? The data structures need to be figured out early before designers can go in and start building parts of the world.

    Now, if you just want to dive in and make a game to have fun and learn about making games, the above things aren't too important. But, if you want to ship a title, they're very important pieces to get figured out before your prototype goes beyond a few months of dev time, otherwise your future self will be cursing you when you run into these walls. Heh. I know.

    Fortunately, Epic gives you a lot of guidance for some of these unsexy parts of game dev. I highly recommend studying how epic put together their Lyra game sample. They did all of the important stuff for you, and make it pretty easy to build off of a fairly complete modern game. In fact, if you have the patience and aptitude, I suggest building your game as a module for Lyra rather than building from a brand new project. Now, if you've never done any development before, I'd suggest building some simple prototypes from Unreal's first person, third person or top-down starter projects. But, once you've gotten a feel for how blueprints work and how the engine works, switch over and create a project using Lyra as a base. Lyra has a lot of added complexity that can be super confusing. Even though I am a seasoned developer, I still found their multitude of config files very unintuitive, and it took me a good 4-5 weeks of study before I became comfortable with the shape of the Lyra project. But now that I understand its architecture, I see that it's a great base from which to actually ship a project.

    That said, none of the features you've mentioned in your questions stand out as difficult to achieve, even for a novice developer. I think you can get the skill necessary to get the features together within a year or two of devotion. At least, after the first 3-4 months of development, you'll have enough perspective to know if you're biting off more than you can chew.

    As far as what tools you need to get started: Unreal, Blender, Krita, Cascadeur and a willingness to use Google (or Duck duck go) to find answers to the various problems you're going to run into. All problems are solvable, but learning how to phrase your question to weed out the non-answers is a skill that's hard to teach.

    I guess my overall message here is that game dev is hard, even when it looks easy. But it's super fun and I don't want to discourage you from diving in and learning.

    7 votes
    1. [2]
      Oslypsis
      Link Parent
      Thank you! That was very informative. So, what did you mean about the serialized save disk? I've never heard of that before. I just downloaded the engine and I'm starting off in the third person...

      Thank you! That was very informative. So, what did you mean about the serialized save disk? I've never heard of that before.

      I just downloaded the engine and I'm starting off in the third person template. :)

      2 votes
      1. Bwerf
        Link Parent
        Serializing is just the process of converting whatever state you want to save between sessions into something that can be written to disk (things like where your character is, what's in your...

        Serializing is just the process of converting whatever state you want to save between sessions into something that can be written to disk (things like where your character is, what's in your inventory, what the npcs think of you, etc). The opposite would be deserializing that you do when you read the save file and want to apply it to the game again.

        3 votes
  3. Gekko
    Link
    Making games is a ton of fun but it's also a ton of work! I used Unity for many years and it's a nice engine for solo projects. The first thing you're going to want to do follow along with their...

    Making games is a ton of fun but it's also a ton of work!

    I used Unity for many years and it's a nice engine for solo projects.
    The first thing you're going to want to do follow along with their tutorials to make simple little experiences just to get familiar with the tools you will be using.

    Then, make and finish a game before starting your dream project. Keep chipping away at your main idea, keep planning, but the biggest barrier is making an experience that can be played from start to finish, even a single level of a mario knock off.

    It's great for your confidence, you will learn about what hurdles you may come across making a bigger project, and will let you use most of the important tools in the engine and get familiar! Additionally, if you run into any issues, thousands of people making similar small projects have posted about the exact same issues online so it's a great resource.

    The biggest part is going from "I want to make a game" to "I can make a game" to "I can make my game". The worst part of game development, especially for my friends in the industry who grappled with adhd, is biting off more than you can chew, trying to work on too many features or too big a scope before you're ready or know what that entails.

    EVERYONE falls for the trap of saying "I'm built different, I can realize my dream from the start because I have motivation and passion" Naw, it's like learning to paint or play an instrument. Start simple, master the fundamentals, and you'll have a great point in which to grow. And you'll get to know if you like making games before you're stuck in a mega project.

    And if you're like "but I don't want to waste a lot of time making game I'm not passionate about" then aim real small, make tictactoe or an idle clicker game or something. Just make something so you can say FUCK YEAH I CAN MAKE A THING. The best, most successful devs have a bunch of little trash projects and experiments under their belts before starting the games they're famous for.

    5 votes
  4. hamefang
    Link
    A few tips from me, with a disclaimer that I don't actually have a finished game under my belt, just an in-progress project I work on ocassionally with my friend + a lot of reading/watching...

    A few tips from me, with a disclaimer that I don't actually have a finished game under my belt, just an in-progress project I work on ocassionally with my friend + a lot of reading/watching various resources.

    1. A video game, unless it's very simple and tiny, usually takes at least a few years to make for a solo developer. Just so you have an idea about the time frame here.

    2. It's worth it to search for devlogs on Youtube and see how others are approaching their solo game developer journey. Also check out gamedev communities, such as gamemaking.social and gamedev.place, or look for a Discord servers for users of your pick of game engine.

    3. Write down useful things you learn and figure out as you go. Save cool code snippets and links to recources where you found solutions to your problems, and write down the context for them. Document your game. Document it all. Memory is a faulty thing, and making a game is a long process. Make it harder to forget things about your code and project when you go back to it after a break.

    4. Consider participating in a game jam.

    5. GameFromScratch is an excellent source of gamedev news. I recommend following.

    6. There are many game engines out there. Unity and Unreal are pretty heavy, geared mostly towards big game studios. For a solo indie game, you might want to check out Godot engine instead. It's a free and open source engine, and it has quite a few resources available out there to learn from. Some examples: (1) (2) (3) (4). Also check out this thread on Tildes about Godot.

    7. You can find bundles of various gamedev assets and resources on Humble Bundle on regular basis. There's one for learning Blender up right this moment, which you should probably look into if you are interested in making custom 3D art for your game.

    8. Continuing on with 3D art, Kenney has many free assets that you might want to check out if you decide on a more stylistic rather than realistic approach to game art. Kenney Shape and Asset Forge could also be of interest, although in this case they are paid tools.

    9. If you change your mind about pixel art, Aseprite is probably the best tool to learn in that regard.

    10. Itch.io has a lot of gamedev assets, some free and some paid. It might be worth taking a look to see if there's anything that would fit your project and save you some work.

    11. For game music, check out Kevin MacLeod, and keep an eye out for Humble Bundles with royalty free music.

    4 votes
  5. Bwerf
    Link
    To answer your 8 questions: That sounds like things you'll need. You may also want to create invisible assets for certain things. E.g. interaction points that can be placed on any other asset. Or...

    To answer your 8 questions:

    Sky, ground, objects (like trees, flowers, rocks, etc) and other environment visuals' 3D models for exploration?

    That sounds like things you'll need. You may also want to create invisible assets for certain things. E.g. interaction points that can be placed on any other asset. Or invisible collision volumes that pop up a message telling you that you're entering a new area, those kind of things.

    I need to be able to walk on it, and maybe hit things like trees for lumber.

    You should look into the physics engine for interacting with things, how to set up collisions. There should be a tutorial available for your engine of choice that covers this, just search on google (or your search engine of choice).

    Base building and gathering the materials to build? This comes with the inventory issue as well (looking at you, Minecraft), which I'm still trying to figure out how I want to do this.

    You need some data structure that keeps track of what you have in your inventory, and designing a hud to visualize this, once again, there should be tutorials helping you how to implement this.

    Crafting said gathered materials for building elements and items to gift to NPCs? This will need GUI and workbench, most likely.

    Collectibles? Think koroks from BoTW or the museum artifacts in Stardew Valley. I'd like for the player to be able to display these only in/on a shelf/table/glass case inside their base(s).

    These would just be object similar to the stones and trees above that you can interact with, then you place them in the world as makes sense. For the display I'd build the whole area to keep those collectibles in your level editor and just set them to invisible until you have picked them up. Give each collectible a unique name that you can use both in the placed item in the world, in your inventory and the museum.

    NPCs with many hours worth of randomized dialogue interaction, gifts to and from NPCs, as well as a few friendship levels and unlockable interactions/gifts?

    Writing dialogue and setting up the rules takes a lot of time, I would scale down the number of npcs and/or dialogue. I would probably use a plugin for managing the dialogue, there's a lot of those out there. Search on the asset store for your engine or google it.

    What would the time frame look like for me to learn Unity's Engine for these elements, or is there a better engine I should be aware of?

    Hard to say, but if you want professional looking quality it's probably on scale of years, just to learn the skills good enough, getting a prototype with all of the things on your list could probably be done in a couple of months if you're dedicated and are not too concerned how it looks and feels.

    What materials might you guess that I'd need to spend money on to make this game? I already have: a Mac, the Adobe Suite, a drawing tablet, all the time in the world, and ideas. Would I need a license for anything?

    Everything can be done for free if you want.

    What have I overlooked? 3D modeling (and not just blocky models in blockbench) is a skill I realized I'd need to learn just as I was writing this post.

    As I wrote in my other post, I'd go the 2d route if I was you, I mentioned some skills you'll need there. You have not mentioned sound in your post, so I think that's something to add.

    As a general recommendation I'd suggest you start by building whatever seems simplest for you, follow some tutorials and then once you feel like you know what you're doing you polish those things so that they're really good. A game with interesting exploration and collectibles is gonna be more fun than a game that does all of your list but poorly, likewise would a game with a lot of good dialogue.

    4 votes
  6. [3]
    Bwerf
    Link
    On Mobile, so gonna be a short one, for now at least. It looks like you're confusing engines. There's one called Unity and one called Unreal Engine, Unreal is the one with nanite. You probably...

    On Mobile, so gonna be a short one, for now at least.

    It looks like you're confusing engines. There's one called Unity and one called Unreal Engine, Unreal is the one with nanite. You probably want Unreal of those two, but either is really good enough for your current project. As this is a hobby project I would say download one of them and try it out. Thats all I have time for right now, but good luck :)

    2 votes
    1. [2]
      Oslypsis
      Link Parent
      Yes, it was Unreal Engine, not Unity. Thank you. I'll probably at least try it, like you said.

      Yes, it was Unreal Engine, not Unity. Thank you. I'll probably at least try it, like you said.

      2 votes
      1. Bwerf
        Link Parent
        Some additional tips, I'd go with the 2d path if I was you, 3d art takes much longer to create. For 2d art you need to learn how to draw in a tool and some basics about animation to get the...

        Some additional tips, I'd go with the 2d path if I was you, 3d art takes much longer to create. For 2d art you need to learn how to draw in a tool and some basics about animation to get the feeling in there. For 3d art you need to do that, then you need to learn modelling, rigging, texturing, uv mapping and animating in addition. Not to mention that once you have those skills creating each asset is still much more timeconsuming than the 2d assets. Then the whole gameplay logic and math is harder in 3d. Another option is not creating the assets yourself, I would actually recommend that, at least to start with, others have listed resources where you can get these. In addition to those, all the major engine has some store connected where you can often get assets very easily, many of which free. Still, 2d is gonna get you much quicker to your goal, because everything will be easier.

        When it comes to game engine I think it comes down to your aptitude for programming. Unreal has a very good visual scripting system called blueprints that you can use without knowing how to code and that can take you very far. Next step codingwise I'd say is Godot and gdscript, an actual programming language. Godot is a capable free engine as someone else mentioned, and it has a very good momentum right now, so I expect it to become even better quickly. Gdscript is much simpler than c# (unity) and c++ (unreal) and probably perfectly capable of covering all your needs. If you know someone that already knows how to use one of those engines (or another one, there's a lot out there), go with whatever they know, all other comparisons are basically meaningless compared to a good friend that can help you out when you get stuck.

        Also as someone else mentioned making a full game takes a lot of time. But I wouldn't worry about that, making a prototype of the main gameloop is not nearly as timeconsuming if you throw out all the saving to disk, main menu and all the features needed to make the game fun for more than 10 minutes. It's still gonna be a decent chunk of a project for a beginner, but definetely accomplishable.

        Once you got your feet wet and things start to make sense you should look into using a version control system like git. But don't worry about that from the start, there's a lot for you to take in, and focus on the things that give results. Just keep it in the back of your head that you want to look into this eventually.

        1 vote