Putting the 'role' back in role-playing games since 2002.
Donate to Codex
Good Old Games
  • Welcome to rpgcodex.net, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.

    "This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.

Cain on Games - Tim Cain's new YouTube channel

Shadenuat

Arcane
Joined
Dec 9, 2011
Messages
11,977
Location
Russia
There are always people who know less than you.

I bet it's more about legal issues.
"Not wanting to burn bridges" "not wanting to deal with negative comments" and "introversion" and are just as big.

I recall during the Project Eternity stream the chat asked for some peoples' names and they refused to give them out. :P

Also the kind of devs like Cain, Sawyer, and Avellone etc. who wade into negative forums are atypical. Seems to me that most devs react like Jeff Vogel or inXile (infamously turned on this place after all the harsh Wasteland 2 beta feedback).
Tbh jeff at that ancient interview writes his name at the end cause nickname at the top is not enough. He is not from generation that has skills needed to survive online.

Tim also can't handle 2 mean comments from 100 positive ones to the point of making reply video on them
 

FalayedGong

Novice
Joined
Jun 10, 2023
Messages
9
Any sort of use case where a achievement might make sense would make more sense to reward with something in-game. Like with Tim's example of looting some difficult to reach rich guy, the 10,000 Gold on its own is a solid reward, the achievement's redundant at that point. Having your Steam client ping you adds nothing to that experience.
 

NecroLord

Dumbfuck!
Dumbfuck
Joined
Sep 6, 2022
Messages
14,826
Achievements are for Console Fags.
Simple as.
Who needs an achievement in order to feel a profound sense of self importance and grandeur? Just finish the game and let the simple act of playing the game and getting good at it be your achievement.
 

Naraya

Arcane
Joined
Oct 19, 2014
Messages
1,663
Location
Tuono-Tabr
Achievements are for Console Fags.
Simple as.
Who needs an achievement in order to feel a profound sense of self importance and grandeur? Just finish the game and let the simple act of playing the game and getting good at it be your achievement.
I can't agree more. Achievements are harbingers of D E C L I N E and I won't be convinced otherwise.
 

Roguey

Codex Staff
Staff Member
Sawyerite
Joined
May 29, 2010
Messages
36,707
I like achievements that track how much progress someone has made on the main quest. It's an argument in favor of shorter critical path content given how most people don't finish them, though for some reason most devs haven't adjusted accordingly.

Tim also can't handle 2 mean comments from 100 positive ones to the point of making reply video on them
https://en.wikipedia.org/wiki/Negativity_bias many such cases
 

Axioms

Arcane
Developer
Joined
Jul 11, 2019
Messages
1,630
Watching the Tim Cain video on why he quit Fallout 2 really makes me want to play Fallout 1. I won't but this is as close as I've ever gotten. I want an RPG about working at 90s interplay, that would be a solid sequel to Disco Elysium as far as a critique of a capitalist hellscape.
 

Shadenuat

Arcane
Joined
Dec 9, 2011
Messages
11,977
Location
Russia
I think achivos might be interesting carrot to hang about undiscovered obscure shit in the game, i did look them up for aod and pathfinder. Don't know how good can it be to hint player they can finish game by killing Vivec or whatever
 

NecroLord

Dumbfuck!
Dumbfuck
Joined
Sep 6, 2022
Messages
14,826
I think achivos might be interesting carrot to hang about undiscovered obscure shit in the game, i did look them up for aod and pathfinder. Don't know how good can it be to hint player they can finish game by killing Vivec or whatever
It would be cool if you didn't get hit with the "With this character's death the thread of prophecy is severed" message.
No such thing in Fallout or Arcanum, where you could butcher to your heart's content and still somehow progress through the Main Quest.
 

Diggfinger

Arcane
Joined
Jan 6, 2014
Messages
1,240
Location
Belgium


I talk about something that happened to me in college...and the different ways that people have reacted to this story when I have told it.
 

StrongBelwas

