Author Topic: Wanderers / open world RL  (Read 27261 times)

koiwai

  • Rogueliker
  • ***
  • Posts: 99
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #15 on: July 19, 2014, 06:02:56 AM »
I had some trouble with adding money and merchants to the world. I could not decide, should they be just an item in an inventory slot, or deserve some special treatment. So, finally decided to postpone this feature altogether, and add other things.

Better map generation

I made nice automated dungeon generation module, which constructs a random map from a short specification like this:
Code: [Select]
@joint ,+/%$
@door  ,+
@floor .,

@gen / = ,#
@gen % = +#
@gen $ = +,

@b ,+ = #

##/##
#...#
/...$
#...#
##/##

#####
,...,
#####

#####
,...,
#...#
##$##

#######
#.....#
#$###$#

You basically tell the program:
  • what are possible building blocks
  • what tiles are the joints (the places at which two blocks can be joined)
  • rules for merging tiles
  • tile randomization
  • some post-processing



A few more examples (for other specifications):




This map generation module builds all dungeons now. It also builds houses in settlements.



I'm going to make a library or a command line tool that uses this generator, so everyone, if they will, should be able to use it for their projects. In fact, I already have a command line tool now, it is used to make those ascii screenshots. But I want to do it right, and it should works for all platforms. Maybe, it even worth rewriting the thing in C, I'm a bit uncertain about it.


Weapons and materials

Added two alternative metals: Rusty steel, and high-quality (~Damascus) steel. Example with three daggers:



My current set of weapons (some of them, like polearms, are not in the game yet)



The oversized ones are way too heavy for normal people. If you wield them, the unit would be slowed down a lot. And they are very expensive too, so practically, they never really drop. Probably, they are waiting for giants, super-light alloys, mlthril or something like that  ;D

By the way, there is a great source of information about swords: https://www.youtube.com/user/scholagladiatoria/videos  (Matt Easton)

Mobs' strength markings

Since mobs wield weapons, to quickly see who are dangerous, I added markings:
2 yellow dots - they are between x0.25 and x1, compared to your strength approximately,
3 orange dots - between x1 and x4 - they are likely to be stronger than you,
4 red dots - more than x4 stronger than you - real danger.


I think, I should add real doors, finally. Maybe, chests with stuff, and yeah, money. Because not only the player, but also several hundreds of NPC-heroes also should participate in trading, money should be implemented efficiently.

Techbear

  • Newcomer
  • Posts: 9
  • Karma: +0/-0
    • View Profile
    • Email
Re: Wanderers / open world RL
« Reply #16 on: August 21, 2014, 10:03:28 PM »
this looks really good!  You've clearly done a lot of hard work.

koiwai

  • Rogueliker
  • ***
  • Posts: 99
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #17 on: August 26, 2014, 02:39:46 AM »
Techbear, thanks!

Updates:

1. Now, all dungeons are not simple vertical shafts, but a complex interconnected network. See the screens below, the minimap on the left shows the layout of your current level z=-2



2. Player's Inventory is hidden to save the screen space:

(a) Hidden:             (b) Visible:
 

3. Graphics code is significantly improved. It is much easier now to change the window size. Currently, it is set to 854x480, which is one of the standard Youtube resolutions. I plan a config file, where these and other parameters can be adjusted.

4. An alternative tileset variant inspired by ADOM.

 

I am going to keep both the flat tileset, and the "3D-ish" one. It should only affect walls, doors, and maybe some other obstacles, but the majority of the things is still the same

5. An experimental fog effect on unexplored tiles.

It can be black or white, or any other color:
 

The fog can be animated, Youtube video:



Also, notice that if you watch it in 480p quality, all pixels are crisp and look good, this is because the window dimensions match one of the Youtube defaults. I don't like this resolution too much, it's a little too small for playing comfortably, but for recording lets plays it must be one of the best possible. Not that I'm recording LPs myself, but it makes sense to make the game youtube-friendly :)

koiwai

  • Rogueliker
  • ***
  • Posts: 99
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #18 on: September 03, 2014, 01:00:48 AM »
Update:
1. Fully functional doors, although CPU-controlled units are still not able to open/close them. I had to add the whole new idea of "positional objects" to the code. They will represent things like doors, levers, etc. And any unit can intaract with them (if their AI can handle it, of course :D).

