-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement wonky walls like in DK2 #108
Comments
Terrain has wibble & lean values. Both vertical & horizontal which probably contribute on how much wonkyness is applied. Stone doesn't have much, but regular dirt is all over the place. |
I used to think that this article was referenced somewhere on this repository, but I can't find it, @(tonihele) also commented on it. As did Robin Green (Ex-Bullfrog). Knowing when to split or flip. https://simonschreibt.de/gat/dungeon-keeper-2-walls/ Also interesting: http://www.cs.uu.nl/docs/vakken/gis/terrain.pdf, points 5.1 and 5.2 detail how one could model terrain using Delaunay and keep on injecting vertices and flipping of illegal edges until a set of error-margins are satisfied. Here I thought maybe one could see the "top" of the undug ground as 1 in height and the "floor" where the creatures run on and where you build on as height 0. I would assume that assigning an "error" margin of 0.1 to the vertices that should be lowered (thus go from 1 (top) to 0(bottom)) and as long as the error margin is not satisfied, repeat the process with the worst offender and make sure the triangulation stays Delaunay. I also think maybe by using a little random offset to these error-margins x and z values., the wibble and lean might be used to randomize the shapes. Delaunay Triangulation Where To Start: Fast Delaunay in Java: https://www.duo.uio.no/bitstream/handle/10852/43535/delaunay_alg_performance.pdf?sequence=1 |
Here is also a little something. Shader based wonkyness: |
I also think they just used some simple vertex manipulations to create the effect. |
Physics-wise I'm also routing for non shader based solution... |
Not sure what you mean by physics, but just a reminder that they used perfect cube collision boxes. (collisions do not match the warping effect) Unless your desire is to be even more accurate and better than DK2. |
Good catch. Didn't actually know that, but it makes sense. DK 2 doesn't really have physics in a sense. Everything is quite simple, such as shadows. But we were planning a bit to have Bullet physics. It will also make things maybe easier to implement even. If it totally breaks up the game, then not. But worth trying. |
Played around a bit with this warping effect: |
I think we should use Perlin noise (or another pseudorandom generator) because in the same vertices of adjacent block must have equal coordinatase. In editor tiles have attributes something like the value of entropy of pseudorandom generator |
That's easy. The problem is the vertex displacement will affect the normals and tangents. |
I just got reminded that I did implement something similar for a bloxel game engine written with jME. Though, I did it when creating the mesh, it might be getter to dispklace the grid in the shader. |
PoC with a slight offset: https://github.com/Trass3r/OpenKeeper/commits/wobblywalls |
Already makes a huge difference, doesn't look so dull |
Yeah indeed. |
The default shaders in jME are just that, they are very generic and support all features we don't really use. I would imagine that in the future we would just have bunch of custom light weight shaders for everything to provide that cool Dungeon Keeper 2 feeling. Hopefully with a modern twist of course. |
Yeah I just thought the same, sooner or later you'll have fully custom shaders anyway. |
Updated thoughts on a shader-based solution vs computing the map mesh on the CPU:
|
It's just a visual thing, but this would definitely make it look closer to the original.
This was actually achieved with Incremental Delaunay Triangulation.
Readings:
The text was updated successfully, but these errors were encountered: