Quest Implementation

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 มิ.ย. 2024
  • I talk about the design and coding of the system I use to structure and implement quests in role playing games.
  • เกม

ความคิดเห็น • 71

  • @DBROstalos
    @DBROstalos 8 หลายเดือนก่อน +91

    For me, as an indie developer working on my own game, your channel has already given me many times more than people speaking at conferences or training courses. A real diamond.

    • @JamesLee-mp8hk
      @JamesLee-mp8hk 8 หลายเดือนก่อน

      What kind of game are you working on? Is it an RPG? Could you tell me about it? If you'd rather not no worries but I love RPGs particularly indie RPGs .

    • @stevedowning3892
      @stevedowning3892 8 หลายเดือนก่อน +1

      Me too, although I speak as a rank n00b who only downloaded Godot this week

    • @DBROstalos
      @DBROstalos 8 หลายเดือนก่อน

      yes it is a turned-based RPG insipred by KOTOR2 in terms of story and setting but with Megami Tensei/Persona combat, so it's a mix between EU and Asian gamedesign sort of @@JamesLee-mp8hk

    • @Deadener
      @Deadener 8 หลายเดือนก่อน +2

      Tim has been a bad influence on me. I just want to make reasonably scoped games that I can ship within a few months, and as I watch these videos, I can feel a devil lean over me and whisper in my ear:
      "You could make an RPG."

    • @sp33kz
      @sp33kz 8 หลายเดือนก่อน +1

      Abso-fuckin-lutely. I love that you get the technical side of things as well as the broader, more people-oriented side.

  • @TheForbiddenLOL
    @TheForbiddenLOL 8 หลายเดือนก่อน +14

    As simple as this is to program, I really appreciate hearing someone from the industry talk about the structure of a system like this. I'm always thinking to myself while coding these systems "Is this really the way it's *meant* to be done?".

  • @Bloodthirst
    @Bloodthirst 8 หลายเดือนก่อน +35

    One thing id like to add that wasn't mentioned is that preferably avoid using pointers to point to other entities from within the quest and try to use indicies or IDs , this will make serializing/deserializing much less of a pain and coying/passing the quest as a POD much safer since you're just passing data and not pointers that might be invalid for whatever reason

  • @Developesque
    @Developesque 8 หลายเดือนก่อน +5

    Thanks for talking about all of these things. I work in the early and late hours and all weekend on my indie games, by myself, so I don't get to hear the daily banter that aids in skill development.

    • @CainOnGames
      @CainOnGames  8 หลายเดือนก่อน +5

      I think that banter is what I miss the most as I start the retirement process. So I'll keep talking for a while. :)

  • @echoness_
    @echoness_ 8 หลายเดือนก่อน +14

    Thank you, as a programmer I really apprecite the insight of how to consider project structure. The architecture is not only about the games functionality but also helping the development team boost their efficiency.

  • @developerdeveloper67
    @developerdeveloper67 8 หลายเดือนก่อน +23

    Tim, can you compare C, C++, C#, talk about your experiences making games with these languages, early on in your own engines and later on on Unity (Pillars) and also tell us what did you enjoy more doing?

    • @EyefyourGf
      @EyefyourGf 8 หลายเดือนก่อน +1

      C or C++ is not used in unity only C#,and i say that because you clearly said early on in your engines and now in unity.

    • @jextra1313
      @jextra1313 8 หลายเดือนก่อน +1

      I wonder if Tim liked or disliked the higher-level nature of C#, due to his familiarity with C/C++.

    • @theultimateevil3430
      @theultimateevil3430 8 หลายเดือนก่อน

      I'm not Tim, but here's my unwelcome subjective experience: C is garbage, C++ is ultimate garbage (though you can't do graphics/engine programming in anything else but; the alternatives has only started to appear lately with Rust and Zig), C# is nice for gameplay programming (can't program engines with it because of garbage collector) and is usually a go-to choice as a scripting language in a game engine.
      You can make tools for your game engine with whatever, Python is widely used (but it's subjectively horrible, pick C# instead). Tools for Unity is made with C# plugins, the gameplay code is C# as well. C# performance should be enough. There's no much support for native languages (C++ etc.) for gameplay programming in game engines in general, aside from UE (but it's cursed). Historically, some engines went with their own custom languages for scripting (UnrealScript, etc.). The language for a programmer doesn't matter as much as the tooling around it, basically, you pick the right tool for the job and go with it.

    • @human-ft3wk
      @human-ft3wk 7 หลายเดือนก่อน +1

      @@EyefyourGfhe didn't imply C or C++ was used in unity, he mentioned all 3 languages

  • @bushwhackedonvhs
    @bushwhackedonvhs 8 หลายเดือนก่อน +1

    When you said "You can't go from mentioned to unknown" regarding quests I immediately had an idea for a game mechanic where drugs or an illness or injury cause you to forget various quests and pieces of information at random and you have to go about some process to get rid of the effect.

  • @mudmew4231
    @mudmew4231 8 หลายเดือนก่อน +9

    Hey Tim, I remember you talking about how your super luck character from GURPs made you want to put luck into Fallout. Is there anything else in your CRPGS that was heavily influenced by your experience in tabletop games? This also goes for narratives that got told at the table then put into your games. Thanks!

  • @theangel666100
    @theangel666100 8 หลายเดือนก่อน +1

    This is a great video. Thanks Tim. Its almost like having a senior dev to ask questions to.

  • @Anubis1101
    @Anubis1101 8 หลายเดือนก่อน +7

    I hope you do more programming videos, I definitely need them. It's hard to find good learning material for game programming.
    Most programming videos/channels are leaning more towards the FAANG industries (which often approach things differently than game development), and most game dev videos are for generic development in specific engines like Unity.
    A TH-camr called The Cherno has been immensely helpful, but I'd love more of your insight into it, and even some hard examples if you're willing.

  • @UberAnonymous
    @UberAnonymous 8 หลายเดือนก่อน

    Thanks for all the videos lately! Been a very pleasant surprise.

  • @TheDevisaur
    @TheDevisaur 8 หลายเดือนก่อน +1

    Really helpful video for understanding a basic approach to quests. One point you bring up is that you would leave certain aspects up to scripting. How is scripting vs coding defined? In traditional coding spaces, at least so far I've found, it's basically all grouped into one bucket with out differentiation.

  • @daytonode
    @daytonode 8 หลายเดือนก่อน +1

    These technical videos are a god send. Topics that you'd think aren't even niche get so little coverage on the internet because game developers think they're so standard.

  • @abmarnie9
    @abmarnie9 8 หลายเดือนก่อน

    I love how specific this video is. I am doing a quest system in my game soon

  • @spitemonster
    @spitemonster 8 หลายเดือนก่อน +1

    Thank you for making this Tim. I see I'm not the only developer in the comments, shouldn't be surprised about that! Just wanted to chime in and say more technical videos like this, theory and design rather than the nitty gritty, from someone like yourself is tremendously invaluable. Can only ask for more! EDIT: I suppose since you mentioned you like more specific questions, a video on the topic of software design and delegating that design to a dev team would be great, not to mention more systems based discussions! I'd also love to know more about what your specific day-to-day role and job was like as a director or lead programmer.

  • @Ambanoid
    @Ambanoid 8 หลายเดือนก่อน +1

    For our rpg game we went with node based approach: the nodes, once reached by a "signal", fire their script and advance or hold the signal and wait for events. There's almost no predefined node structure and our scripters had to figure out a good way to sctructure quests themselves.
    Very flexible and universal.
    I think CDPR uses/used something similar.
    The states that Tim talks about are even more universal, but in our system they aren't mandatory - a quest is a set of scripted nodes that might not even be visible to the player.

    • @lrinfi
      @lrinfi 8 หลายเดือนก่อน +2

      Loved the story about all the bug fixes for Witcher 3 being stuffed into the wandering vendor because his was the only signal that was always active and game/quest stage, etc. didn't matter. I know nothing about programming, but that was hilarious to me.

  • @cjgj
    @cjgj 8 หลายเดือนก่อน +2

    Hey Tim, I'm curious if you'd be interested in talking about your experiences with people who got into the games industry later in their careers. Things like whether they're generally successful or not, how common it is, what kinds of things outsiders take awhile to grasp, etc. I've worked as a programmer at non-gaming companies for awhile now, and I've often thought about what it would be like to get into the games industry, but I have no idea how that might actually go.
    Thanks for the videos!

  • @H0VA
    @H0VA 8 หลายเดือนก่อน +1

    Tim great work as always. I always wondered in regards to world and story building did you come up with villains like Frank Horrigan and others in the first 2 fallout games. It really has left a lasting impression on me because of how well done they were. And what would you say makes for a good antagonist or villain in the context of the story?

  • @kyoujinko
    @kyoujinko 8 หลายเดือนก่อน +2

    That's really interesting, please more coding answers would be appreciated. In particular save states, I presume that it is saved to a database, but how does it know where you were, who was standing there, etc etc

    • @colin-campbell
      @colin-campbell 8 หลายเดือนก่อน

      +1 to this question

    • @jextra1313
      @jextra1313 8 หลายเดือนก่อน

      I'd guess that any object that has to be saved has a method that triggers on the save event, which sends relevant values to a function that recieves all values and creates/updates the save file. If I'm way off, it would be really interesting to find out how Tim does it.

  • @YellowCable
    @YellowCable 6 หลายเดือนก่อน

    I always would have wanted as a player to have the ability to return to the quest giver and renounce/unaccept a quest, especially for certain kinds of quests, make it disappear from the "todo", but having this explicit exchange with the NPC, and possibly negotiate for the quest to be delayed.

  • @blackdragon5274
    @blackdragon5274 8 หลายเดือนก่อน +2

    Hey Tim, I'm curious as to what kind of involvement you had in New Vegas, I know you only went to obsidian a year after it came out, but did any old friends ask you your thoughts during development like with Fallout 2, or did any of your old ideas get reused?
    If nothing, or if it wouldn't make the video too long, what did you think of where New Vegas took the world of Fallout?
    Love the videos!

  • @shrek1onDVD
    @shrek1onDVD 8 หลายเดือนก่อน +5

    Hey Tim, do you know why games stopped putting in cheat codes? Even back in day, going from San Andreas to GTA 4 so many cheats were removed and like the coolest ones too. Even tho it's not a cheat, did the hot coffee incident have anything to do with it?
    edit: thinking on it, i wouldnt be surprised if the rise of achievements had something to do with cheats going away

    • @zhulikkulik
      @zhulikkulik 8 หลายเดือนก่อน +1

      I think it is because cheats aren't really intended for players. It's a testing functionality so you can just instantly get access to something instead of looking for it or completing quests etc.
      Engines now have better ways to test things so maybe there's no need for it. Also it's kinda weird to leave something like that in a game.

    • @arcan762
      @arcan762 8 หลายเดือนก่อน +1

      I think part of it was because games companies often did deals with gaming magazine publishers (back when those were still popular), where you could only get the cheats in the relevant magazines, but obviously now nobody cares about those as you can just look them up online.

  • @S....
    @S.... 8 หลายเดือนก่อน

    More videos like that , please.

  • @LddStyx
    @LddStyx 8 หลายเดือนก่อน

    You could do a tree structure where the objectives are sub-quests so that the root is completed once all of its branches are compleated.

  • @Lbf5677
    @Lbf5677 8 หลายเดือนก่อน

    how did you implement conversations in fallout in code?

  • @Draekdude
    @Draekdude 8 หลายเดือนก่อน

    I love these videos! Is there a Tim discord or patreon?

  • @TommyHanusa
    @TommyHanusa 8 หลายเดือนก่อน

    Are additional variables on more advanced quests just additional instances of the quest class? It seems like the pattern would be to use a quest class instance to hold variables of the quest class type to build up more complicated quests. For an advanced quest "To make an apple pie" it might reference 5 other quest variables ("invent universe", "apple", "spice", "crust", and "getting baked") that need to be completed for the advanced quests completion. And any call to update the quest state on a quest variable would make a call to check the state on the advanced quest to see if it should advance or expose additional quests (so you only mention "getting baked" after you have all the ingredients). Quest variables could also then be updating other quest variables to build them into a chain (once the "invent universe" quest variable is completed then the "apple","spice", and "crust" quests get accepted). Have you tried this or in your experience does a different structure work better?
    *and of course you can botch the "spice" quest by getting Old Bay instead of Cinnamon.

  • @13skiba
    @13skiba 8 หลายเดือนก่อน

    Hiya Tim. A big fan of your work. I would like to know your opinions on current rpg games and a particular little game called Atom RPG.

  • @wyattderp9719
    @wyattderp9719 8 หลายเดือนก่อน

    How hard is it to add dynamic quests and quests with consequences into a game and why do so many developers fall into the fetch quest trap?

  • @Rentash
    @Rentash 8 หลายเดือนก่อน +1

    Hey Tim, I know this may be a broad request but. For someone who doesn't have the time or money for college but is very passionate and has a lot of ideas in regards to Game Design and Setting, Where do you recommend someone start? I don't know the first thing about making a game but really really would love to get started in some capacity! Thanks in advance, and Thanks even more for these videos!

    • @Rentash
      @Rentash 8 หลายเดือนก่อน +1

      I just realized I didn't word this the best, for clarification I mean what exactly would be the basic skills required to begin working on games and where/how do you recommend someone begin honing said skills? (I know you've done a video on getting a job in the games industry in the past and I wanted to add that this question is more for those who would like to get started on a passion project and don't have the skills to do so)

    • @AB-sw4kb
      @AB-sw4kb 8 หลายเดือนก่อน +1

      @@Rentash I think it can depend on what sort of game this is. Is this like an action-adventure RPG, racing game, JRPG, puzzle game...?

    • @Rentash
      @Rentash 8 หลายเดือนก่อน

      @AB-sw4kb Well, like I said in my comment I know nothing about making a game, and by that I should elaborate and say I know nothing about coding except maybe the commands I've used in DosBox. Anyways while I have plenty of ideas, I'd say the most achievable out of the bunch is this idea I have for a roguelike JRPG. I know JRPG's are generally very long and therefore development can be rough so I figured a roguelike would alleviate those symptoms. Basically a game revolving around the Battle Mechanics of JRPGs that tries to add depth to equipment, skills and classes (in this case "backgrounds) with the gimmick of you killing god (classic JRPG trope) but! Your character to score the final blow becomes god in your next playthrough, and perhaps additional mechanics supporting this like picking a piece of equipment from each character from your party (outside of the one who "becomes god") and naming said equipment for it to become legendary loot next time around etc.

    • @Rentash
      @Rentash 8 หลายเดือนก่อน

      @AB-sw4kb 2D of course for sake of simplicity.

    • @theangel666100
      @theangel666100 8 หลายเดือนก่อน +1

      ​@@RentashI'd suggest doing some basic C# beginers tutorials, then getting into unity. You're going to need to understand concepts like object oriented programming

  • @lovzi9865
    @lovzi9865 5 หลายเดือนก่อน

    Tim, why do you want the mentioned state into your game?

    • @CainOnGames
      @CainOnGames  5 หลายเดือนก่อน +1

      This allows the quest giver to know they offered the quest already, so narrative designers can write lines like “Have you reconsidered taking on those bandits?”.

    • @lovzi9865
      @lovzi9865 5 หลายเดือนก่อน +1

      @@CainOnGames thanks Tim. Makes sense to store that info for the immersiveness. And thanks for all your videos. You are an inspiration for a software engineer who wants to create its first RPG.

  • @user-tg7pi6lu6v
    @user-tg7pi6lu6v 8 หลายเดือนก่อน

    nice

  • @WesBelden
    @WesBelden 8 หลายเดือนก่อน

    That was fun, thanks for your breakdown and to the viewer who asked the question.
    I'm curious on how you typically approach dialogue trees and their content updating based on quest state and other factors. Do you condider the scripts and quest entirely separate systems (scripts just calling quest methods), or do you ever have a quest variable reference a script to run?
    If there are different dialogue options based on dialogue choices previously selected by the player, quest related actions with multiple outcomes etc. do you prefer that all be tracked separately in script variables, or provide a means of setting those variables in the quest?

  • @an_imminence
    @an_imminence 8 หลายเดือนก่อน +4

    The complicated part about quests is not the system programming, it's the "writing the quests well" part. The Witcher 3 devs talked about how many different things can intervene, affect or reorder quests.
    - Oh, you've been to the cave and befriended the ghost already? Then we don't need any help anymore! (achieved before mentioned, but unknown to the questgiver)
    - You found the traitor someone sent you to find, but what to do with him now? (can be completed three different ways, which might be referred to later)
    - Oh, the questgiver dies after you got rid of the monster successfully? Who will pay you now?
    But that's for the designers to worry about ;)

    • @lrinfi
      @lrinfi 8 หลายเดือนก่อน

      The better written, the more difficult to program, I bet, and The Witcher 3 had some of the most complex quests I've ever seen. They set a bar that will be hard to surpass with that one.

    • @_KondoIsami_
      @_KondoIsami_ 8 หลายเดือนก่อน

      That's definitively not just for the designers to worry about, for something like you described to be even possible you have create a very good system that will take all of that into account.
      In fact on release the Witcher 3 had a bug where a few quests you completed could be marked as failed, and the game still has a few issues with the quest system.

    • @lrinfi
      @lrinfi 8 หลายเดือนก่อน

      @@_KondoIsami_ True to a point. Most RPG main and faction storylines and characters, however, are written to "support" mechanics/programming and not the other the way around. (This is among Bethesda's most glaring issues, as I see it, and why the factions in one of their games are essentially the same factions in every other.)
      The Witcher series inverted that. The systems and programming were designed to support the story and characterizations, some of the mechanics created on the fly, e.g. the player swimming mechanic in Witcher 3. I think that's much of the reason why The Witcher 3, especially, is widely looked upon as pushing the industry forward whereas other studios are focussing on the technical to such an all-consuming degree that they wind up spinning their wheels and turning out mediocre games.
      The quest programming envelope could be pushed light years ahead provided a game's narrative demands that it be.

  • @MFKitten
    @MFKitten 8 หลายเดือนก่อน

    I just eant to suggest that you really should make the original game idea for your Fallout engine, where you go back in time and kill the monkey that disrupts human evolution and go back to the future that is now controlled by dinosaurs etc etc.
    That sounds like a game everyone would love nowadays. It has some Tim Schafer vibes!

  • @LandBark
    @LandBark 8 หลายเดือนก่อน

    About quests Tim Cain (guy who is talking in the video), how do you feel about the idea that quests can have limited time to start/begin? Like for example quest to kill a bunch of monsters, instead you do plot dungeon and after finishing it you learn that either quest-giver hired someone else, did it themselves or monsters moved on and the orphan crushing machine got wrecked (that would be a twist, monsters were actually doing good while you did evil). That would require another flag, to make sure you get "Slowpoke" achievement.
    (I do realize it's a bit advanced flag of botching it, given a limited time to do a quest)
    Another great video 👍

  • @MaskedImposter
    @MaskedImposter 7 หลายเดือนก่อน

    Everyone loves singletons :D

  • @FluffySylveonBoi
    @FluffySylveonBoi 8 หลายเดือนก่อน +1

    TH-cam unsubscribed me again, so I had to hit it again. I hate when they do it :/

    • @jextra1313
      @jextra1313 8 หลายเดือนก่อน

      Their state machine is broken, which is pretty relevant to the current video

  • @yamo511
    @yamo511 8 หลายเดือนก่อน

    all i know is you better not deadname any questgivers. better be on your best behavior

    • @jextra1313
      @jextra1313 8 หลายเดือนก่อน +3

      even if you disagree with the concept of deadnaming, this joke is lame.

    • @yamo511
      @yamo511 8 หลายเดือนก่อน

      ​@@jextra1313 it's not a joke. bigot

    • @yamo511
      @yamo511 8 หลายเดือนก่อน

      @@jextra1313he already did it once you nazi

    • @theangel666100
      @theangel666100 8 หลายเดือนก่อน +2

      Don't be weird