2. The melee damage of "dual wielding" units is now subadditive (the biggest weapon gives its 100%, the other(s) only 65%). It makes more sense. Also, I was trying to balance spears (polearms) - how strong/heavy they must be, and particularly, how to discourage dual wielding spears together with somethin else.. cannot say that I really succeded, but may be they are a bit better now.

3. Two more templates for dungeon generation. One of them features large circular rooms, promoting quicker exploration and maybe more intense combat.



koiwai

  • Rogueliker
  • ***
  • Posts: 99
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #19 on: September 09, 2014, 08:03:18 PM »
1. I rewrote the inventory to handle stacks of identical items. As an example, added coins. Then, there is a special slot for money, so all CPU-controlled units will automatically keep their money there, and will be able to buy stuff from merchants. It seems that now nothing stops me from adding merchant actors and more advanced economical interactions (blacksmiths and craftsmen would be great to have, for example).

2. Added headgear. The game was definitely missing the medieval hats like these  ;D





koiwai

  • Rogueliker
  • ***
  • Posts: 99
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #20 on: September 15, 2014, 05:10:37 AM »
1. Fixed a few mistakes in the map generation code.

2. Mobs are now picking up items. They do it in a relatively smart manner, evaluating all new equipment. The player has to be much more careful about the items lying on the ground. Also, killing a bunch of mobs in a row may become much harder, for obvious reasons. Say, you are killing the first mob, but the second takes its place, equipping some of the items dropped by the first :o and so on. However, the game does not feel harder, rather, I would say, it became more interactive and unpredictable. It also gives you more incentive to use doors.

An unrelated screenshot


koiwai

  • Rogueliker
  • ***
  • Posts: 99
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #21 on: September 25, 2014, 11:44:07 PM »

I'm trying a new cave dungeon style:



Also, in the previous update I removed the stun effect when you collide with a wall (when somebody hits you and smashes you into the wall, usually). This wall stun had too significant impact on the game in the past, it was the best way to disable and kill an enemy, but it was also very dangerous for the player. It also was not a programmed feature, but a consequence of other movement mechanics. So, I removed the effect, but then it turned out that it was a great feature actually. So I reimplemented this stun effect back, but this time it is much easier to tweak, so it is much weaker than it was before, significantly less dangerous, but still noticeable.

In the gif, the blue "%" notofications tell you that a unit is stunned.

jocke the beast

  • Rogueliker
  • ***
  • Posts: 103
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #22 on: September 26, 2014, 07:17:43 PM »
Looks great!

koiwai

  • Rogueliker
  • ***
  • Posts: 99
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #23 on: October 11, 2014, 01:44:25 AM »
jocke the beast: Thanks!

You know what, I built the game for Windows! ;D So, please enjoy:

Download for Windows (32bit):  https://dl.dropboxusercontent.com/u/70985178/wanderers-2014-10-10.zip

The whole thing was rather non-trivial. I have VirtualBox with Win XP. There is Cygwin, MinGW toolchain, and OCaml compiler, also had to locally build SDL for MinGW. Eventually, everything did work well. Though, it took about a day. Next time it will be much easier. I'm really happy I did not run into wierd cross-compilation errors, and the Makefile did not need a lot of extra work.

I also added an option to restart the game when you die. It is more convenient particularly for Windows users who don't run programs from a terminal. Still, running from the terminal is better, b/c it gives you an option to choose the random seed for the game.


Some other updates I did a week ago, but did not post because the forum was down at the time:

1. In the last update, there are two underground biomes: Dungeons and Caves. For now, they just look different, and usually caves are deeper underground. However, I plan to add 4-6 new cave generators for this new biome. It is possible to make some mobs like caves more than dungeons, and the other way around, but I should add goblinoids first, then they will prefer caves, and the undeads will prefer dungeons.

2. There was a bug in the unit generation code. The weight of a creatures is generated from log-normal distribution, this is a good approximation of real human weights. So, once the map simulation function got stuck in an infinite loop. The reason was the following: a very light mob with weight 30kg was created, and its strength was set to a negative number. So in a fight simulation, he was running not towards, but away of the enemy, and their fight got stuck in an infinite loop.

