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,216
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.
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Mar 18, 2020, 3:12 pm
#53
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,216
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.
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Apr 5, 2020, 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, 2020, 8:51 am
#55
Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,299
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, 2020, 3:41 pm
#56
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 764
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, 2020, 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, 2020, 3:39 pm
#58
Joined: Dec 19, 2018
Occupation: Pharmacy Tech
Location: USA
Interests: ZZT, Roleplaying,
Posts: 37
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."
Energizer - you are invincible
ZZT @narchists unite! Turn off the dark, get free money, defeat death itself!
Apr 17, 2020, 1:07 am
#59
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 764
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, 2020, 1:23 pm
#60
Joined: Dec 19, 2018
Occupation: Pharmacy Tech
Location: USA
Interests: ZZT, Roleplaying,
Posts: 37
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?
Energizer - you are invincible
ZZT @narchists unite! Turn off the dark, get free money, defeat death itself!
May 21, 2020, 1:36 pm
#61
Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,299
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, 2020, 6:42 am
#62
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,216
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.
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Jun 5, 2020, 6:46 am
#63
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 764
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, 2020, 11:22 pm
#64
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,216
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...!
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Jun 9, 2020, 1:14 am
#65
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 764
fejoa wrote
4D Simplex noise

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

I'm just glad I didn't have to do any math
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Jun 9, 2020, 1:21 pm
#67
Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,299
EPIC!!!
Sep 10, 2021, 12:40 am
#68
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,216
So, still working on this. I'm happy to report that I'm nearly done. Just a one more feature to add, and a quick re-factor and it should be good to go. The additional feature is to make
NativeGTerrainType
in
owterra.dat
into a vector of allowed terrain types, rather than just the one terrain type.

Here's a spoiler, player movement wrapping around the world map (toroidal world topology). Note this world size is the much hoped for 1-screen worldmap size (46x26 tiles).
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Sep 10, 2021, 1:33 am
#69
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 764
I'm really looking forward to this!
Sep 10, 2021, 7:23 am
#70
Joined: Dec 14, 2017
Occupation: Student
Location: Finland
Posts: 224
Awesome!
Sep 10, 2021, 5:46 pm
#71
Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,299
This is going to be awesome! Bless you Covid
Sep 13, 2021, 12:56 am
#72
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,216
Without saying I'm done, I think I have something that is sufficiently stable to ship You can take a look here:
https://github.com/Attnam/ivan/pull/631

The key takeaways for players:
* You can choose Pangea or Continent world type.
* Pangea makes bigger landmasses, and puts all locations on one continent.
* Continents puts UT Exit, Attnam, and GC on one continent, the rest of the dungeons either same continent or random continent. (With hindsight I think no-one will use this ) .
* You can select a world seed, which determines the land and water distribution by seeding the noise algo. Seed 0 gives random seed.
* You can select a world size out of Huge [128x128], Large [96x96], Medium [64x64], Small [49x49], Tiny [32x32], Four screens [84x52], or One screen [42x26].
* You can select what happens to the PC when he reaches the edge of the world map by selecting a world shape out of flat pancake, flat brandy snap, or flat doughnut. The edges of the map roughly align What happens to the PC when he crosses the edge of the world map is left as an exercise for the player.

To reduce confusion, the defaults will be:
* World size: Medium (64x64)
* Land type: Pangea
* World shape: Doughnut
* Seed: 0 (will generate random worlds)
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Sep 14, 2021, 1:34 pm
#73
Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,299
Testing it out some, love it! I think Medium is a little too big for the default though (possibly because I have the graphics at 2x factor so it carries onto more screens)... I think that will still have the same annoyances as vanilla IVAN where the map is just too large and hard to find what you're looking for. I would go with Small or 4 screens as the default
Oct 22, 2021, 1:46 pm
#74
Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,299
I noticed GC is visible now even before I deliver the encrypted scroll to Petrus. Was that just a temporary change for this world map development version or is that how it is now?
Oct 23, 2021, 5:28 am
#75
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,216
Small or four screen, noted.
GC showing up early is a bug and I must scream fix it.
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Jump to