Temple of The Roguelike Forums

Game Discussion => Early Dev => Topic started by: koiwai on February 24, 2014, 05:02:54 AM

Title: Wanderers / open world RL
Post by: koiwai on February 24, 2014, 05:02:54 AM
(http://i.imgur.com/TAiMVDq.png)

(http://i.imgur.com/AfrrJeW.png) (http://i.imgur.com/JzH80Dy.png) (http://i.imgur.com/gkjrnxm.png) (http://i.imgur.com/nMRF8hu.png)

What is interesting about it?

1. The game is quite different from many Roguelikes and RPG games. First of all, the time system is semi-continuous: Your discrete actions are simulated in the continuous space and time, so you get interesting combat mechanics with a lot of pushing and dodging, while largely preserving the feel of familiar grid based games. 

2. The game world is simulated on two scales: The area around the player is simulated precisely with every detail taken into account, however, the rest of the world is not static and is evolving too with a bit coarser but still quite accurate simulation. Both simulation levels interact seamlessly, so your small actions will affect the whole big world. You can defend your village and make it stronger in the war with a neighboring tribe, or you can go explore the world and fight monsters in the underground dungeons.
 
3. Many features, for example social organizations of the NPCs, reputation, rumors, spell casting, villains, apocalyptic events and global quests are not implemented yet.

(http://i.imgur.com/SWRG9ws.png)

Can I play the game?

>>> Download for Windows:
Download the latest Windows build (January, 20, 2015) (https://dl.dropboxusercontent.com/u/70985178/wanderers-2015-01-20.zip).

How to play: README at Github (https://github.com/a-nikolaev/wanderers#command-line).

>>> Download for Linux (and probably OSX):
Get the source code from Github (https://github.com/a-nikolaev/wanderers). Compilation is straightforward. install the latest ocaml package for your system. Make sure you have your SDL1.2 and OpenGL libraries installed. Then just execute make.

How to play: README at Github (https://github.com/a-nikolaev/wanderers#command-line)

Controls

Arrow keys or h j k l - Movement
w a s d or Ctrl+direction - Melee attack
t - Rest
Space - Wait
i or Enter - Inventory mode (0, 1, 2 to move items between sections, Esc to cancel)
f - Ranged attack mode (f to shoot, Esc to cancel)
v - Interaction mode (v or Enter to open/close doors or barter, f for ranged attack)
m - Map (arrow keys and <, > to move, Esc to cancel)
< > - Use stairs
+ - - Faster or slower game speed
Esc or q - Cancel
Ctrl+q - Save and quit

Tips for new players

When you start playing, first, take a look at your CNS (Constitution). This is your mass in kilograms, and your max HP. Heavy characters are slower, and light characters are weaker. Also, light characters have better magical abilities.

The very first goal is to find some weapon, even a simple stick or a knife will make a big difference. You also may find a good random seed, where you start with weapons. To rest, press t, you will recover some HP. When equipping new items, pay attention to MBL (Mobility). When it drops down (say below 0.9), your damage also goes down considerably, and this is not what you want.

(http://i.imgur.com/RV6NYRx.gif)

To get full Documentation about the game, read the README at Github (https://github.com/a-nikolaev/wanderers#command-line).

The game is open source, distributed under GPL3 license.
Title: Re: Wanderers / open world RL
Post by: Rickton on February 24, 2014, 01:27:23 PM
I like the art style, and the game sounds pretty cool. How much of the world simulation is already implemented?
Title: Re: Wanderers / open world RL
Post by: koiwai on February 24, 2014, 05:22:26 PM
Rickton:
There are two main mechanisms implemented:

1. "Bulk" simulation of the world.
Each small piece of the map (region) stores its population, how many units of each faction is there. Number of houses. Total wealth of the region.

The world is simulated by a few rather simple rules: there is population growth, unit transfer between neighboring regions, fights between enemy factions, if their people happen to be at the same region. Houses are built and destroyed. This is very rough and approximate simulation, but it is detailed enough to resemple civilizations growth and their wars with each other.

When the player is nearby, a region is genearaged from its seed, and units are spawned. If you kill anyone, that unit is subtracted from the region's population. In the background, this region is still simulated as a part of the big world even when the player is there, but latently, the changes are saved and applied when you leave the region.
When you walk far away from the region, the region is reconstructed together with all its units and items. All items are decomposed into wealth.

In this sense, the world is semi-persistent. About 10-12 regions around you are stored and simulated in detail, but they get decomposed when you explore new regions.

2. Heroes (or actors) are persistent units, essentially like the player, they travel and fight mobs. Any mob (except domestic animals like cows) can be such a hero.

When heroes are in a region generated for detailed simulation,  they is spawned together with other mobs, and they act like normal mobs, no difference there. However, when the player leaves, they are not decomposed entirely. They travel in the "bulk" world, fight with local units (their fights are approximately fake-simulated), they pick up items, choosing the best possible equipment they can find.

(http://i.imgur.com/rVM4OdP.png)

All of the above is already implemented. What I want to add are organizations of heroes (actors). They are going to be tree-like hierachies. Starting with simple local militia to fight neighbors and wild animals to governments and military forces. Actors-Merchants to sell stuff. Actors-Craftsmen, Blacksmiths, Engineers, etc. to make new high-quality items. Good to make some factions more inclined towards technology and dwarf-like traits.

The factions, btw, are random and generated with the world. In the biginning of each game, I plan to ask for the name of the world and the name of the player. Both will work as seeds. So, you can play in the same world as many times as you wish. And you can play the same character in different worlds. I think, it can be interesting to add the following feature: If your character dies, but the final goals are not achieved, you can continue playing with another character. It is not a simple respawn, b/c you start a new character, and you loose a lot of time. But if you was very close to kill the bad guy, your second character can finish the job, where the first failed.

P.S. I liked Game Hunter's video of your game Possession, never played myself, but it looked very interesting
Title: Re: Wanderers / open world RL
Post by: Quendus on February 24, 2014, 06:08:01 PM
This looks interesting. I had a similar idea bouncing around my ideas file, I guess you're saving me the trouble of actually making it. Looking forward to seeing what becomes of this :)
Title: Re: Wanderers / open world RL
Post by: reaver on February 24, 2014, 08:11:37 PM
Same here, quite interesting idea - I'm currently toying with something similar, but more as pages of notes rather than code :)
How do you handle simultaneous actor movement? what if they decide to move to the same square, etc?
Title: Re: Wanderers / open world RL
Post by: miki151 on February 25, 2014, 07:13:14 AM
Looks really cool, and it's written in Ocaml!

I'm trying to compile it on Linux, but I get this error:
File "src/global.ml", line 18, characters 0-11:
Error: Unbound module Common


Any hints?
Title: Re: Wanderers / open world RL
Post by: Stone Dog on February 25, 2014, 03:09:33 PM
Hey, this looks interesting.
Too bad I'm on Windows and don't know the first thing about coding/compiling.
Here's hoping somebody will compile for Windows, or suggest a workaround (which is not going to be "install Linux").
Title: Re: Wanderers / open world RL
Post by: koiwai on February 25, 2014, 04:54:51 PM
Hope to make a fun game ) Thanks for the responses!

How do you handle simultaneous actor movement? what if they decide to move to the same square, etc?

I wanted to make a time system, where decisions don't cause actions immediately, but take some time. There had to be a mechanism to resolve collisions and other possible conflicts. Well, eventually, I had to sacrifice some discreteness, making units' positions continuous. But it does not seem to be a very big deal, all steps are still discrete, you walk from square to square, because you don't get control over your unit until you cross the boundary between the squares (+ some delay).

(http://i.imgur.com/PdhVoBe.gif)

Every unit has "position" (pair of reals) and its "location" (pair of integers), this is the square the unit is in. In the gif, the location is marked by four green dots. When walking, units move to the center of an adjacent square.

Every unit, when its move is computed, checks its current square + 8 adjacent squares. If there are other units, a force is applied to the current unit so that it's harder to move towards others. The force is non-linear (see "sim.ml", function "move_dv" (line 109), and "force_collision" (line 118)).

So, there is a simple physical simulation. Units are pushed when they collide, or when they are hit. Of course, one could use some rigid-body physics engines - but you don't need that, all collisions between units are "soft", so simple integration of the Newton's second law is really enough. It's easy. Even the time step does not have to be very small.

With some continuity of movement, you can make crowded city streets (need to add thieves there!), hordes of monsters pushing you, and not just waiting while you kill them one by one. Some physics in combat is also interesting. If you are heavy, you pushing opponents, if you are light and small, you can escape easier.


Looks really cool, and it's written in Ocaml!

I'm trying to compile it on Linux, but I get this error:
File "src/global.ml", line 18, characters 0-11:
Error: Unbound module Common


Any hints?

I don't know why this is happening. This is what my compiler outputs when I make the game: http://sprunge.us/QfZE
First, it finds dependencies between the modules with ocamldep, then it builds the GLCaml library, that it builds the game itself.

What is your system and the version of the compiler? Btw, I don't use Jane Street's Core, only the original standard library. The external dependencies must be minimal, only installed OpenGL and C headers, probably.

Paste the full output of the compiler, it should help to find the reason for this behavior.
Title: Re: Wanderers / open world RL
Post by: miki151 on February 25, 2014, 05:45:35 PM
The movement system sounds awesome! Can't wait to compile this thing :D

Weird, I tried again and this time I got this error:
Quote
ocamlopt -c -I lib/ -I src/ src/view.ml
File "src/view.ml", line 381, characters 2-12:
Error: Unbound value List.iteri

My system is some old Ubuntu with Ocaml 3.12.1
Title: Re: Wanderers / open world RL
Post by: koiwai on February 25, 2014, 06:43:40 PM
The movement system sounds awesome! Can't wait to compile this thing :D

Weird, I tried again and this time I got this error:
Quote
ocamlopt -c -I lib/ -I src/ src/view.ml
File "src/view.ml", line 381, characters 2-12:
Error: Unbound value List.iteri

My system is some old Ubuntu with Ocaml 3.12.1

I see. This an understandable error. List.iteri (http://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html) was introduced in 4.0.0.  But 3.12.1 is not that old, still I was using some functions from the 4+ version.

Maybe, I should try to add some workarounds for compiling with the 3.12 version, since I don't really use fancy novelties of the language. I will keep this in mind, thanks. For now, maybe, try to update to 4.1, if it's available )


Update:
In fact, "view.ml" is one of the last modules, so if the first error occured there then, probably, the code is largerly 3.12-compatible. I can simply replace this function with my own analogous, this is a simple iterator, nothing special. I will let you know.
Title: Re: Wanderers / open world RL
Post by: koiwai on February 26, 2014, 04:49:00 AM
miki151: I fixed that particular List.iteri - replaced it with another function that is 3.12.1 compatible.

I don't have any means to check if it's enough or not. I tried to look through the rest of "view.ml" and "mail.ml", and did not notice anything problemmatic, but there is no guarantees  :)
Title: Re: Wanderers / open world RL
Post by: miki151 on February 26, 2014, 05:27:50 AM
Ok, it compiled. I walked around a bit, couldn't figure out how to pick things up for a while. An on screen help would be nice. A horse walked into me and pushed me :). I tried fighting with someone (AWSD?), but got killed.

It's hard for the player to figure out what to do if they start in an open world. You could add some hints on how to get to the dungeons. Are they just scattered randomly on the map? Maybe you could add some roads?

I will play some more later, it looks like fighting could be really interesting with the kinetic repelling.

Btw, have you tried compiling the game into javascript to run it in the browser?
Title: Re: Wanderers / open world RL
Post by: koiwai on February 26, 2014, 07:01:57 AM
miki151: Awesome, thank you for compiling and playing. The game is not really ready for players ;D Starting position varies, usually you start in a village of your faction and it makes life easier, but sometimes your faction gets all exterminated before the game starts, so you appear in a very harsh world. Finding a first weapon can be hard, unless neighboring factions fight and you can pick up weapons from killed mobs. All dungeons are marked on the minimap with a triangle pointing down. Sometimes weapons are just laying on the ground (epecially in dungeons). Also, don't fight with wolfs and other forest monsters (brown faction), they don't drop anything.

Inventory.

How to pick up things: you open the inventory (i), choose an item with arrow keys, then use keys 0, 1, and 2 to move items between three sections (0 = ground, 1 = equipped, 2 = inventory). It's somewhat wierd and counterintuitive, but it was easy to code. Sorry about that )

At the moment the player experience is very raw, there are very few hints. Until other meaty content is in place, I don't really try to make it accessible. Read the controls section in the readme file, it should be helpful.

WASD = melee attack, F = ranged (with F to fire and Esc or Q to cancel)
T = rest for a short time, helps a lot
Space = wait.

Primary parameters
ATL = Athletic skills, your physical strength (for both fighting and movement).
RCT = Reaction (in ~ 0.1 of a second). The smaller the better, for moving and shooting quickly. This is your basic delay, you want it to be small.
CNS = Constitution = your mass in kilograms = you max HP. (For some mobs, their mass and HP can be not the same though).

Secondary
MBL = Mobility, freedom of movement. Determines how well you can use weapons. When overburdened, your fighting abilities degrade.
TMS =  total mass, including your own mass, equipment, stuff in the inventory.

Melee
DMG = roughly, DPS, Damage per second. "Sharpness." (Although, the actual damage also depends on your ATL and enemy's defense)
DUR = duration of one attack.

Ranged
DMG = roughly, DPS. "Sharpness."
FRC = The momentum projectiles get. The higher the better.

Defense
DEF = the probability to absorb physical damage.


About compiling to JS. I did not try to compile for browser. I don't think that programs like js_of_ocaml really can do that, but maybe, if I rewrite the graphics rendering code specifically for that, it should be possible.
Title: Re: Wanderers / open world RL
Post by: miki151 on February 26, 2014, 09:31:02 AM
I'm still intrigued by your choice of OCaml. I used to use it quite a lot at university, but never took it seriously for bigger projects, especially games. It seems that you are using the functional style a lot, and the code is very compact. I bet that you make far fewer bugs than I do in C++  ;D. I'm actually quite jealous that I didn't consider OCaml when starting my roguelike. The fact that it's an interpreted language, but at the same time can be compiled to a native executable is a huge plus when you start to distribute your game.
Title: Re: Wanderers / open world RL
Post by: koiwai on February 27, 2014, 03:26:00 AM
About OCaml.
There is no perfect language to my knowledge. We just stick to those that are least annoying )

Yes, good type checker helps a lot, especially when you are refactoring things, and that's invaluable when designing/programming a game with multiple interconnected systems. OCaml code is compact, there is only 4K lines of code at the moment in this project. The language comes with useful data structures like Hash Tables, Maps, and Sets (in addition to more traditional lists, arrays, and records). This is kind of a no-nonsese language, in my opinion. Libraries are usually high quality, and the signal to noise ratio in the community is high. Although, OCaml users tend to be invisible and not very vocal about the stuff they do, and a bit inclined to academia. Though it is gradually changing with Yaron Minsky and people like him, who bring the language closer to the industry, which is good.

OCaml is a bit restrictive, when you want mutually recursive function calls between different systems. In general, you have to define the function before you can call it. So, the whole program have to be carefully stratified, with clear module dependence. It helps, if basic types are defined early, and the operations on them are defined later, in higher-level modules. But still, you should be careful (Essentially, it boils down to the question: Which game entity is more essential: a Tile, a Unit, an Item, etc. - and how you can make all these different entities be aware of each other).

I don't write extremely functional code here. You rarely can avoid stateful data strucutres in games. So, there are arrays. There are (mutable) hash tables. I avoid using functions as properties of game entities, because the Marshalling module (http://caml.inria.fr/pub/docs/manual-ocaml/libref/Marshal.html) for dumping the gamestate into a file does not really like lambdas in data. So, I have to be conservative in this respect too.

There are both ups and downs. It's easier to program in OCaml than in C, and probably, in C++. But it's harder than in Python or Ruby. I think, you should be reasonably proficient in this language to write good code. I would hesitate to say that it's the best language for programming games, but it's an awesome instrument if you know it. I have been using it for several years, and there were a few game projects that never reached the state of a playable demo.

I'm happy to hear that you know and used the language. Well, I bet, functional programming affects your C++ code too, there are just some good practices that are applicable anywhere.  :) 
Title: Re: Wanderers / open world RL
Post by: koiwai 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:

(http://i.imgur.com/OOQMkbY.png)

A few more examples (for other specifications):

(http://i.imgur.com/4Rf4tnnm.png) (http://i.imgur.com/4Rf4tnn.png) (http://i.imgur.com/BMUqGrOm.png) (http://i.imgur.com/BMUqGrO.png)
(http://i.imgur.com/oYawBtym.png) (http://i.imgur.com/oYawBty.png) (http://i.imgur.com/GkZ7i8Dm.png) (http://i.imgur.com/GkZ7i8D.png)

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

(http://i.imgur.com/gsHqg7qm.png) (http://i.imgur.com/gsHqg7q.png) (http://i.imgur.com/IohOrhTm.png) (http://i.imgur.com/IohOrhT.png)

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:

(http://i.imgur.com/sIY0faa.png)

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

(http://i.imgur.com/EEzD14G.png)

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.
(http://i.imgur.com/SdSI1Z8.png)

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.
Title: Re: Wanderers / open world RL
Post by: Techbear on August 21, 2014, 10:03:28 PM
this looks really good!  You've clearly done a lot of hard work.
Title: Re: Wanderers / open world RL
Post by: koiwai 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

(http://i.imgur.com/PZUBz0um.png) (http://i.imgur.com/PZUBz0u.png)

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

(a) Hidden:             (b) Visible:
(http://i.imgur.com/L1PVQkQm.png) (http://i.imgur.com/L1PVQkQ.png)  (http://i.imgur.com/PZUBz0um.png) (http://i.imgur.com/PZUBz0u.png)

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 (https://support.google.com/youtube/answer/1722171?hl=en). I plan a config file, where these and other parameters can be adjusted.

4. An alternative tileset variant inspired by ADOM.

(http://i.imgur.com/bzG5GE7m.png) (http://i.imgur.com/bzG5GE7.png)  (http://i.imgur.com/SXTMGSom.png) (http://i.imgur.com/SXTMGSo.png)

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:
(http://i.imgur.com/706No4qm.png) (http://i.imgur.com/706No4q.png)  (http://i.imgur.com/oHV112Bm.png) (http://i.imgur.com/oHV112B.png)

The fog can be animated, Youtube video:

(http://i.imgur.com/ZLlDuAW.png) (http://youtu.be/TUACGYURLUI)

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 :)
Title: Re: Wanderers / open world RL
Post by: koiwai 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.

(http://i.imgur.com/gm0e3Sv.png) (http://i.imgur.com/t4jiXQA.png)
Title: Re: Wanderers / open world RL
Post by: koiwai 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 (https://encrypted.google.com/search?tbm=isch&q=medieval%20cap&tbs=imgo:1)  ;D

(http://i.imgur.com/OdK1AdV.png) (http://i.imgur.com/s3G7xze.png)


Title: Re: Wanderers / open world RL
Post by: koiwai 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

(http://i.imgur.com/MjwGhlD.png) (http://i.imgur.com/c7chiWd.png)
Title: Re: Wanderers / open world RL
Post by: koiwai on September 25, 2014, 11:44:07 PM

I'm trying a new cave dungeon style:

(http://i.imgur.com/rMBPVfl.gif)

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.
Title: Re: Wanderers / open world RL
Post by: jocke the beast on September 26, 2014, 07:17:43 PM
Looks great!
Title: Re: Wanderers / open world RL
Post by: koiwai 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.

(http://i.imgur.com/Ld5Z2oE.png)
Title: Re: Wanderers / open world RL
Post by: koiwai 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.

(http://i.imgur.com/R77XAlC.png)  (http://i.imgur.com/QJYquQL.png)

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:

(http://i.imgur.com/bJs8Pel.png) (http://youtu.be/BQ7hpp6UCl8)

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.
Title: Re: Wanderers / open world RL
Post by: Ferret 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
Title: Re: Wanderers / open world RL
Post by: koiwai 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 (https://github.com/a-nikolaev/wanderers#tips-for-new-players).
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 (https://github.com/a-nikolaev/wanderers#command-line)) - 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.
Title: Re: Wanderers / open world RL
Post by: Ferret 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
Title: Re: Wanderers / open world RL
Post by: koiwai 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 )

(http://i.imgur.com/nSInOCr.png)

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.
Title: Re: Wanderers / open world RL
Post by: Zireael 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.
Title: Re: Wanderers / open world RL
Post by: reaver on November 17, 2014, 11:47:59 AM
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.

How do you generate the names now?
Title: Re: Wanderers / open world RL
Post by: koiwai on January 04, 2015, 10:22:43 PM
How do you generate the names now?
Sorry for replying late. I will give a very broad picture of the generation procedure:

To generate a name, each language has a set of 15-30 syllables, an evaluation function to evaluate the words, and the transition matrix with the transition probabilities from one syllable to the next (i.e. Markov chain). We generate 5-10 random string of 2-4 syllables and choose the one with the best evaluation.

How the evaluation function works: It scans through the string and evaluates every pair and/or triple of characters and gives the score.   

Each language has its own evaluation functions. The syllables themselves are generated individually for each language with a genetic algorithm: They continuously mutate and exchange letters, trying to optimize for 1) better evaluation score of the generated words 2) more unique syllables, 3) syllables that are not too long and not too short.

This is the general idea.


Update:

 (http://i.imgur.com/2qY7HPT.png)  (http://i.imgur.com/fl4om8Q.png)

1. New map ('M') visualization mode, see the screenshot above. You can move the map cursor with the arrow keys and < >.

2. New debugging command line interface ('*'), with a few simple commands: 'heal', 'item', and 'blink'. Of course, only for testing.
Title: Re: Wanderers / open world RL
Post by: koiwai on January 10, 2015, 06:11:23 AM

This is a big update.

1. Added merchants, who are basically travelling shopkeepers. This is a big deal, because not only the player, but all player-like NPCs (actors) can barter with them selling useless loot and buying better equipment.

Merchants are not stationary and can travel like any other NPC, however, when possible they prefer hanging around at markets:

(http://i.imgur.com/f9RlQtj.png)

The guys with a dark strap/cloak on their right shoulder are the merchants. This update is quite a big improvement actually, and a lot of new code was added.

2. Added Barter interface and improved visuals for the Inventory. To enter the barter mode, come close to a merchant, press v, choose the tile with the merchant, and press v  or Enter again. The barter mode works the same way as the Inventory mode.

To confirm your purchase, use the Enter key.

(http://i.imgur.com/nVO8aMH.png) (http://i.imgur.com/3WNxiE6.png)

3. Fixed a weird bug: Previously, one faction (the orange nation) had more actor NPCs that any other faction. It turns out, the problem was in the way I sample from a discrete distribution (it turns out, it was caused by <= instead of <, but the bug was vary hard to pinpoint and it had a huge effect on the game simulation..)

As a result, non-human factions (the Undeads) start getting a lot more actor NPCs (including merchants), so the underground dungeons are probably a nasty place now. I did not test the the dungeons much this time, but that's what I expect.

4. Unfortunately, I started observing an unpleasant bug: The player, when walking from one region to the other, if collided with another unit, may get stuck in the terrain. It seems, I have to pay for the complex walking mechanics.  ;D

I think, a new Windows build is coming soon! Linux users, get the game from github.
Title: Re: Wanderers / open world RL
Post by: koiwai on January 18, 2015, 10:16:34 PM

More complex overworld:

(http://i.imgur.com/SWRG9ws.png)


Disjoint pieces are connected by underground tunnels:

(http://i.imgur.com/IguD7U8.png)
Title: Re: Wanderers / open world RL
Post by: koiwai on January 21, 2015, 02:48:52 AM
Hey guys, a new Windows build is ready.

>>> Download for Windows:
Download the latest Windows build (January, 20, 2015) (https://dl.dropboxusercontent.com/u/70985178/wanderers-2015-01-20.zip).

How to play: README at Github (https://github.com/a-nikolaev/wanderers#command-line).

>>> Download for Linux (and probably OSX):
Get the source code from Github (https://github.com/a-nikolaev/wanderers). Compilation is straightforward. install the latest ocaml package for your system. Make sure you have your SDL1.2 and OpenGL libraries installed. Then just execute make.

How to play: README at Github (https://github.com/a-nikolaev/wanderers#command-line)

Also, the first post is updated.
Title: Re: Wanderers / open world RL
Post by: Ferret on January 22, 2015, 05:39:57 AM
Had some time to check out the Windows build tonight. :D Going to start with my general impressions/feedback, then detail out a bit more on the two runs I played. :) And no mistaken attempts to bump attack this time. :D

* The merchants are definitely a fun add and (assuming you don't get a start like my 2nd game where the entire world is against you :D ) it's definitely good to have another shot at grabbing some equipment. I feel like this game will get exponentially better with each new 'piece' like this that you add, since the number of possible interactions grows and grows (in sort of a Dwarf Fortress sort of way. :D )

* Magic was also new to me too, though only my first character was able to really make use of it (he had a much better magic score than the prisoner.) It was good to feel like a low CON character wasn't just "weak" anymore, and it was neat to be able to see the purple mana fonts to gather up (and more to the point, interesting to see that the non-magical "prisoner" barely saw any!) Can't wait until there are some spells to use :D

* The maps seem to do a good job particularly at the high level. The terrain feels "correct"... mountainy/wastes on the outskirts of the map, forests towards but not up to the edges usually, and central plain areas where most of the people live. I feel like the progression of biomes as I explore is coherent and makes sense. This sort of thing is important for helping players feel really in the world, which is great to me because this game encourages me to do a little role-playing (see my second game), and more in the world the game can make me feel, the more fun that is. :)

* My second game really got my attention and was quite fun, even though it ended pretty horribly for my character. :) True, this was a combination of the random factors present in the game + my own way of interpreting them, but as I sort of said in the first bullet point too, I think this sort of filling in the blanks by players will become more and more likely to happen as more elements are added to interact with each other and it becomes easier for players to find ways to fill in the gaps. Anyway, the second game breaks out what happened more, so I'll leave the rest of this for there. :)


Now, the two game reports. :D


First run (Seed: xd):

Started off with a mediumish (is 69 mediumish?) CON build that had 1 gold to his name. His part of the world was very, very much at peace. Lots of peaceful tribes and farm animals. Wandering about, he managed to come across a sling and another gold piece... but then he found this:

(http://i.imgur.com/wQa2Zl3.png) (http://i.imgur.com/wQa2Zl3.png)

A bazaar! Certainly home to many merchants! I checked the wares of several of them, but for the most part they had a gold penny or two and a kitchen knife to their names. I figured my sling was better and went wandering off without buying anything.

Heading deeper into the wilderness, I came across my first hostile: a skeleton! I quickly learned my sling was not up to the task (he didn't seem too impressed by the projectiles, and he was kind of ouchy in melee), but happened to notice a small knife laying nearby. I went to pick it up... and to my surprise, the skeleton wandered away. Why did he do that? After a quick rest, I found out: a goblin had appeared and the two were fightng it out to the death. I can't blame the skeleton for deciding the goblin was a bigger threat. The sling vs. bony claw fight had really gone against me... and besides, the goblin actually killed the skeleton. :D I managed to finish off the goblin and laid claim to their combined loot of a penny and some sort of helmet or hat (probably the skeleton's, and probably explains why I had so much trouble hurting him with rocks? Not entirely clear how DEF works. :D)

There was a dungeon entrance nearby, so I went exploring. The first floor went well, I was able to slay several skeletons, quickly laying hands on an axe (a significant upgrade on my knife). The second floor also started well, but... alas, I ran into a much stronger skeleton down there who ended me quite quickly.

First run specific thoughts:
* It's pretty neat to see the various tribes going about their business. :) Things like seeing them running around with horses and cows, moving in and out of buildings, gathering at bazaars, etc. do much to add weight and a "real" feeling to the world.
* I'm curious: Was the bazaar features (the tables full of fruit in a square arrangement) placed and caused merchants to spawn, or did it "grow" from the large number of merchants in the area?
* It was a little hard to keep track of which merchants I had spoken to and which I hadn't. Tempting to say "mark ones you've spoken to", but what if they get new wares? Maybe instead do something like an icon for 'inventory changed since last player interaction'? But, if a group of them tend to do a lot of swapping, that may not work either.
* Once I found my sling, I really wanted to find something to bonk with it, but this particular world (seed: xd) was very peaceful, it took a fair bit of wandering to come across foes. True, I could have picked a fight... but I didn't feel like I was playing an "evil" character and didn't want to attack something unprovoked. Have you considered a "bard" type NPC that could provide general information about the world and maybe guide you towards particular types of elements? Granted, he IS a bard... the information could be vague enough (and become more vague the further from the 'source' he is) where you still have a legitimate adventure finding the place and event he's talking about. Since the game is very emergent, this could be tricky to code up though... but that's where being vague comes in again handy again. I kinda of see the bard making comments ike "there is heavy fighting among the western tribes" if there are a large number of NPCs fighting somewhere to the west, or "evil stalks the southern forest" (a forest cell south of you has some skeletons / goblins / etc)


Second run ("Prisoner", Seed: qt):

Well this is very different. Second guy started off in the middle of a wilderness, a few wolves in sight, absolutely no equipment! High CNS, no MGC... almost feels like some sort of escaped prisoner? Tried running away from the wolves, only to find more wolves and some skeletons! Dodged most of those, but got chased down by a wolf I was forced to fight unarmed. That... barely... worked. After a long rest to recuperate, the "prisoner" decided to continue looking for a safe spot... or a weapon.

Some humanoids were spotted shortly after, but these proved to be hostile too.. perhaps the ones who exiled him to the wilderness? Not willing to fight 2 v 1 unarmed, the prisoner had no choice but to dive back into the wilderness... and right back into more skeletons and wolves. No easy breaks here! This turned out to be even worse than the humanoids, so the prisoner circled back, made a mad dash through several types of different looking humanoids (all of whom hated him on sight... what on earth did the prisoner do anyway?!) before finally losing the whole lot of them in a northern mountain range where he rested.

A random, also unarmed, traveler decided to try being a hero, but the prisoner managed to win this fight easily. And yet to what purpose? He was still unarmed, and in the mountains.  He searched the mountains thoroughly, but found no weapons, only a few other would-be-hero travelers. Eventually, using the mountains as a safe base of operations and a place to retreat to, he began to pick off those who wandered alone too far from the villages, hoping to find a weapon. Unfortunately, he did not find a weapon, instead he found trouble:

(http://i.imgur.com/hcKbGKl.png) (http://i.imgur.com/hcKbGKl.png)

Yes, all of those are hostile, and our prisoner is still unarmed. Nothing to do but run for it...alas, this ended up turning badly after an archer (probably an actual guard or something as opposed to one of the many peasants?) herded me into a bad, bad spot:

(http://i.imgur.com/kSatGfR.png) (http://i.imgur.com/kSatGfR.png)

Death followed one turn later.

Second run specific thoughts:
* It was awesome how the randomly generated map, character, and factions were (with some help from player imagination) come to together to suggest a story for the blank slate wanderer. It really felt like he was some sort of prisoner on the run, trying desperately to just stay alive. Every hand turned against him: no friends or resources. And, probably like usually happens in that situation, it didn't turn out so well. :)
* This run also highlights why it's awesome to be able to place specific seeds. :) I will probably try seed: qt again. :D If the prisoner had found a good set of equipment, he might have showed a different side to the angry mob that hounded him to his death. }:>


This is coming along very nicely. :D I look forward to seeing what sort of stories the game can suggest as more and more features come online. :)
Title: Re: Wanderers / open world RL
Post by: koiwai on January 22, 2015, 11:38:08 AM
Hi Ferret, thanks a lot! This is by far the best in-depth feedback I've received on the game!

I think, that's awesome that certain roleplaying came naturally. Particularly because the game does not really have any story, lore, or custom character creation ;D I was always a big fond of computer RPG games, especially those that could create immersive experience, Fallout and Neverwinter Nights were my favorites ::) What I want to say is that many games had a great looking facade, which was hopelessly dead and static, and that was a major turn off. So, making a living and breathing world is probably my dearest goal in all game programming. Haha, of course, it's not a simple task to say the least.

Adding more social interactions will be a definite improvement. Randomly wandering NPCs can be entertaining for some time, of course, but more complex behavior is definitely desirable. I am planning to have rumors and other information spreading. So you can ask a n NPC if they know some news, or maybe if they know something about a particular NPC, or other topics like wars, dungeons, good shops, craftsmen, etc. Bards will work nicely, they may really add depth and character to the game..

DEF = the percentage chance that an attacking blow will be blocked. However, when the attack is blocked the player still absorbs full momentum of the blow.

Also, the recommendation to have CONS > 65 with the introduction of magic became a bit obsolete. However, it's still true that if the Constitution is < 60 you better rely on ranged weapons and magic. With 60-70 you can do both ranged/magic and melee. Even heavier guys are primarily melee fighters (however, they are still good at using bows: their shooting rate is a bit low due to poor Reaction, but they are strong and deal good damage nevertheless).

By the way, there is one very rare type of character: those who are have very high CONS (e.g. CONS > 120). The thing is that the magical abilities increase for those overweight dudes, and so it's possible to make a fat slow mage ) Well, such guys are extremely unlikely, I don't even know a seed for such a character, but they are possible.

One useful hint. It did not make it to the README somehow, but now I see that it's important. There is an indincation that an NPC has a weapon (or money). You probably have noticed yellow, orange, and red dots near some NPCs. Those dots tell you an estimated strength of a mob (it's a very rough approximation based on the total price of the items the mob has, but nevertheless it's quite accurate and very useful):
- The mobs with two yellow dots are a somewhat weaker than you although still can be dangerous.
- The mobs with three orange dots are comparable to you and dangerous.
- The mobs with four red dots are stronger than you and you should be very careful.
So, you may want to fight only with those enemies who have those markings, which means that they carry weapons.

About the bazaar! Hahahah, I like hordes of merchants. Although seeing 0, 1, or 2 of them is more common ;D The fruits, meat and other stuff for sale is completely fake and is not related to the number of merchants in the area, unfortunately). The merchants themselves are normal actor NPCs that are created from normal civilians. So, they they don't spawn specifically at the market. But when they are wandering around, they prefer highly populated freindly areas, and once they find a market location, they prefer to stay there for very long time (if not forever, don't remember this partular detail). I kind of like that you came across such a big group.  I should say that merchants try to offer you only those objects that you will be able to buy, and they try to hide the total amount of money they have (so you saw them offering 1 coin, because the price of your sling was 1 coin, however the metchants might have 50-100 coins). The merchants get new weapons from other NPCs (whose guys with shield like badges). So, you can come later and they may have new items, although it's unlikely to find very high quality weapons there. Dungeons are the best place to get new equipment.

I'd say that your first two runs were quite successful. You are right that the sing is very weak. I'd describe it as an auxiliary weapon if the enemy is much stronger than you, you may want to shoot from a distance, run away and shoot again. Alternatively, shoot a few times and go melee, it still gives you little advantage, which does matter in the early game. Going deeper into the dungeons is a sure way to get much better weapons and armor, of course. A more long term goal would be to find a new inhabited valley (it's possible to get there through some of the underground tunnels). Even more advanced goal is to find very deep dungeons, the 19th level is the deepest in the current vesion (I've never been below 14th level deep, and it was a couple of months ago), so I'm not even sure what is going on there really ;D

It is also good that you could got this "prisoner" scenario. Such situation happens when player's faction gets completely wiped out at the preliminary world simulation stage. It's a tough scenario, it feels kind of sad, you may start in the wilderness (and the woods may be pretty nasty), or you may spawn in a hostile village. In any case, it's quite a challenge to start in such conditions. However, it's not a hopeless situation! Even though your native faction have not survived, there may be a friendly faction somewhere on the map.

I don't feel like I want make this game advertised to a wide audience at this stage of the development, so I don't have many sources of feedback at the moment (Roguetemple and TIGSource forums + a few friends), so getting reports like this a big deal for me. Thanks a lot! The suggestions and comments are very helpful!
Title: Re: Wanderers / open world RL
Post by: Madmachine on March 05, 2015, 02:27:55 AM
Any reason why there's no diagonal movement?
Title: Re: Wanderers / open world RL
Post by: Xecutor on March 10, 2015, 05:04:09 AM
Tried to run it on mac os x. Installed ocaml.
But when running make I've got this:
Code: [Select]
ocamlopt \
  \
  -I lib/ -I src/      -ccopt -Llib/ -ccopt -Lsrc/     graphics.cmxa unix.cmxa str.cmxa bigarray.cmxa  lib/sdl_stub.o lib/glcaml_stub.o -cclib -lSDL  -o wanderers \
lib/sdl.cmx lib/glcaml.cmx src/prob.cmx src/base.cmx src/fencing.cmx src/item.cmx src/inv.cmx src/common.cmx src/global.cmx src/trade.cmx src/org.cmx src/simtrade.cmx src/simorg.cmx src/carvebase.cmx src/carve.cmx src/genreg.cmx src/globalmove.cmx src/genmap.cmx src/vision.cmx src/politics.cmx src/top.cmx src/simobj.cmx src/console.cmx src/barter.cmx src/state.cmx src/sim.cmx src/grafx.cmx src/view.cmx src/main.cmx
File "_none_", line 1:
Error: Cannot find file graphics.cmxa
Title: Re: Wanderers / open world RL
Post by: koiwai on March 14, 2015, 04:29:49 AM
Tried to run it on mac os x. Installed ocaml.
But when running make I've got this:
Code: [Select]
ocamlopt \
  \
  -I lib/ -I src/      -ccopt -Llib/ -ccopt -Lsrc/     graphics.cmxa unix.cmxa str.cmxa bigarray.cmxa  lib/sdl_stub.o lib/glcaml_stub.o -cclib -lSDL  -o wanderers \
lib/sdl.cmx lib/glcaml.cmx src/prob.cmx src/base.cmx src/fencing.cmx src/item.cmx src/inv.cmx src/common.cmx src/global.cmx src/trade.cmx src/org.cmx src/simtrade.cmx src/simorg.cmx src/carvebase.cmx src/carve.cmx src/genreg.cmx src/globalmove.cmx src/genmap.cmx src/vision.cmx src/politics.cmx src/top.cmx src/simobj.cmx src/console.cmx src/barter.cmx src/state.cmx src/sim.cmx src/grafx.cmx src/view.cmx src/main.cmx
File "_none_", line 1:
Error: Cannot find file graphics.cmxa

This is interesting. "graphics.cmxa" is a part of the OCaml itself, not my code. Maybe the compiler cannot find the path to the standard library?

To test if "graphics.cmxa" can be found, there is a short program: http://sprunge.us/OaJj
save the file as "test.ml" and compile it as follows:
Code: [Select]
ocamlopt graphics.cmxa test.ml
In any case, thanks for trying the game.

Any reason why there's no diagonal movement?
Does it need 8 directions?  :)
Title: Re: Wanderers / open world RL
Post by: Xecutor on March 19, 2015, 04:14:48 AM

This is interesting. "graphics.cmxa" is a part of the OCaml itself, not my code. Maybe the compiler cannot find the path to the standard library?

To test if "graphics.cmxa" can be found, there is a short program: http://sprunge.us/OaJj
save the file as "test.ml" and compile it as follows:
Code: [Select]
ocamlopt graphics.cmxa test.ml
In any case, thanks for trying the game.


Code: [Select]
bash-3.2$ ocamlopt  graphics.cmxa test.ml
File "test.ml", line 2, characters 5-13:
Error: Unbound module Graphics

I googled a little and it looks like default implementation of graphics on OS X requires ... (drumroll) ... X11.
That's... disappointing.
Later on I'll try to find if there is native implementation.

I'm very interested in continuous yet turn based mechanics. I was thinking a lot about it :)
Title: Re: Wanderers / open world RL
Post by: Aleksanderus on October 25, 2015, 06:01:16 PM
Seems interesting but is the project alive?
PTW