3. Also I changed the tileset to make bricks look better, and rocks look like rocks, not like eggs/blobs. Not sure if I succeded, but let's say that this is the next iteration.

« Last Edit: October 11, 2014, 02:06:21 AM by koiwai »

koiwai

  • Rogueliker
  • ***
  • Posts: 99
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #24 on: November 04, 2014, 10:51:45 AM »
Hey guys! So, have you tried to play the game? Anyway, there is some new stuff.

I'm adding magic to the game. What I'm aiming for is the world where magical energy is omnipresent, flowing through the crust of the planet, through the air, through every creature and every molecule. Those who can take this energy, will be using it even if they don't know any spells.

 

Practically, there is a new characteristic, you can call it Magic affinity (MGC). It tells you how well the creature interacts with the magical energy, how it can see, absorb, and accumulate it. (~0.05 is the smallest possible value, ~1.0 is the max, meaning they peprceive and absorb it all).

The energy is accumulated as Energy points (ENG). For now, there is no fancy spellcasting per se, it will be added later, but there is its "vulgar" variant: available energy boosts your normal attacks, particularly the ranged one. When you shoot at an enemy, there is a high chance to shoot a charged bullet/bolt/arrow, it hits with significantly higher damage and momentum.
Melee attacks are boosted too, but this effect is quite unreliable. However, when fully charged with energy, boosted melee damage can be significant too, I try to make it work primarily as a desperate measure for spellcasters/archers and as an occasional attack boost for swordsmen.

The weaker (and skinnier) a mob is, the better their magical abilities are. For example, players Constitution CNS < 60 (kg) means that their are quite good spellcasters.  The video below shows how you can fight relying on magic and ranged attacks wearing almost no armor:


Real spellcasting will be added in the form of drawing sigils or magic circles on the floor, but I'm not going to add it very soon. Also, the current form of magic has to be balanced of course, but the general idea seems to be working quite well. Ranged attack is fun to play, and you don't have to be a tank to do well. Although, when I started implementing it, I wasn't sure that it would work. So, I'm quite happy about it!

I'm thinking what should be the next feature to implement. Probably, merchants and shops, or some fun AI (e.g. group behavior for mobs?), or some social stuff like reputation and rummors spreading.
« Last Edit: November 04, 2014, 10:57:36 AM by koiwai »

Ferret

  • Rogueliker
  • ***
  • Posts: 122
  • Karma: +1/-0
    • View Profile
    • Demon: A monster collection roguelike
    • Email
Re: Wanderers / open world RL
« Reply #25 on: November 09, 2014, 06:31:26 PM »
Sat down with the 10/10 build you posted a little ways back for a bit. :D Pretty interesting so far. :) The starts had a fair amount of variety to them: usually I started in a peaceful village, once I started in one in the middle of fighting either a civil war or an invasion (wasn't sure which), and I had one start that seemed to be a hunting party of sorts: me and number of friendlies in the middle of the wilderness (though we were pretty close to a village as it turned out.) I also found a couple of dungeons which was exciting (though I was mauled to death by animals before I could dive in the first one, and was killed promptly by a skeleton when I managed to get in the second one. :D )


Couple of interface issues I think are worth mentioning:
* I've had a hard time telling what is going on in melee combat. I see brown numbers, red numbers, and what looks like a VFX for melee attacks, but I've had trouble figuring out what those mean, what's going on, or how a fight is going for me in general. It seems like brown numbers = I took damage, red = I dealt damage... but I'm not sure of that even after playing a few times. It also seems like I try to attack and nothing happens many times, probably a 'miss' result, but without some sort of visual feedback that isn't entirely clear.
* The "press [enter] to restart" text that appears when you die is very faint, I didn't see it for a fair bit.


Oh, are there plans to allow some choice over your character's initial abilities/starting gear? Especially once there's a build out with the magic stuff in it, would be cool to always be able to pick a wizard-ish start. :D

koiwai

  • Rogueliker
  • ***
  • Posts: 99
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #26 on: November 11, 2014, 07:52:31 PM »
Thanks a lot for playtesting!  :)
 
