Khazad a Dwarf Fortress like game, seeks developers

This thread is to both advertise and receive feedback on my open-source
(GPLv3) game under development called Khazad. It is 3D, written in Java
and uses the JMonkey engine and it’s associated Nifty GUI system.

Code is available at GitHub - ImpalerWrG/Khazad: A Strategy game based on Dwarf Fortress

A development/suggestion forum is at www.khazad.net

Currently
the engine is still under development and the game is not playable, new
developers are desired as well as initial testers, game-play ideas and
goals are also welcome.

ABOUT:

If this game were a song it would be ♪ Diggy Diggy Hole - YouTube
This will be a game that revels in the glory of the Dwarves, their rise
and fall and re-conquest of their homelands. The flavor will be
somewhere between Tolkienesque and Warhammer, visually it will resemble a
slightly higher polygon Minecraft or Mythruna.

Khazad aims to
become the preeminent open-source Dwarf Fortress like game by leveraging
the talents and skills of the genres small but highly skilled fan base.
In addition to DF it draw inspiration from ‘A game of Dwarves’, ‘Craft
the World’, ‘Gnomoria’, ‘Banished’, ‘The Sims’, ‘The Settlers’, ‘Zeus’,
‘Prison Architect’, ‘Civilization’, '‘Evil Genius’ and naturally
‘Dungeon Keeper’.

A firm technical foundation is being built first, so far this includes

A
flexible map structure structure that can be expanded in any direction
at run-time and which tracks volumes as well as surfaces.
Highly
optimized and multithreaded path-finding which renders everything else
in the genre obsolete, unit counts of ~1000 should be possible with game
speeds that will have the dwarves moving too fast to even be seen.
3D
rendering of terrain, rotating camera and visual slicing of the map to
overcome confusion inherent in isometric or 2D perspectives.
Efficient
object update queue, rather then iterating every game object every loop
all objects are awoken at a dynamic determined future time.

Still under construction…

A
new Job management system which groups individual tasks into logical
group and assigns workers the same task type repeatedly to reduced
wasted travel time.
Demand-pull basied crafting and stockpile
management also know as ‘Kanban’, consumption triggers production
without micromanagement

GAMEPLAY GOALS

Khazad aims to be Deep, Challenging and Accessible.

Depth
comes from a complex and emergent interaction between the choices the
player is presented with. Choices need to be impact-full to the game and
non-trivial for the player to find the best solution. The classic
example is Chess, the player has a modest set of choices, but they are
very impact-full and very difficult to choose between. In creating a
settlement the player should be faced with numerous choices of what and
in what order to develop and how to manage conflicting internal interest
groups. Their should be no EASY choices or choices without a downside.
All elements within the game world which are presented and uniquely
named will be differentiated in some game play manor, mere ‘cosmetic’
complexity will be avoided.

Khazad aims to be Challenging, it has
become the norm to think of the DF-like genre as a ‘sandbox’ in which
the player (once familiar with the game) builds a settlement that is
very resilient and will generally resist all external abuse given even a
modicum of effort by the player. In contrast Khazad will be intended as
a challenge for the player at all times, a game in which survival of
the settlement is always in doubt and being knocked-back several stages
is common occurrence. Should the player build their settlement to a
mighty city they will face the challenges of keeping and maintaining a
kingdom built on fragil alliances, diplomacy and the sword.

Lastly
Accessible, the deficiencies of Dwarf Fortress UI have already been
mostly corrected in games such as Gnomoria, Khazad aims to have a
comparable UI built using Nifty. 3D rendering adds additional
accessibility as was seen in “A game of Dwarves” and Khazad will feature
nearly identical earth X-ray like rendering of underground tunnels.

KEY CONCEPTS

Dwarf
attributes, in keeping with an RPG theme all creatures have a basic set
of attributes, but keeping with the detail orientation of the genre the
attribute set is larger then the 6 in D&D, a set of 14 attributes
will be used, 7 Physically oriented (Strength, Flexibility, Dexterity,
Vitality, Reflexes, Endurance, Speed) and 7 Mental oriented (Logic,
Perception, Charisma, Memory, Judgement, Willpower, Intuition). A roll
of 2D4 is the normal range for each attribute. Each attribute will
directly and transparently effect a different aspect of a creatures
behavior and performance in certain jobs and skills.

Skills,
rather then the genre standard of each Dwarf having a skill level in
each possible skill Khazad will combine the class-tree system of ‘Evil
Genius’ and ‘A game of Dwarves’ with the classes of Dwarf Fortress into a
large tree of 3 tiers with an initial first tier division into 7 core
classes (Worshiper, Thinker, Fighter, Crafter, Builder, Laborer,
Gatherer), 3rd tier divisions may yield upwards of 100-200 highly
specialized classes, but the bulk of game play will be done with the
core classes and their 2nd tier divisions. Low level classes act as
generalists so a settlement can be effectively run with just 7 Dwarves.
Classic D&D character classes will be present to fill a variety of
roles and multi-classing might also be possible.

