Who's that?

https://attnam.com/topics/Who-s-that

The Cathedral of Attnam > Other Coding

#1 Nov 3, 2011, 5:08 am Hide

SquashMonster

Somagu insisted that I should stop by and say hi because apparently I'm a legend.

I won't have free time worth shit for the next month at least, so don't expect to see much of me. But hi. I'll try to at least keep up with this thread.

Also, I hear you have a lot of problems with fork/variant devs showing up and disappearing without a trace before they make all that much. I think I actually know how to fix that, but is anyone who's still around a programmer?

(I don't count - didn't you hear that I don't have free time worth shit?)
#2 Nov 3, 2011, 5:28 am Hide

chaostrom

Awesome. The SquashMonster is back. Last I saw you was on jconserv, which is already a good 5 years ago. Holy shit.

In any case, the only one around nowadays is Warheck.
#3 Nov 3, 2011, 7:34 am Hide

JoKe

Posting in a legendary thread.
#4 Nov 3, 2011, 11:21 am Hide

capristo

I don't know you from jconserv, but welcome. Has it really been 5 years? Wow.

"I think I actually know how to fix that"

Please tell more
#5 Nov 3, 2011, 12:06 pm Hide

Ischaldirh

Wow, it HAS been 5 years. Hi, Squash. Long time no see.
#6 Nov 3, 2011, 12:38 pm Hide

Ernomouse

I remember the avatar you had back then... Scary.
#7 Nov 3, 2011, 12:48 pm Hide

fejoa

Hi Squash! I don't count as a programmer either, probably for the same reasons. I'd also prefer to revert to the main line of IVAN development, in a group setting, but at the moment I'm using CLIVAN as a test bed for wacky ideas.
#8 Nov 3, 2011, 6:44 pm Hide

SquashMonster

Ischaldirh wrote
Wow, it HAS been 5 years. Hi, Squash. Long time no see.
Atomic, you spelled your name wrong. It's spelled "Izzy."

capristo wrote
I don't know you from jconserv, but welcome. Has it really been 5 years? Wow.

"I think I actually know how to fix that"

Please tell more
Okay. Everyone wants there to be more IVAN. But there are three problems with that.

IVAN is already a complete game-length. There is enough stuff to do in a normal run from Underground Tunnel to the ends of Gloomy Caves, and adding any more would mean either fucking up the difficulty curve or adding a whole lot of new content for more powerful characters (since you get more powerful the more stuff you do, natch). The game is also so hard that many people who've been here five years haven't beaten it, which is great, but making it longer means even fewer people will get through.

Everything that is already in the game, there is enough of. The game has enough monsters, items, materials, and gods. Well, it could use a handful more in certain key places but over-all you cannot pad up the game with a bunch more of this sort of content.

The existing ways to contribute do not give developers ownership. People are more motivated to work on things if they feel like their contribution is a solid thing. If Tim adds something to the game, people should be able to say "Oh, Tim? Yeah, he did the tower of coral." not "Oh, Tim? He added like... four monsters, I think one of them was that bee golem, and then a couple types of armor and a prayer effect for... Silva? It was either Silva or Nefas." It also helps to have a defined place that the game needs new content, which are really what the other two points are about.

Watch now as I majestically fix all of these problems in a single stroke.

The game needs a slight restructuring. The start of the game is brilliant, everything up through the end of Underground Tunnel can stay as-is. Afterwards, the game needs to branch out. You choose a quest somewhere; maybe it's heading to Gloomy Cave like always. Or maybe you decide to conquer some other dungeon like Tim's tower of coral. Whichever you pick, that locks you out of the others for the rest of the game. It's okay; you'll get to see the rest of the dungeons, because you'll die, because it's still IVAN.

How does this fix things? It lets you add to the game while keeping the game length the same. As long as new dungeons are roughly the same size as GC (and they don't need to start that way, they can grow to fit), the length is the same. It allows you to add more content to the game without cluttering it - new dungeons need new thematic monsters instead of GC's communism and radiation theme. A developer can "own" their dungeon and feel good about the contribution. New developers know where to start without stepping on toes. And, all the more importantly, it answers the question for everyone of "what am I actually accomplishing by adding to this game?"

Now, from a game design perspective, there is something slightly off about this plan. Why does the player pick dungeon B, instead of dungeon C? The answer in that is simple - during the course of Underground Tunnel, different characters tend to pick up different capabilities. New dungeons need to emphasize this - if I end up with completely rigged armor and health and no offensive capabilities to speak of, I should be able to figure out which dungeon best capitalizes on that, and pick that quest. We can emphasize that with something else IVAN needs.

New subsystems. IVAN is a game where baroque subsystems are the name of the game. Limbs, materials, gods? All go into a great deal of depth. More can be added, and doing so means being able to add more interesting monsters and items. More monsters and items means more interesting dungeons. I can think of a lot of great places to add this sort of thing, but I think I've said enough for now. If you don't think I'm crazy I'll go into more depth.
#9 Nov 3, 2011, 7:16 pm Hide

PapaLongDong

Posting in legendary thread.
#10 Nov 3, 2011, 10:02 pm Hide

Ischaldirh

I do like where this is going. Items could be dungeon-locked, too -- So you're using a halberd, and hoping to find Mjolak? Well, you should probably go check out the Black Fortress over there, because that's the only place it'll spawn.

My only problem is that as you said, players may be more inclined to play Dungeon C instead of Dungeon B, for whatever reason -- maybe it's cooler, or maybe it's easier, or what-have-you, and this may alter their choices even in the UT once they understand what is most useful in the place they want to go. Though, I suppose this isn't really a bad thing; score multipliers could be modified for endings in the easier dungeons, and possibly the Really Cool Dungeons could have additional requirements to get in beyond simply passing through UT.

I dunno. Great thinking, Squash.
#11 Nov 4, 2011, 12:00 am Hide

SquashMonster

The key to making it so people don't always choose the same dungeon is differentiation in the capabilities of characters. Making sure Underwater Tunnel gives a varied spread of loot and stats is important to this - your example of weapon skill is a good example of somewhere the game already does this.

So an in-depth proposal:

Phase 1:

Phase 2:

Phase 3:

And since a lot of people may want to work on subsystems, here is a non-exhaustive list of a bunch I think could fit into the game well. Nobody has to do all of these. Nobody has to do any of these. And I want to hear things I haven't listed.
Subsystems:

So there you have it. Re-read phase 1 to see we really don't need to do much to get things into a shape where people can contribute all these awesome things more easily.

Also, someone tell me why the list syntax is broken.
#12 Nov 4, 2011, 1:12 am Hide

Somagu

SquashMonster wrote
Also, someone tell me why the list syntax is broken.

Cause Capristo is overhauling the forums and a lot of things are broken.
#13 Nov 4, 2011, 3:12 am Hide

Ischaldirh

Phase 0: Find people who dig IVAN and are willing to help make this happen.
#14 Nov 4, 2011, 3:47 am Hide

chaostrom

Brilliant idea SquashMonster. The main reason that probably hasn't been thought of before is that we get few real coders and dungeon locking can't be done with copy-pasting bits of script.

That said! Warheck, are you saying that for the sake of saying that or are you really prepared to work on IVAN. We're not looking at a lot of progress, quick-like, but long-term commitment. It's been said before, and I'll say it again.

We only really need one dedicated coder.

If you're willing to be our man, we could feasibly get development going. If we can get the ball rolling, who knows, others like Z and herself might be willing to help out too.
#15 Nov 4, 2011, 8:03 pm Hide

fejoa

All I can say is that I'm surprised at how well my brain functions while drunk. I have started a fairly demanding job in electirc power which is not even in the field of software engineering. My time is really constrained by this, but I am still committed to the development of IVAN. I am not a real computer programmer, so I feel like I am not the right person to take on the responsibility of development. I personally hope that Z or someone of similar pedigree may take on the role, but I acknowledge that Z is very busy with his own roguelike development which is in itself a masterpiece.
Basically I am a writer of algorithms, a diver of source codes and a copy-paster, I don't know how pointers work, "structs" are still pretty grey to me and I don't understand a whole lot of other shit. So i don't feel qualified to manipulate the over-arching structure of IVAN, yet.

I agree with the things that SquashMonster has said, and I particularly agree with segregated dungeons which are mutually exclusive, as a vehicle for spreading out the development into the community, by way of people creating novel dungeons. Having created some new characters, i wondered if I could make them specific only to the dungeons I had created. Vanilla IVAN does seem to be a complete game, and alternate dungeons seem like a feasible way forward for IVAN development.

Right now I think the Phase 1 goals are achieveable and we should begin forthwith. The first thing we should agree on is cvs or svn or some other form of sharing the code. Sourceforge or something would be good. I strongly believe in sourcediving, and any aspiring IVAN dev may spend at least 6 months worth, maybe 6 hours per week examining the source and trying to make the code do wierd shits. It's not hard, just takes a lot of staring. Further, I think that as many devs need to be on board as possible. Even people who cannot code to begin with. Compiling is not hard, so anyone can be the programmer really.
#16 Nov 5, 2011, 1:19 am Hide

SquashMonster

I thought dungeon-tags seemed a fair deal harder than the rest of what phase 1 asked, so I went through and found all the places that need changing for it. I haven't actually tested this yet, and probably won't have time to get IVAN compiling any time soon, but it will work .

Phase 1 - "Add dungeon-tags to script files."

In char.h -
- add DATA_BASE_VALUE(const festring&, DungeonSet) to big list of DATA_BASE_WHATEVER calls
- add festring DungeonSet to struct characterdatabase

In script.h -
- add SCRIPT_MEMBER_WITH_BASE(festring, DungeonSet) to levelscript

In script.cpp -
- add INIT_ENTRY(DungeonSet) to levelscript::InitDataMap()

In level.h -
- add festring DungeonSet to level's protected members
- add festring GetDungeonSet() const { return DungeonSet; } to level near GetDifficulty

In level.cpp -
- add DungeonSet to list of things saved by level::Save
- add DungeonSet to list of things loaded by level::Load (must be same spot in list, natch)
- add DungeonSet = *LevelScript->GetDungeonSet() to level:generateDungeon

In game.h -
- add static festring GetDungeonSet() { return CurrentLevel->GetDungeonSet();} near GetMinDifficulty

In proto.cpp -
- at start of protosystem::BalancedCreateMonster() add festring anyDungeon = festring("any" );
- in protosystem::BalancedCreateMonster(), after it checks Database->IsAbstract and Database->CanBeGenerated but before it checks DataBase->IsUnique, add if(!(DataBase->DungeonSet==game::GetDungeonSet() || DataBase->DungeonSet== anyDungeon)) continue;
- (note that constructing and comparing festrings is most likely place for me to have made error)

In char.dat
- add DungeonSet = "any"; to character (the default)
- add DungeonSet = [set you want to restrict to] to [entry you want to restrict to a specific dungeon]

In dungeon.dat
- in each level 0 or LevelDefault block, add DungeonSet = "nothingspecial"
- in each floor block where you want to ignore that, or in dungeons where you want to enable a special dungeonset, (instead) put DungeonSet = [what you named that set]
#17 Nov 5, 2011, 3:45 am Hide

fejoa

So the above code restricts certain monsters to certain dungeons, I think it will mostly work as written It will certainly enable dungeon builders to have more control over the theme of their dungeon. Does the code support being able to specify that a monster may spawn in multiple dungeons, but not gloomy caves, say for example:

purplehedgehog
{
...

DungeonSet = UNDER_WATER_TUNNEL|BLACK_FORTRESS;
}

Restricting that monster to only those two dungeons? I know I have used flags here, and the variables like BLACK_FORTRESS aren't #defined as flags. But I just want to get a feel for how this will go.

As for segregating dungeons, for starters I liked what vasilly did by bursting dungeon.dat apart so that each dungeon has its own data file. That would drastically improve things rather than devs working on a monolithic dungeon.dat file.

Also: Shall the next version of IVAN proceed from the IVAN CVS version? (I feel it would be the right place to begin)

#18 Nov 5, 2011, 4:14 am Hide

SquashMonster

The approach I give above will let you limit monsters to certain dungeons, but it only supports "any dungeon," "specific dungeon," and I suppose "no dungeon," by degenerate-case (do specific dungeon, never make that dungeon). It does not do sets of dungeons.

I went with making the dungeon tag a string instead of a series of integer flags because it makes things easier for developers who don't know coding (the string approach doesn't need defines). So you cannot or things together like in your example. However, now that you mention it there's a really simple way to get the best of both. Replace DataBase->DungeonSet==game::GetDungeonSet()
with game::GetDungeonSet.Find(DataBase->DungeonSet)!=[failedvalue]

I'm not sure what the return value of a failed find is with festring. Too much uncommented template-laden code for me. So actual return value of a failed find where I wrote [failedvalue] but otherwise just like written above. This makes it so if you say DungeonSet="HorsesSkeletons" or DungeonSet="Horses|Skeletons" or however you want to write it, it will find Horses and Skeletons as substrings and allow those creatures in the set. The downsides are that it's slightly slow (but who cares, it's 2011 and this is a turn based game) and that sometimes you will occasionally run into hilarious misunderstandings where one name is a substring of another (if you defined Petrus' wives as "Ho" then they'll show up with horses).


I just saw what vasilly did with the dungeon dat and it's really great. We absolutely should have that feature. Is his code available and in a working state? I saw that he was working on replacing all scripts with some fancy thing and we don't need that (especially since it doesn't seem to have happened) but everything else from his version sounds like a fantastic base.


Bursting out the other data types would be super handy as well. Actually, what I've done for similar projects works even better, but I think it's scope creep in this case. For reference I'll explain anyway.

Say each type of data has a specific type name that shows up in the declaration of an element. IVAN already does this nicely in dungeon.dat, where every new dungeon starts with the DUNGEON declaration, but does not do this for the other data files. All types of data can show up in all files. So, I could declare an Ommel creature in a file, then decide it needs Ommel_Flesh and declare that in the same file. Instead of bothering to have specific data files at all, the game just reads every data file out of the script folder, and yells at you if you define the same thing twice. For things that need to refer to eachother you need to do some clever stuff though (simplest version of clever stuff - set all references to placeholders then pass through after everything is loaded and resolve placeholders).


And I would say CVS or Vasilly would be the best places to start. Also, if I understand correctly (I often don't) you added a number of extra dungeons in CLIVAN, yeah? Do you have a general system for that, or in general an idea how we'd do Phase 1 point 2?
#19 Nov 5, 2011, 5:13 pm Hide

Ischaldirh

I'm starting to think this should be moved to Programming... I only skimmed it (programming goes over my head these days) but it looks promising...
#20 Nov 5, 2011, 7:00 pm Hide

SquashMonster

There aren't enough people to justify spreading discussion around. Putting everyone in the same spot makes sure ideas draw a crowd and maximizes the chances that someone sees something where their skills or ideas are useful.

Phase 1 has some good non-programming questions that need answering.


Also, we can talk about the black fortress, coral tower, etc.
#21 Nov 5, 2011, 8:26 pm Hide

Ischaldirh

I don't mean spreading the discussion around, I just mean moving this topic as a whole into Programming, since it has to do with IVAN development.

Regardless. We should have a look at what the Devs had written about the next version -- their goals and such, as I recall there is a document with this stuff around somewhere. Additionally, I think the game needs pumpkins.
#22 Nov 5, 2011, 10:46 pm Hide

capristo

chaostrom wrote
That said! Warheck, are you saying that for the sake of saying that or are you really prepared to work on IVAN. We're not looking at a lot of progress, quick-like, but long-term commitment. It's been said before, and I'll say it again.

We only really need one dedicated coder.

If you're willing to be our man, we could feasibly get development going. If we can get the ball rolling, who knows, others like Z and herself might be willing to help out too.

Warheck (or whoever else), I've also been thinking about the fundraiser we had for web hosting costs. Since everybody was much more generous with that than I really needed, I'd be happy to pass along the majority of the money that was raised to somebody who could help with the game development. And I'm sure others would be willing to chip in a little more.
#23 Nov 5, 2011, 10:59 pm Hide

chaostrom

Is this what you're looking for?

Quote
Discussion about IVAN on 4.8. and 5.8.2010

Attending: Alveradok, Bored, Chaostrom, Ernomouse, JoKe, J_Kahvi and Z

----
*Player mood system;
Graphics are ready (Ernomouse has them)
various levels of panic
morale paniced <-> psycho
Berzerk mood
Animated face of the player
when high on mushroom, new face
One for every mood
Male and female chars are different

*Sex
http://www.attnam.com/topics/190/IRC_Adventures/2

*Magic system
ISP/telekinesis kind, no fireballs and other cliches
F.ex. lift a sword and use it to attack
Shouldn't be based on Mana

Telekinesis/Magic
travel through walls but no objects can be carried/worn
player leaves his body and inventory behind and turns into a ghost
should the body rot if you're away too long?
ghost items
amulet of astral projection
magical mushroom gas could result in Astral projection
something else than mana-point based system

if mana-stamina drops low, it'd cause bizarre things
the player will have to sleep
dreams
the player could gain things from dreams
affect food burning rate; Affect stats; Affect item spawning rate
finding spells only from the dreams
12 or so dream world
eaten items could enhance spells (Nethack?)


*Dig up or down
Escaping up/downwards

*A new quest
Retrieve a hammer from the catacombs
Smith gives you a key to petruses wives
Sex with one of them -> pregnancy (3 days?)
What if you're female?
Sacrifice the child and become Valpuri's champ
If groin gets scarred a lot, you might get infertile
Probably Petruses children could be sacrificed instead, as a harder guest
Magical way of restoring fertility

*Player classes
Might not be needed

*More comments to the code are needed
Someone should write a guide to code files

*There is a power chart for balancing weapons
Accuracy, power, sturdiness
Frequency of appearance is used to balance the power
Add features -> play testing

*Steppingstone material between meteorite steel adamantine
The int requirement takes a huge leap

*Every weapon class should have an artifact
More special items would be nice too (f.ex. flaming sword)
Trophy items and NPC's for people who contribute a lot to IVAN
there are plenty of examples already

*Another route to Attnam might be nice [SCRAPPED IDEA]
Not sure if it's necessary, as there already are alternate ways

*Different types of damage
Slash, point, blunt, burn
Variance between different weapons
Works diffeerently on f.ex. armour
Ranged weapons would get more reasonable to have
sling for blunt
bow for point
...


*Should full helmets dampen sound
The less dense a material is, the better sound barrier it is

*Items and limbs made of f.ex. gas
A weapon: "Fan"
Steam powered Vacuum cleaner
effective against ghosts, insects, thrown items

*Monsters could be put into items
Iron maiden
Cage traps
The problem is to make the charachter disappear
Could be handled as f.ex. traps?

*A cloud of insects (fireflies, locusts?)
The catacombs could have lots of insects

*You could have a conversation with the gods
Ighalli's god system
effects should be balanced somehow, so that better effects need better relations
bad effects
god requesting an offer for some favours
lifestyle choises could effect god relations
blood contains a lot of iron f.ex.

*Ghosts apperance could vary
Appearance saved when dying
Blue and small transparence
Ghosts that disenchant items
Ghost that eats anything in the way
Make them irritating
Invisible chars leave invis. ghosts

*Chaostroms Zombie torso riddance idea
Limit the torso animation rate to third or quarter of what it is now
When the groin is severed, the torso cannot turn into a zombie any more

*Convert all graphics to 32x32 (J_Kahvi could probably do it)
Opens possibilities to f.ex. turning into a big monster??
Would double the objects available
midget objects
wand of object enlargement
Midget tunnels and dungeons
Gulliver
Create new midget monsters from the existing 16x16 graphics
midgets handle as groups, so you'd attack all the midgets in one square
they still could move freely about

*Individual throwing accuracy for all items

*Monster ideas:
Wand using monster
Poltergeist monster
Insect cloud monstertype that you cannot attack by normal melee attack

*Moods on the dungeon ("quite like underground weather")
magical weather, tiring weather, hungering weather

*Different dungeon types
Tower dungeon
very open levels
wind
going against the wind would be taxing or slowing
illusions of f.ex. floor tiles
you should be able to escape the tower by jumping outside
if the player walks on a floor made of air then he will fall down a level, until he hits something solid
Damage based on falling distance
can't progress backwards
wind blow would affect large and unencumbered creatures more
if you jump or fly, you'd automatically get blown a certain amount with the wind
this way small creatures could find secret dungeons
tower made of balsa
if the player weighs too much, the floor breaks
For a cloack you could wear a Dwarven parachute, which radically decreases falling damage
Small alien side dungeon
Based on the frenchmen's alien mod
Astral projection dungeon
only accessible as a ghost
astral projections could carry only one item
only one revard could be brought outside, in case the side quest would be accessible only once
wizard hiding from something in an astral plane
his body is f.ex. suspended into a nearby statue
constantly exploding level as the entrance
explosions triggering every moment
ghosts could be immune to explosions
ghosts could move between levels without stairs
see digging up and down
Midget dungeon

*Too much mining would collapse the level above (Dwarf Fortress style)
generate not only the level you enter, but the ones next to it

*The catacombs should have a different algorithm than the GC and UT

*BUGS:
Shops shouldn't have locked doors without warning
when the shop is put into a room, change the locked doors next to it into unlocked ones

*Every new version needs more than the faces and the god system
A couple of tricky features, and a few easier ones

*Spreading fire which generates smoke
Smoke clouds should have a intensity modifier
In towers and towns wind should blow away the smoke and spread the fire
Insects could act as clouds that move randomly
Beehive that grows... Ogod!
bug room
makes a nice practice thing

*Side dungeons that go sideways

*Joke ideas:
Monty Python:
llamas
dead parrot
holy hand grenade
the killer rabbit
a little chance of a killer rabit spawning from adult mutant rabbits mating
witches that weigh the same as a duck
duck flesh and witch flesh

*Item ideas:
Fan (blows away insects and ghosts)
Steampowered vacuum cleaner (sucks in insects and ghosts)
Instead of steam powered, it could be basically just a captured Eddie; when it breaks, the Eddy comes out...
Wand of unlocking / locking (closes unlocked and unlocks the closed doors)
neither of these ideas were generally liked
Dwarven parachute
Rubber boots that boost electricy resistance
HUGE morningstar type weapon
weapons destroying walls? You can kick them...
Weapon tweaks
The stethoscope is a bit strong as a weapon
Gauntlets don't use unarmed skill (if they're wielded as weapons, maybe they shouldn't either)
Wielded gloves should affect unarmed skill and worn gauntlets should do extra damage

*Next version shouldn't be too hard:
No new dungeon
BUGFIX: the shop door creation bug and dissolving body parts (TTY only?)
BUGFIX: Mustard gas hostility bug
Insect clouds
Fire
Mood system
Having the bones ghosts look like the original characters
= IVAN 0.51
#24 Nov 5, 2011, 11:38 pm Hide

SquashMonster

How much would be in the game development fund? I do contract game development now, that's part of why I don't have much time to do proper work helping out IVAN. I would be willing to give a significant discount from my usual rates for such a cool project.

Don't let it sound like I'm pushing for that though. I'm happy to do what I can for free.
#25 Nov 6, 2011, 3:16 am Hide

JimmyJ

I am slow but good to have you back, Squash.