Couple of interface issues I think are worth mentioning:
* I've had a hard time telling what is going on in melee combat. I see brown numbers, red numbers, and what looks like a VFX for melee attacks, but I've had trouble figuring out what those mean, what's going on, or how a fight is going for me in general. It seems like brown numbers = I took damage, red = I dealt damage... but I'm not sure of that even after playing a few times. It also seems like I try to attack and nothing happens many times, probably a 'miss' result, but without some sort of visual feedback that isn't entirely clear.
* The "press [enter] to restart" text that appears when you die is very faint, I didn't see it for a fair bit.

I'm afraid you were trying to bump to attack. It is not explained in the game, but to attack you use WASD or Ctrl+direction. The reason for that is that multiple units may occupy the same square - this way we can get crownded streets, for example, where mobs briefly bump into each other, but keep walking in the direction they want. You can simply walk into another unit to push them, or to try to get past an enemy (it's a way to escape when you got cornered, and it may work).

The numbers tell you how much damage a unit gets. If the digit is transparent grey-ish, it's not very dangerous to the target, but when the numbers get brown and then red, it means that the target is getting siginificant damage (in short, red color component = (the damage dealt) / (remainging HP)).
The rationale is to provide some visual feedback about the HP of the target without giving their current and max HP to the player. More traditional approach is to tell HP/maxHP, but how an inexperienced firghter can tell the exact HP of a dragon?

Oh, are there plans to allow some choice over your character's initial abilities/starting gear? Especially once there's a build out with the magic stuff in it, would be cool to always be able to pick a wizard-ish start. :D

At the moment, your starting build is random. By looking at the Constitution (CNS) atribute, you can tell whether your characeter is strong of flimsy. Starting equipment is random too. It all depends of the starting random seed. In the future, I plan to genereate the character using their name as a seed for PRNG. So, you can get you favorite character again in a different game, if you like.

A bit more detailed info about your attributes, and how to start: README.
In short: You constitution (CNS) attribute is your max HP, also it is your mass in kilograms. Characters with high CNS also have high Athletic abilities (ATL), but worser reaction (RCT). Reaction is your average delay in units of time (0.1 second), the smaller reaction, the better.

At the moment, your attributes depend on the game's random seed. To choose the seed, you must run the game from the command line (see README) - yeah, sorry game's Linux origin, it's not in the UI yet). If you know the seed, you may start the game again with the same seed, and get the same wizard character.

I will add a few more things and make a new Windows build with magic included.

Again, thanks for playing! Hope, I answered the questions. The game is quite rough at the edges, no tutirials or in-game help, and the starting conditions can be difficult, e.g. finding your first weapon is not always easy.

Ferret

  • Rogueliker
  • ***
  • Posts: 122
  • Karma: +1/-0
    • View Profile
    • Demon: A monster collection roguelike
    • Email
Re: Wanderers / open world RL
« Reply #27 on: November 12, 2014, 11:27:49 PM »
Guilty as charged on trying to bump attack. :) I missed that there was a difference between moving and attacking controls-wise. :(

I like the idea for the coloring on the damage numbers being the way you gauge an opponent's durability. :) But, since you don't need this mechanic for damage to yourself necessarily (you know your own HP after all), maybe use a different color entirely for the player? i.e.: brown-red scale for NPCs, white or something not in that scale for PC damage? That would make it easier to tell who's taking the damage, at least at "me or not me" level. I should give it another look now that I actually know how to attack properly though, maybe it isn't confusing when you aren't assuming all the numbers are you + enemy hits when it's actually just you getting hit :D

:D Glad to know that consistent starting builds will be a thing later (and are sort of a thing now via command line!) Looking forward to the magic-included build. :D

koiwai

  • Rogueliker
  • ***
  • Posts: 99
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #28 on: November 17, 2014, 06:06:31 AM »
Added slimes. They are not just another melee mob. The idea was to make a mob type that is dangerous in groups, when they surround you. I also wanted them to push the player (although, in this current implementation, they don't push too much, and probably I'll keep it this way).

The slimes don't have a real melee attack, but they deal damage when when you and them are on the same tile. So, they run, smashing into the player. It's very easy to get rid of a single slime, you don't even need a weapon, but a group can be dangerous if you are not armed well, or especially if they could surround you.

I will play with them and try make them more fun, maybe add some random behavior. They don't merge, but big slimes split into a bunch of small ones. They are abundant in swamps, and also ought to be present in caves, but I could not playtest it succesfully. The thing is that the caves are deep underground ~ usually starting at the depth level 6-8 (if a dungeon goes that deep). I don't have a way to teleport in the game, and I don't have a good development/debugging/visualization tool that shows the map, and the population distribution. Probably, I have to do it now, when the game gets bigger, and it's difficult to get to the place you want. Maybe, adding a "developer's terminal" with certain cheat commands would not be a bad idea too )