Off Map
activity, rather then having the players settlement sits passively and
receives attacks, trade and migrants from an outside world the player in
Khazad will send OUT just as many interactions as they receive. These
Expeditions consist of hand-picked dwarves and stockpiled materials that
are directed to a particular world map location with a specific goal,
all of which have an effect on the outcome. The Expeditions are run and
resolved entirely in the background without players being able to
control or see the results until the expedition returns (if it returns).
Significant political activity, wars, alliances and the like will play
out with the player bringing the whole of the Dwarven race under their
kingship as a possible outcome.

6 Likes

The new release is ready, you can download a Windows, Mac or Linux version at

Khazad v0.2.2 Release Notes

New Features

Terrain is now composed of multiple types of material which have procedurally generated textures and colors defined in XML

Games can be saved and Loaded with the save game file placed in the OS specific default directory (My Games/Khazad on Windows)

Terrain
is now either sunlit or dark making underground tunnels noticeably
different, all sunlit terrain can be toggle hidden with L, and all
terrain with T

A Balrog has been added to the map, if you delve too deeply it will be your doom

Pathfinding is now properly updated as the map is modified from digging, path connections can be viewed with P

WASD keys will now pan the camera

Bug Fixes

Digging of the ground and tunnels should no longer freeze dwarves

No holes in terrain appearing at start of game, though they may appear with digging

1 Like

I tried the Linux release and got:
Could not find file XML\MasterFileList.xmlassets\XML\MasterFileList.xml (No such file or directory)
TEXTURE_DEFAULT is not in GlobalLabelMap

The game doesn’t start.

Yes the linux release is bugged, I am unable to test it as we have no linux developers yet s I will simply have to remove it for now. I suspect that we have a file-path separator issue here. I’ll try to have it corrected for the next release.

When it comes to finding other developers, what kind of contribution exactly are you looking for?

For programming we could use just about any Java programmer, as were doing systems all over the place, one fellow is working on map generation, another is doing a lot of Nifty UI work right now. I am the only one with much familiarity with low level graphics and I’d love to get some input from someone who knows how to squeeze high performance out of JME. Systems like Job management, Item tracking, social interactions, professions all need to be created largely from scratch.

And naturally we could kill for some Artists 2D, 3D you name it, but I doubt they are hanging out here.

Bumping because I’m developing again after a summer gardening hiatus, I’ve made some major improvements to rendering and games logic speed. I run a test bed simulation of 100 units walking continually between randomly selected points, every one of these travel legs generates a path-finding attempt which goes to a multi-threaded path system. The map is 320x320 and units move 1 tile per simulated second and I can run at 800-1000 simulated seconds per real second on my fairly old 2 core processor. My ultimate goal is 4000x speed with 1000 units on modern equipment with 4-8 cores.

Hey this project sounds really cool! I’m not the most proficient of programmers( I sort of just brutally force things into working for me :slight_smile: ), but i would be happy to do some art/asset stuff for you, that is if your still looking for that.

Certainly, I need art even MORE then I need programming (having no art skills myself), I’ll send you my Skype by PM where I have a chat session of fans/testers/developers and we can discuss how to proceed. Anyone else interested should post here or PM me directly for the same.

I have set up a forum for discussion and contributions to the project at www.khazad.net
Everyone interested in following development should register and post their user name (I’ll need to approve registration). I plan to post all my development diaries and updates on this new forum though I may also drop a post here when I have a major release.

Good luck with the new forum! Be forewarned though, building up a community from scratch is a lot of work. Please do continue posting as many updates as you’d like on here :smile:

Major improvement to my pathing finding algorithm which tripled the performance (just a factor of 8 from the ultimate goal now). To my knowledge this is a new technique too but it bears a resemblance to a concept called a weak-heap.

I had an A* implementation using standard java.util.priorityqueue for fringe and java.util.hashset for visited nodes. I added a custom doubleylinked list which sorts nodes via the same comparable interface the queue uses, new fringe nodes are pushed to the front of this list and the front is popped each cycle. After fringe expansion the list is trimmed down to just 1 elements taking from the bottom and inserting into the heap which is otherwise not popped from unless the list is empty.

This has reduced heap reorganization from adding to and polling from the priorityqueue from nearly half of CPU to a trivial amount because the flushed list contents are already sorted and 1 less pop and 1 less insert happens to the heap in each node expansion cycle in which the expanded nodes contains the new best heuristic result. CPU time is now dominated by linked list insertions but these are much faster due to the list size staying so small.

1 Like

Here is a screenshot of the new map generation which is perlin-noise based

This map is 320x320 (only about of quarter of which is in this shot) and has elevation range of around 64, I test with 300 pawns pathing between random locations and can reach 2000x speed, a factor of 6.6 from the goal, folks with quad cores get a linear increase in performance and clock in at 4000x speed and are just a factor of 3.3 from the goal performance.

2 Likes

I’ll offer testing-hands in linux and maybe some debugging if needed. :wink: