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

std::namespace

Guest
If anyone here thinks Tim is some kind of genius programmer, I invite you to take a look at his navmesh implementation for the world map in Fallout 1.
https://github.com/alexbatalov/fall...b9ca76a43a404f4c/src/game/worldmap_walkmask.c
absolutely nothing wrong with this
in fact its the best solution possible!
its not a navmesh either, its a ...mask
instant lookup for the low price of 1500*133 chars
 
Vatnik
Joined
Sep 28, 2014
Messages
12,167
Location
USSR
When ever I see someone make a post like that to discredit a programmer (especially in a completely meaningless way) I see their post as this:
Nobody's trying to discredit anyone. It's just Cain is not some Carmack as people seem to think sometimes in this thread. Read his Fallout 1 code, the repo is available. He seems to be on the level of Swen Vincke. He can script things, he's okay. If asked about how virtual or atomics work under the hood, he'd draw a blank.
 

ds

Cipher
Patron
Joined
Jul 17, 2013
Messages
2,528
Location
here
and even if it did that file could be auto-generated
Unlikely. If he had the time to write an auto-generator, he had the time to write a mask file generator.
There were pre-existing tools even back then, for example Vim's `xxd -i` (added in 1994).

They rewrote that part in Fallout 2 to read a mask file like normal people, once Tim was gone. https://github.com/alexbatalov/fallout2-re
meh.png

I doubt this was a pressing issue for Fallout 1 so why waste time on it if they were busy fixing critical bugs close to release (as seems to be always the case for game development).
 
Vatnik
Joined
Sep 28, 2014
Messages
12,167
Location
USSR
It's just Cain is not some Carmack as people seem to think sometimes in this thread.
I've written about this kind of thing in this very thread in response to you :M https://rpgcodex.net/forums/threads/cain-on-games-tim-cains-new-youtube-channel.147060/post-8498467
Bugs aren't programmers' fault, but a byproduct of programmers' productive process. All types of manufacturing have an acceptable percentage of defects. Monitors with defective pixels used to be sold, as long as it was less than 3. CPUs are often manufactured with defects - if there's 2 or less defective cores, an i7 is rebranded as i5 and its cores are deactivated. If more cores are defective, it becomes an i3. And so is the case with programming - this type of production comes with an acceptable percentage of defects, i.e. bugs. The fact that some bug caused a crash is completely random, bugs appear in random places and it's nobody's fault.
 

NoMoneyNoFameNoDame

Artist Formerly Known as Prosper
Patron
Joined
Feb 22, 2022
Messages
943
If anyone here thinks Tim is some kind of genius programmer, I invite you to take a look at his navmesh implementation for the world map in Fallout 1.
https://github.com/alexbatalov/fall...b9ca76a43a404f4c/src/game/worldmap_walkmask.c
absolutely nothing wrong with this
in fact its the best solution possible!
its not a navmesh either, its a ...mask
instant lookup for the low price of 1500*133 chars
He could have pre-sized static array for the mask data then loaded the real data from file to overwrite the static array.
Since he didn't (trusting Bester), I suspect it would be because the dimensions must be known to the compiler, he decided the data may as well be known too.

If the testing pipeline required a fresh compile each time anyway, then inserting up to date data for the array may be all the same
a .c export as any other file choice. This suggests two possible policies:

1) every tester always got a fresh build from their local repo of the game code. and local repo was frequently updated.
2) local repos got rebuilt for each tester, including possibly out of date code, and it was enitrely up to whoever made the wall data to distribute
.c file containing new mask data when it mattered.

Until Tim makes a video about this we will not know.

Psychologically the tendency to include things native to executable when possible speaks to the old times
when all you had was assembly anyway.
 

Butter