Also, for several weeks, I've been playing with the names (and ~ "language") generation, but I'm still not happy with the results. The idea is to make a distinctly sounding randomly generated set of syllables for each nation, which can be combined to produce the names for all non-player characters. Examples:
Code: [Select]
Surnames: Banoru  Fanoru  Hesese  Heseviru  Miruno  Nobanomi  Nonono  Noruseru  Noseruce  Ruvimi  Senono  Sesemiru  Vinovi  Vipami  Vizinono
Male given names: Eyquaceru  Eyruno  Hevirunoba  Luwavi  Miquavihe  Nobaheru  Noruruzi  Noseru  Noseru  Rugaru  Rugeseru  Ruvilu  Serunoqua  Viziwa  Zinonozi
Female given names: Fabanoke  Fanobanoba  Ganorupa  Henoseno  Mieynono  Nobanomi  Nobaseno  Ruganoba  Selunono  Senobakeno  Senono  Senonose  Vikelu  Viseno  Wanono
Code: [Select]
Surnames: Jalulu  Jarostronu  Nurodestro  Rolutrode  Ronuro  Rorodese  Sestrosetha  Strodeya  Strogenu  Stromiro  Strothatharo  Strotrostro  Thastroya  Trotharostro  Yarotr 
Male given names: Jarostrotha  Lustroge  Nuberode  Nugerotha  Nuronumi  Nutronuci  Semironu  Strodenumi  Strodeyastro  Stronuro  Strororo  Strotroja  Thastrodede  Thastronutha  Yagestronu 
Female given names: Cinujaro  Delucinu  Deroro  Desestro  Deyaro  Jaronuro  Mitharo  Miyanu  Nujanu  Roselu  Royaroro  Sedelu  Strosero  Stroseroro  Strotharose
Code: [Select]
Surnames: Hihigi  Hihiluhi  Hinuru  Hitharuhi  Kelurubo  Mutsawi  Nunuhi  Quenunu  Shenufi  Toxanubo  Tsanutsado  Wishenubo  Xahihi  Xahisheamu  Yanu 
Male given names: Amutonushe  Dovonufa  Luyconu  Nudedo  Peadonu  Peperu  Rutofi  Setonu  Sherudodo  Toboshehi  Tochafato  Tomuamuco  Vohito  Vonuwi  Wiruhi 
Female given names: Anuxa  Ayanu  Cothanu  Doxanuhi  Hiamurugi  Hiatha  Hinunu  Mushexanu  Nudenu  Peruthaki  Pexanu  Sedoxanu  Tofanu  Xafanu  Xahia

They don't look very good to me. They are not bad, but sound too foreign. Well, I've taken 3 different approaches to do this names already, but eventually, hopefully, I'll get it right  ;D


Ferret: Thanks for the comment. It's always great to know the opinion of a new player who sees the game for the first time. I think, I'm not planning to change the notification colors at the moment, but I will consider this in the future. Especially if there will be other people suggesting/complaining.
« Last Edit: November 17, 2014, 06:09:34 AM by koiwai »

Zireael

  • Rogueliker
  • ***
  • Posts: 604
  • Karma: +0/-0
    • View Profile
Re: Wanderers / open world RL
« Reply #29 on: November 17, 2014, 11:32:49 AM »
I use a similar name generator in Veins of the Earth, which is mostly lifted from the inspiration (Incursion), and ToME also has a similar name generator - worth checking out?

I think both Inc/VotE and ToME name generators strike a good balance between the exotic and the familiar.