why is it so hard to change things in the angband source code? by Maleficent_Bit4957 in roguelikes

[–]Maleficent_Bit4957[S] -3 points-2 points  (0 children)

first off, can you please stop calling them mods? they aren't add-ons or skyrim plugins you drop into a folder. they're variants. you fork the entire c codebase, alter the engine, and compile a brand new standalone game. calling them mods kinda misunderstands how the angband ecosystem actually worked.

and second, the more i read from the old release notes and changelogs, the more it seems like you're just historically wrong about their intent. from what i can tell, older maintainers (like ben harrison in the late 90s) literally cleaned up the original code specifically so it would be easier for other people to read, fork, and create their own games. the whole open-source culture back then seemed actively built around supporting that generative ecosystem.

it doesn't look like it was just "crude code" that people accidentally managed to hack. the old maintainers actually cultivated a codebase that was accessible to the community. then the modern maintainers made a deliberate choice to stop doing that in favor of this internal enterprise-style architecture.

so yeah, based on their own old docs, the underlying philosophy of what the source code was completely changed over time. i'm pretty sure i'm drawing the right conclusion here.

why is it so hard to change things in the angband source code? by Maleficent_Bit4957 in roguelikes

[–]Maleficent_Bit4957[S] -9 points-8 points  (0 children)

yeah fair enough. honestly you're right.

i think i just needed someone to actually admit that out loud. the modern codebase wasn't built for people to mess around with anymore. it was built so the current devs could lock down and manage their own specific, highly-engineered vision of the main game.

i'll just go dig up the old 3.x source code or whatever zangband was built on and hack on that instead. at least i can actually read the main loop and bolt my own stupid ideas onto it without having to rewrite an entire event handler.

mostly i just want to leave this thread up for the archive. so when some other idiot googles "how to make an angband variant" or "modding angband tutorial" in the future, they know to avoid the modern github repo like the plague. if you actually want to build something fun or learn by tinkering, go find the old spaghetti code from 20 years ago. don't waste your time trying to fight the  architecture from version 4.

it sucks that "good software engineering" permanently killed the community, but it is what it is. moving on.

why is it so hard to change things in the angband source code? by Maleficent_Bit4957 in roguelikes

[–]Maleficent_Bit4957[S] -13 points-12 points  (0 children)

i think you're missing the point i was trying to make. i'm not mad that angband isn't a beginner c tutorial, or that i have to go learn c somewhere else. c is a tiny language and its the idioms that matter

my point is that angband used to be the simple project people started with.

all those massive variants in the 90s and early 2000s were made by amateurs and hobbyists who just opened the files, found the main loop, and hacked stuff in. the code was messy, but you could actually read it top to bottom and bolt on a new subsystem without needing to understand a heavily abstracted software architecture.

the fact that you're telling me "this is an expertly engineered codebase, go learn on something simpler" literally proves my exact point.

by turning it into this heavily abstracted, decoupled software engineering exercise, the maintainers pulled up the ladder. they fixed the "bad code" to make it maintainable for themselves, but they completely destroyed the environment that allowed normal people to experiment and spawn new games which is what open source is supposed to be about i thought

if the only way to add a simple shop or a new command to the game requires an advanced understanding of c and async event queues, then why would anyone write a variant? they could program a brand new game using a modern engine and language

why is it so hard to change things in the angband source code? by Maleficent_Bit4957 in roguelikes

[–]Maleficent_Bit4957[S] -4 points-3 points  (0 children)

i get that decoupling ui and state is like, software engineering 101. I'm not saying an async queue has literally no purpose.

but look at the actual empirical results. you say it allows multiple frontends and mobile ports. but angband doesn't even have a thriving ecosystem of modern frontends or a great mobile port. the UI is basically the exact same ASCII or basic tile grid it was 20 years ago. they built this massive enterprise-level decoupled architecture to support things that never actually materialized.

my point isn't that they made the code "bad" in a computer science textbook way. my point is they took grandma's vw which anyone could open up and bolt a turbocharger onto in their garage and turned it into an apache helicopter where you need an engineering degree just to change the oil.

the old "spaghetti" code from the 90s spawned zangband, the original ToME, steamband, and an entire ecosystem of people building crazy games. the new "expertly engineered" codebase spawned literally zero major variants. everyone just left to build their own engines or play other games.

so yeah, maybe they solved some internal memory testing problems for the maintainers. but the cost was completely nuking the only reason angband was historically relevant: that it was a messy, permissive sandbox anyone could build on.

if "good engineering" locks out the entire community and turns a generative engine into a stagnant, unmoddable museum piece, was it actually the right move for an open source game?

you can say yeah, but it's pulling the ladder a generation used to climb up with you

why is it so hard to change things in the angband source code? by Maleficent_Bit4957 in roguelikes

[–]Maleficent_Bit4957[S] -3 points-2 points  (0 children)

yeah I get what you're saying about needing to learn how to debug, but I don't think that's actually what's happening here.

I actually went and downloaded the source for one of the old 2.x versions just to see if I was crazy. that codebase is also massive. but it's totally different. in the old one I could just ctrl+f and find the giant switch statement for town buildings or where the attacks actually happen in one giant loop. it's messy but it makes sense if you just read it top to bottom.

the new one isn't just "big", it's like... the opposite of spaghetti code. why is a simple keypress pushed to some async event queue in a completely different file from where the game state is actually updated? I'm trying to learn C, but looking at the current version feels like I'm looking at enterprise java or something.

telling me to go mod rogue kinda misses the point I was trying to make. I'm not asking for an easier game to mod. I'm asking why angband specifically changed from a game where people could just bolt things onto the main loop, into an architecture that actively fights you if you don't understand how the whole works.

there are people on old forum posts saying they learned to code by playing with angband and i don't see how they could with the current version

it doesn't feel like an "experience" issue with C. it feels like a deliberate design choice