Where to next with worldmap and new dungeon locations

Aug 29, 2016, 2:19 am
#51
Joined: Sep 22, 2008
Posts: 634
4zb4 wrote
The passive lighting is apparently set inside the source code rather than by script.

It did seem hardcoded in this case, thanks for the confirmation 4zb4. I can likely get around it for now with luminescent ground materials to fake daylight to a degree, but that obviously isn't a viable long term solution.

IMO sunlight colour doesn't need to change, so long as we assume there's only a single sun. A lot of the location aesthetic can already be handled via ground clutter, material choices and BackGroundType. Instead of touching sunlight colour, it might be better to instead implement a basic ambient colour filter. This'd allow for more flexibility in dungeon building in general instead of being limited to above-ground locations. A slight orange haze for caves in volcanoes, a pale yellow for a sweltering dusty desert, a bluish tinge for glazier caverns, a dark green touch for dense rainforests or so on. This is not to say I've mocked up the effect on a screenshot, so no guarantees I'm not just speaking out of my ass and it'd look like shit.
Aug 29, 2016, 4:39 am
#52
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,171
4zb4 wrote
I'm well aware that changing this to read the appropriate sunlight colours from each individual dungeon script file is going to be a huge pain in the ass but it will need to be done sooner or later.

Grah, sorry for my deplorable misleading statements. I forgot it was hard coded. You guys are right, it'll have to be made into a feature of the script engine, to make things more complete. I added a request on github. Hopefully I get a chance to do it by the Christmas release.
Mar 18, 3:12 pm
#53
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,171
Right now there is some discussion going on about reducing the default size of the IVAN world map. The current size is 128x128 which is quite big, given that most of the world map is largely inaccessible. New players also often find their characters starving to death looking for a place to go.
One proposal is to reduce the default world size to 64x64. This could be made configurable, either a choice of three or four sizes (128x128, 96x96, 64x64, or 32x32), or a slider bar from 32x32 to 128x128.

Another request is to optionally choose between a pangea world and several continents (what we have now). This is because the number of new worldmap locations has increased recently.
The idea is to make a pangea the default world style so that players both old and new can easily reach every location on the world map, but that players that prefer the current style can configure this to "classic".

There is an issue on github here: https://github.com/Attnam/ivan/issues/584 and please feel free to offer your suggestions below as well.
Apr 5, 10:01 am
#54
Joined: Jul 9, 2019
Occupation: Studio Art: sculpting major, and photography minor
Location: Cliping through the floor.
Interests: Photography, sculpting, games, anthropologie, the Copper Age to Medieval history, and Ivan. (Of course.)
Posts: 39
fejoa wrote
New players also often find their characters starving to death looking for a place to go.

An easy bandaid solution, for now, would be to disable hunger gained on the world map.
Apr 6, 8:51 am
#55
capristo's avatar
The Imperialist


Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,195
TheMasterGear wrote
An easy bandaid solution, for now, would be to disable hunger gained on the world map.

I proposed reducing the size of the world map on Github.

I kind of agree with this though, although I still dream of being able to descend into any square and just have a wilderness level with lots of natural enemies and food.
Apr 6, 3:41 pm
#56
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 669
TheMasterGear wrote
An easy bandaid solution, for now, would be to disable hunger gained on the world map.

I don't think that will be necesarry with the smaller/better worldmap fejoa wants to work on.

capristo wrote
I still dream of being able to descend into any square and just have a wilderness level with lots of natural enemies and food.

That's my dream, too. Maybe one day I will figure out how to do that.
Apr 6, 3:57 pm
#57
Joined: Jul 9, 2019
Occupation: Studio Art: sculpting major, and photography minor
Location: Cliping through the floor.
Interests: Photography, sculpting, games, anthropologie, the Copper Age to Medieval history, and Ivan. (Of course.)
Posts: 39
red_kangaroo wrote
That's my dream, too. Maybe one day I will figure out how to do that.

What I think is the hard part is trying to get the random overworld tiles not overriding the dungeons and towns. One idea could help would to have all locations spawn before triggering events, even if that could cause sequence breaking.
Apr 16, 3:39 pm
#58
Joined: Dec 19, 2018
Occupation: Pharmacy Tech
Location: USA
Interests: ZZT, Roleplaying,
Posts: 35
TheMasterGear wrote
What I think is the hard part is trying to get the random overworld tiles not overriding the dungeons and towns. One idea could help would to have all locations spawn before triggering events, even if that could cause sequence breaking.

Couldn't you prevent that with some storyline checks that outright refuse entry to said places, or map terrain within the level that changes?