Arcane
Patron
Joined
Aug 1, 2015
Messages
517
The story itself is the less important than the reason he wants to tell the story. To him, it's one of the stories where he tells people the exact same story and seen them draw wildly different conclusions, including why he told them it.
Took place 1987, fourth year, last semester in engineering school. Was enrolled in class called Introduction to the C Language. He already knew it, but will explain why he was taking it.
Near the end of the course, and they had gone ahead of the course. One of those classes where they went through all the material so the professor was taking classes. Professor asked everyone what they were planning to do for the Summer, pointed to Cain, Cain said he just got hired to build a C compiler for a company near Washington DC. The professor stopped and asked why would they hire you ? The class went quiet, Cain thinks he heard someone gasp. The professor immediately apologized and rephrased it as what makes you qualified to work on a C Compiler. Cain responded that he had five years as a professional programmer and he did C. The professor wondered why he was in the class if he had been coding professional with a released product.
This was Cain's last semester, Cain needed a class to fulfill his computer science prerequisite on taking a class for a computer language he didn't already have a class in. Had taken an introduction to all computer programming languages class, most of his classes at UVA were taught in Pascal. When Cain realized he hadn't fulfilled his prerequisite , he looked for classes, there were only 3 possible classes and 2 of them conflicted with other classes. There was a humanities class where you had to read engineering based literature. Cain went to the Registrar and asked them to waive the class, just test out of it, they told him they only accepted academic waivers, Cain had done that in High School with his AP Bio, got a 5 in that. Got to skip the first semester of math. But they hadn't offered any AP Programming courses. Registrar told him that they couldn't do experience based waivers, it would be too much work to verify, and then everyone would try to claim it , they would be spending a lot of time looking up waivers that would be denied. Told him she believed him, but her hands were tied.
Having explained all that to the professor, the professor understood the situation and said it made sense because Cain was doing so well in the course. The Professor proceeded to ask Cain what he wished he had taught. Based on actually working on C in the office, Cain said he wished he was taught how to debug, nobody had taught him how to debug at UVA and it was his last semester. Some of these classes were projects that required large blocks of codes, and nobody had taught him how to debug. Was fortunate he had figured out how to debug from his office work. Said the same thing to his graduate school professors, repeats when one of them said we're not a trade school. This professor did not say that, he just asked if that was all. Cain also said it would have been interesting would be to teach how real compilers vary from the ISO, the international standard for C. Cain doesn't think any compiler, except maybe very modern ones, behaved exactly as the standard. ISO would say INS and enums have to work a certain way, the compiler doesn't behave like that, it makes them the same under the hood, or INT are only 16 bit and you had to do a long INT or a signed INT for something bigger. Would have been nice to know that, especially given the pointers of the time. They were only 16 bit, needed a 32 bit far pointer for anything bigger. They couldn't be mixed, far pointers were slower. If this was the second class in the series and not first, Cain would also have liked optimization to be taught. Like debugging, was never really taught that. Getting programs to work faster wasn't a huge problem in academics, but running them on less memory was very important, Cain had tried to run programs on their mainframe and get kicked out for not having enough memory.
Professor was paying attention to all of this. Some of the other people Cain has told this story to said it was a reason to dislike college, that professor was bad, professors and students think they know everything. Cain finds that response very odd, that professor was one of the few that ever impressed him. He asked a question, realized it was bad, apologized, and then wanted to know more. That was more than most people would do. Most people would double down, fewer would apologize once they realized they were wrong.
Has heard a gamut of reactions to the story; From college is horrible to people wishing they had professors like that and thought he was really cool.
Final note, during finals week, Cain got a message from the company that they had lost the contract to make the compiler and his job was over. This was in the middle of finals week, Cain had no time to find another job and he was out of college in weeks. Called his mom and she said he was graduating suma cum laude and already had grad school lined up with a grant for it (Lot of undergraduate loans, but had a scholarship for grad school.) Suggested he just take the summer off and spend it with them. Last time he ever had more than a week off for 40 years. Except for a one week vacation, Cain never had a break until his semi retirement state. Not sure if his Mom expected that to be the case, but it was one of the coolest things she ever did .
 

Roguey

Codex Staff
Staff Member
Sawyerite
Joined
May 29, 2010
Messages
36,707
Nerds and phrasing sentences in a brusque manner without intending offense, name a more iconic duo.
 

__scribbles__

Educated
Joined
Jul 5, 2022
Messages
352
Location
The Void


I talk about the decisions you need to make about your game's load and save systems. For details on how to implement such systems, I recommend looking up "serialization" for the language and/or game engine you are using.
 

The Wall

Dumbfuck!
Dumbfuck Zionist Agent
Joined
Jul 19, 2017
Messages
3,695
Location
SERPGIA
Save yourself. Don't play anything AAA released after 2016. Tim's every video make Me as Viewer feel like Psychiatrist

Hello Tim, I'm listening. Tell me today what bothers you with biology of Deathclaws? That they are bigdicked but not gay? Ok. Have you tried BG3 for that experience? Yes, you have. And you had great fun. Ok. Until tomorrow, Tim
 