Arcane
Patron
Joined
Oct 1, 2018
Messages
8,613
When ever I see someone make a post like that to discredit a programmer (especially in a completely meaningless way) I see their post as this:
Nobody's trying to discredit anyone. It's just Cain is not some Carmack as people seem to think sometimes in this thread. Read his Fallout 1 code, the repo is available. He seems to be on the level of Swen Vincke. He can script things, he's okay. If asked about how virtual or atomics work under the hood, he'd draw a blank.
I didn't realize Swen Vincke writes engines from scratch.
 

std::namespace

Guest
If anyone here thinks Tim is some kind of genius programmer, I invite you to take a look at his navmesh implementation for the world map in Fallout 1.
https://github.com/alexbatalov/fall...b9ca76a43a404f4c/src/game/worldmap_walkmask.c
absolutely nothing wrong with this
in fact its the best solution possible!
its not a navmesh either, its a ...mask
instant lookup for the low price of 1500*133 chars
He could have pre-sized static array for the mask data then loaded the real data from file to overwrite the static array.
Since he didn't (trusting Bester), I suspect it would be because the dimensions must be known to the compiler, he decided the data may as well be known too.

If the testing pipeline required a fresh compile each time anyway, then inserting up to date data for the array may be all the same
a .c export as any other file choice. This suggests two possible policies:

1) every tester always got a fresh build from their local repo of the game code. and local repo was frequently updated.
2) local repos got rebuilt for each tester, including possibly out of date code, and it was enitrely up to whoever made the wall data to distribute
.c file containing new mask data when it mattered.

Until Tim makes a video about this we will not know.

Psychologically the tendency to include things native to executable when possible speaks to the old times
when all you had was assembly anyway.
bro, its obviously anno 1996,
its a win32 rig, there is no aslr, i would not be surprised if there is code that uses the raw, fixed virtual address + offset where the mask is always stored by the win pe memmapper!

90% chance that that mask was generated once and never touched again, there is zero reason to bother with any file loading here

testing pipeline? kek, if it doesnt bsod the win95 from userspace - its fiiiiiiiiiiiiiine!
 

StrongBelwas

Arcane
Patron
Joined
Aug 1, 2015
Messages
517

Source control wasn't used in the 80s, at least in the places Cain worked at.
The one programmer every code module had was pretty much the controller of the source, and any new build was made on that machine.
Rags to Riches may have been the first time they had a dedicated build machine that no particular programmer in charge of it.
Fallout was the first time they used software controlled source management. SourceSafe, from Microsoft.
SourceSafe was very good, you could check things in and out of the network, quickly download read only copies of the assets and make a new build. Making changes would require checking it out, making it writeable on your machine and can't be touched by anyone else.
The main drawback was that if you had a very large set of code, multiple programmers trying to make changes could run into trouble over who 'owned' it. Required making the code chunks smaller so one programmer can make edits to a section without causing trouble for anyone else. Interface programming was broken up into different chunks for the journal and the inventory to avoid this.
Linear history of changes helped them identify where some bugs had been introduced.
For Arcanum, they probably used Perforce, but the problem was that the world map needed multiple people to edit it. Obviously couldn't have one person lock up the whole world at a time. The editor would try to lock specific sectors once someone started working on it in the network, used file creation to create a lock. They had no file history.
Definitely had Perforce by ToEE, non exclusive check out was very useful. Mergers could create problem for some art assets. Sometimes people would try to merge assets and realize they were working on the same area or doing the same fix and then have to figure out how to make the changes work together. Generally, ToEE programming was well segregated enough this wasn't a constant issue.
One very helpful feature in Perforce was Shelving, which let you create a private little section you could put into the main branch when you decided on it. Something similar is branching, which lets you take all of the assets and split them into another branch to can choose when to work on, very helpful for demos. Patches, DLCs, and console ports can all be branches.
 
Last edited:

StrongBelwas

Arcane
Patron
Joined
Aug 1, 2015
Messages
517