For instance if the player tries to enter Xinroch's tomb out of sequence, they get a statement like "You wander around the musty ruins for some time."
Apr 17, 1:07 am
#59
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 669
TheMasterGear wrote
What I think is the hard part is trying to get the random overworld tiles not overriding the dungeons and towns. One idea could help would to have all locations spawn before triggering events, even if that could cause sequence breaking.

That's actually the easy part. All the dungeons and towns are generated during worldgen, they're just hidden until you reveal them somehow. So we can simply check if there is any dungeon on the worldmap tile before generating a wilderness location.
May 21, 1:23 pm
#60
Joined: Dec 19, 2018
Occupation: Pharmacy Tech
Location: USA
Interests: ZZT, Roleplaying,
Posts: 35
red_kangaroo wrote
That's actually the easy part. All the dungeons and towns are generated during worldgen, they're just hidden until you reveal them somehow. So we can simply check if there is any dungeon on the worldmap tile before generating a wilderness location.

Now I'm curious - could involuntary random encounters be a thing? Or does the engine only support static locations?
May 21, 1:36 pm
#61
capristo's avatar
The Imperialist


Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,195
I don't think involuntary random encounters would really work well with the style of the game

red_kangaroo wrote
That's actually the easy part. All the dungeons and towns are generated during worldgen, they're just hidden until you reveal them somehow. So we can simply check if there is any dungeon on the worldmap tile before generating a wilderness location.

So what do we do if they try to descend on wilderness that they just haven't revealed yet? I guess that also depends on whether we want to save each wilderness area so that they can return to it. If so then that "wander around some musty ruins" idea would probably make most sense. If we just dispose the wilderness areas then it doesn't really matter
Jun 5, 6:42 am
#62
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,171
This past week the internet wouldn't give me a straight story for generating seamless periodic 4D fractal simplex noise in C++, but from what I can piece together from the few credible sources out there, I can say we are well on the way to being able to switch between continents and Pangea, and different world sizes.
I have a noise generator working in IVAN now (FastNoise library), which instigates the shape of the landmasses on the world map, in a way that can be controlled by a couple of parameters.
I'll put up some screenshots when I next get a chance.
Jun 5, 6:46 am
#63
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 669
fejoa wrote
This past week the internet wouldn't give me a straight story for generating seamless periodic 4D fractal simplex noise in C++, but from what I can piece together from the few credible sources out there, I can say we are well on the way to being able to switch between continents and Pangea, and different world sizes.
I have a noise generator working in IVAN now (FastNoise library), which instigates the shape of the landmasses on the world map, in a way that can be controlled by a couple of parameters.
I'll put up some screenshots when I next get a chance.

That sounds great!
Jun 8, 11:22 pm
#64
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,171
Here's a 48x48 map with a "Pangea" world type. You can also see the world seed in the messages. There will be a bunch of safe seeds to fall back on in case world generation takes too long. We can expand that list of safe seeds.

Note that the image can be tiled infinitely. This is so in future, if we want the player movement to "wrap" in the world map, the land forms are contiguous at the edges of the map. This was not trivial. Firstly you want Simplex noise, as Perlin noise is somehow flawed (generates artifacts when you try to make it wrap), and second, you need to generate it as a four-vector which maps to a toroid, giving a "seamless" noise map that wraps around the body you are trying to project it on.
This is the bona fide answer:
https://gamedev.stackexchange.com/questions/23625/how-do-you...
With original solution posted here:
https://www.gamedev.net/blog/33/entry-2138456-seamless-noise...
For the life of me, I couldn't work out what x1, x2, y1, y2 were, but I found another clue from a guy who had implemented 4D Simplex noise in the GLSL library:
https://shaderfrog.com/app/view/254?view=shader
The shader is cool, but wtf. The real meat can be found by studying the shader fragment code:
https://shaderfrog.com/app/view/254?view=fragment

In the end I decided to use this C++ library: https://github.com/Auburns/FastNoise
To get the 4D simplex noise, I had to merge the code from this PR: https://github.com/Auburns/FastNoise/pull/30
Looking back, it was definitely nuts.

Down the track we may need a recursive floodfill algorithm to detect continents that wrap, but I'll leave that as an exercise for a future dev (please god not me!). This doesn't preclude being able to wrap the player movement, it's just for completeness.

Next I will be busy making it fool proof, so that even this fool cannot crash the game...!
Jun 9, 1:14 am
#65
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 669
fejoa wrote
4D Simplex noise

You're a madman.
Jun 9, 6:07 am
#66
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,171
red_kangaroo wrote
You're a madman.

I'm just glad I didn't have to do any math
Jun 9, 1:21 pm
#67
capristo's avatar
The Imperialist


Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,195
EPIC!!!
Jump to