StrongBelwas

Arcane
Patron
Joined
Aug 1, 2015
Messages
517
Loading/Saving is highly dependent on what language you are using, what engine you are using, and what decisions about how you've decided to make it work. Will discuss high level stuff.
First one, and the one Cain likes using a lot, is save anywhere at anytime. Hardest ones to write, you have to save the state of many, many things. Sometime it's hard to get the things you need to save, if you can save anywhere, can you save when a character is in the middle of an animation? If they're falling, if they are casting as spell (Animation, particle effect, AI reacting) that is a lot of things to save the state of. You may not have written everything that is coded, if you brought in a third party physics engine, you need to know how to ask that physics engine the state and locations of objects so they can be recreated. Some of them don't provide that, so depending on choices that have nothing to do with saving/loading, you will be restricted on what save/load systems you can implement.
Probably a more common save/load system will be you can save somewhere at some times but not everywhere. For example, save when game is not in combat. That avoids a lot of save variables that only have to do with combat, especially AI (Can ignore moment to moment AI in favor of high level stuff.) Also seen games that only let you save when back in town, which presupposes you're not in combat and in an area without many state changes, especially if there are essential NPCs or you simply are not allowed to fight in towns. Some games only let you save at rest, a very restrictive way, but it guarantees you won't be casting a spell, be in the middle of a dialogue, nobody is falling, it allows you to avoid a lot of things to save down, many systems will never have to consider saving/loading under that system.
Some other system has has seen, very common in consoles, are checkpoints. Game automatically saves at certain point. Checkpoints are very easy because you are defining when and where states can even happen. More modules will never have to worry about saving and loading when you know it's only being saved at this particular variable. Not every story variable needs to be remembered, just which ones carry over into the next act and ending sides, all others get thrown out.
Some games also have an autosave system, the game may have save anywhere or save in certain areas, but an autosave is an addition. Autosaves are kind of like checkpoints in the sense not that much needs to be saved, but they are more of a way to making sure the player doesn't end up in a bad state if they die or the map transition goes bad. Related to autosaves are quicksaves. Quicksaves are when the player hits a button to save and the game allows him to (Can have quicksave systems in games where you can't save anywhere), allows the player to make a save without going through UI.
UI choices are the next stage for save systems. How many slots can you have, is it infinite until you run out of space, or is there a hard limit? Can vary with each kind of save, the player can have as many manual saves as they like, but quicksaves/autosaves are limited to a rotating set of 3. Some games do that, they kind of have to because without a UI the quicksave has to know where to save. Do you get to put a name to your save? Some games do auto generated save game names, map location/sublocation + date stamp. For autosaves and quicksaves that don't bring up a UI, you have to do that, so some people decide to just keep the manual saves consistent with autosave/quicksave and keep the same naming scheme.
Finally, does your save game have an image associated with it? Didn't use to do that because it was expensive space wise, the screenshot would be larger than the save system. Nowadays not a problem, image makes it easy to figure out which save game is which.
As for the save and load code itself, Cain won't show you how to serialize, will tell you what he does and what decisions you have to make yourself. For every module/class in C/C++, Cain would write a save module that knows how to write that particular class/module's (will only say class from this point forward) data. What tends to happen is that it's past a file pointer, and if you save, you write out your data at that file pointer and return. If you're loading, you load in that data from the file pointer. Some things you have to check is if the file pointer is in the right spot. If yes, you can do this and it's pretty fast. It requires you to follow a very specific rule of making sure it's at the right spot and it remains there. Nobody else besides you may know where that spot is. Will lead to failure if not properly done, hard to debug. If you decide to have each method reposition the pointer, that problem is solved, and it makes it easy to write in new sections. You put in that data, and it finds it's correction section when it is past the file pointer. This is always slower than just assuming where the file pointer is, you are calling out to your save device of choice and having it search through your data and move that file pointer. Maybe your save system is so fast this isn't a problem, but Cain has worked on games where this method has slowed it down a lot.
Next question is do you save the data as raw data. If you have an INT, do you just fwrite the four bytes in it and then fread in that INT from your load/save. Saving it in raw data is very fast and gets you the smallest file size you can get. But you need to learn how to serialize everything by hand. You will have to serialzie your base data, but figure out how to handle pointers, if you have pointers to items, you have to save those items and then reconstruct that array of pointers during load. This is memory allocation, settings pointers, lots of work, but gets you fast saving with small file size. Maybe you don't want to do that, something like JSON (String based object saving) got pretty popular. It is very easy to code for, you can read in your variables just from their names. Your save game will be very big, and very slow. If size/speed aren't a concern, this works, otherwise you have a problem.
This also impacts how you do versioning. If you have save games from previous versions of games, can the 1.1 read 1.0 saves? If you have a save with DLC installed and you uninstall the DLC, can the game still read the save? If you support modding, if you play a modded game can the base game load it? If you play a modded game does it know what the mods are, will it know if you try to load a save with a mod removed? Some games just fail, some games can't detect it and just load the base game version, lots of decisions on how to make. If you went with JSON, this is very easy as if you get to a section you don't know you can have a default. Can't read an item, have it default to not knowing. Can be done with raw data, but harder.
Also need to keep in mind patching, if 1.1 generates a save game 1.0 can't read, you need to decide if that is something you can see in the UI, this is a save game for 1.0. How does it display it? Does it just fail on load, does it warn you it can't load and tell you what to do, does it just grey out the save? It can get complicated and Cain has not mentioned a line of code.
TL;DR : What kind of save game system you want to support, what UI choices you need to make, and how you want that code to work with data, raw or serialized? Good luck, complicated thing to do.
 