IP should have a distinct core essence you can express in a single sentence
Arcanum was 'fantasy world that is undergoing industrial revolution.' Outer Worlds was Fallout Meets Firefly.
Cain think it's important the IP can be reduced to/easily recognizable by one symbol. Fallout would be the vault door or vault boy. For the Outer Worlds, they didn't go out of their way to do that, but the Spacer's Choice slogan and Moonboy mascot seem to have become that.
IP should be distinct, does not necessarily have to be unique. Arcanum cribbed a lot from Tolkien, but the industrial revolution made it distinct.
Should be able to write a lot of simple rules about what does and doesn't appear in the setting. Rules should be held to.
Eventually, if you have to keep using the same IP instead of something new, you end up exploring new areas or digging deeper into the old areas and probably overanalyzing them. Leads to dilution of the IP. It becomes unclear what can and cannot appear in it.
Feels like the Fallout IP is being diluted, he is at fault somewhat. He introduced the ghost sidequest into Fallout 2, Chris Avellone warned him not to, but he liked the idea of introducing supernatural elements. Realizes now Fallout doesn't and shouldn't have supernatural ideas, pushes the idea of the IP and makes it too broad. Introducing ghosts questions why you shouldn't bring in more undead and the afterlife. Rereferences his doubts about Synths becoming so important to Fallout 4. Feels like the 50s props in later games are being overused, makes it feel like the war happened in the 1950s, not the future the 1950s predicted to be.
The summary of the video could be IPs should be simple and distinct, don't dilute them, and sequels and DLCs often lead to dilution.

Recommends this video : Cain feels like it does a better job than him of explaining IP dilution over time.
 

NecroLord

Dumbfuck!
Dumbfuck
Joined
Sep 6, 2022
Messages
14,819

IP should have a distinct core essence you can express in a single sentence
Arcanum was 'fantasy world that is undergoing industrial revolution.' Outer Worlds was Fallout Meets Firefly.
Cain think it's important the IP can be reduced to/easily recognizable by one symbol. Fallout would be the vault door or vault boy. For the Outer Worlds, they didn't go out of their way to do that, but the Spacer's Choice slogan and Moonboy mascot seem to have become that.
IP should be distinct, does not necessarily have to be unique. Arcanum cribbed a lot from Tolkien, but the industrial revolution made it distinct.
Should be able to write a lot of simple rules about what does and doesn't appear in the setting. Rules should be held to.
Eventually, if you have to keep using the same IP instead of something new, you end up exploring new areas or digging deeper into the old areas and probably overanalyzing them. Leads to dilution of the IP. It becomes unclear what can and cannot appear in it.
Feels like the Fallout IP is being diluted, he is at fault somewhat. He introduced the ghost sidequest into Fallout 2, Chris Avellone warned him not to, but he liked the idea of introducing supernatural elements. Realizes now Fallout doesn't and shouldn't have supernatural ideas, pushes the idea of the IP and makes it too broad. Introducing ghosts questions why you shouldn't bring in more undead and the afterlife. Rereferences his doubts about Synths becoming so important to Fallout 4. Feels like the 50s props in later games are being overused, makes it feel like the war happened in the 1950s, not the future the 1950s predicted to be.
The summary of the video could be IPs should be simple and distinct, don't dilute them, and sequels and DLCs often lead to dilution.

Recommends this video : Cain feels like it does a better job than him of explaining IP dilution over time.

People still complaining about the ghost in The Den and the Talking Deathclaws?
I thought we were over it already...
 

Roguey

Codex Staff
Staff Member
Sawyerite
Joined
May 29, 2010
Messages
36,705
Seems awfully limiting to think that intellectual properties should only be high concepts. Let some things be a bit more complex than that. :M
 
Vatnik
Joined
Sep 28, 2014
Messages
12,167
Location
USSR
Maybe he's right that it should be reducible to an elevator pitch, but only because otherwise people will have a hard time understanding what they're playing, and recommending it to others, etc.

I have an idea for a game that's not reducible to an elevator pitch, and as a result I don't even know how I would market it.
 

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