Last edited:

ds

Cipher
Patron
Joined
Jul 17, 2013
Messages
2,539
Location
here
UI choices are the next stage for save systems. How many slots can you have, is it infinite until you run out of space, or is there a hard limit? Can vary with each kind of save, the player can have as many manual saves as they like, but quicksaves/autosaves are limited to a rotating set of 3. Some games do that, they kind of have to because without a UI the quicksave has to know where to save.

As long as that limit is more than one or the game at least writes to a temp file first instead of directly overwriting your one save file as an extra fuck you in case it crashes while saving. :argh:
 

StrongBelwas

Arcane
Patron
Joined
Aug 1, 2015
Messages
517

Finding the canonical story ending for a heavy CnC based game can be tough. On Fallout, the person working on the play guide kept asking what the player is supposed to do, how is this section supposed to be done? They didn't have an answer for him, it depends on your build and your character. Hard enough to walk a walkthrough, what do you do once you get to the ending and try to figure out how it is 'supposed to end'.
Why do you need a canonical ending? Need a jumping off point for a sequel. Keeping in mind the only sequel Cain has worked on is Fallout 2, he has 4 different ways to pick an ending.
First one is the one he went with is look for the commonalities in the endings and assume those and nothing else. They knew the player had survived, they knew the master and the army was destroyed, and they knew the player was kicked out of the vault. Given those elements, they assumed just those 3 things for Fallout 2 and then jumped forward. Also assumed Tandi had lived. They decided not to reference too many things the player did, just things the player probably moved through and had some interactions.
Next one, just pick one and say that was canon. For Arcanum 2, they would have just assumed the player defeated Kerghan and learned about Franklin Payne at some point. References his plans for ToEE2 moving into Against the Giants and into ADQ. Going into that, they would have assumed the good ending, where you went to the bottom of the temple and banished Zuggtmoy.
Third way is to let the player call the canonical one, you can ask questions about what the player did or would have done if they played through the storyline, what they did for Witcher 3. Interesting way to do it, lets the player see how their starting situation would be different. Could be considered a way of doing end slides you get after buying the next game.
Fourth way is to let the player import a save game from the previous game that had all the tracking variables and the new game looks at all the tracking variables. Base the subsequent game on that, as the Mass Effects did it. Cain thinks this is a cool way to do it.
Can't think of other ways to do it, but he hasn't worked on many sequels so he never really had to think about it much.
 
Last edited:

NecroLord

Dumbfuck!
Dumbfuck
Joined
Sep 6, 2022
Messages
14,826
Guess that's why Tim said he doesn't like sequels and making them.
You gotta decide which of the endings are canonical...
 

Roguey

Codex Staff
Staff Member
Sawyerite
Joined
May 29, 2010
Messages
36,707
Sure there are other ways.

a) have it take place in an entirely separate area of the world where the events of the first game will have no bearing
b) set it in the past with a prequel
c) have it take place far enough in the future that the events of the first game don't matter
d) Reboot/remake, a different spin on the same concept

Since he brought up The Witcher I'd like to point out that in the 2nd one you could import your choices in which case you'd get a paragraph of text to explain why they went with a default canonical choice anyway.

witcher2yourdecisionsi5imm.jpg
 

As an Amazon Associate, rpgcodex.net earns from qualifying purchases.
Back
Top Bottom