interrupt / delverengine Goto Github PK
View Code? Open in Web Editor NEWDelver game engine and editor
License: zlib License
Delver game engine and editor
License: zlib License
I'm currently setting up this project and thought it may be useful for future users to document my setup process. I'm using MacOS and Visual Studio Code.
brew cask install homebrew/cask-versions/java8
brew install [email protected]
delverengine
folder in Codesh build.sh
to buildYou can now run Delver by navigating to the DungeoneerDesktop/ directory and running gradle run
With the new JSON schemas for configuration files it would be nice to be able to actually use them. Currently (as .dat
is not a recognized default JSON format) one needs to set JSON as language in the IDE of choice for each configuration file.
It would be easier when these configuration files would be standardized using the .json
file extension, so that the schemas can be used without any hassle.
Probably a backwards compatibility step needs to be addressed here (for loading old .dat
formats).
In addition, is there a plan to roll out the schemas to modders (meaning to include them in the base game)? Because schemas (as far as I know) need to be referenced locally by a relative path. And currently the schemas reside in the top-level project folder., which is not part of the Steam build?!
Current state of pushable entites after fixing the flipped axes.
Currently the Entity
class has a pushable
field and a very rudimentary implementation. Last time I looked at it the axes of the push were incorrect, and if corrected there was considerable stopping and starting of player movement while pushing.
Actor
objects can smoothly push an entity that is marked as pushable.Pulling out the TileSelection
logic into it's own class was a first step in a direction of supporting arbitrary tile selections. The idea here is you can shift + left click on tiles and build a selection that works like any other. Work will need to be done around how to render a set of tile from the tile selection, adding tiles to a tile selection, and cleaning up any old logic that assumes it's a rect.
Linear alpha gradient applied across center texture. Left actual. Right expected
The emission calculation in the main shader is correct because it is multiplying the already pre-multiplied color value by the inverse alpha which results in higher values actually getting darker (shown above on the left).
Entering and exiting the play mode camera was regressed with commit e6ac6cc
The camera position should be consistent when switch between the modes.
I haven't tracked down the issue yet, but something in the "Texture atlases can specify a shader by name" change caused many models not to show up (collision boxes are still there) with the retail assets. In the tutorial map, the tombstone in the secret area and the bridge are invisible. In the campsite, it's tents, the well, tombstones, tables, etc. that are invisible.
I reverted that change and they all showed up again. There aren't any warnings in the logs that I see. I'm running on Linux.
When bringing up the inventory screen, the inventory and character buttons initially show but will disappear if interacted with (exception being you able to click on the character button once). The buttons will not reappear when you go back into the inventory screens. This persists until the application is restarted. You may still use the inventory, but there is no way to see your character information after the first time without restarting.
In both the InventoryScreen.java
and CharacterScreen.java
makeContent methods I tried changing the following clear()
calls to clearChildren()
and reset()
. No luck.
outerWindow.clear();
contentTable.clear();
The lines for turning debug on for outerWindow also disappears when the buttons do, even though the contentTable is still shown. The only workaround I have found is to recreate the outerWindow right below that:
outerWindow.clear();
contentTable.clear();
// This fixes it for some reason when even reset won't.
outerWindow = new Table();
Do this for both InventoryScreen.java
and CharacterScreen.java
and things work again.
Player is running into slow areas and there are no cobwebs present.
Player has provided screenshots and their save file.
cobwebs.zip
This is a quick summary of my current working setup of the Delver engine using VS Code on Windows.
Main caveats:
.gitignore
?)launch
config for the debugger to use the correct working directory{
"type": "java",
"name": "Debug (Launch)-EditorStarter<DelvEdit>",
"request": "launch",
"mainClass": "com.interrupt.dungeoneer.EditorStarter",
"projectName": "DelvEdit",
"cwd": "${workspaceFolder}/Dungeoneer/assets" <--- THIS HERE
}
F5
and enjoy DelvEditFor developing on Android, install an appropriate SDK via Android Studio. Enable USB Debugging on your device and add the following launch config to VS Code.
{
"type": "node-terminal",
"name": "Android - DELVER",
"request": "launch",
"command": "gradle DungeoneerAndroid:installDebug DungeoneerAndroid:run"
}
In SectionDefinition.java:34
only the first level template is chosen. Here, it should rather pick one of the existing templates at random.
Previously the player position needed to be manually offset to get the correct position. This was fixed, but the status effect particles were missed in the original change.
A definition is missing in the JSON schemas which causes the entire intellisense to break.
$ref '/definitions/TriggerLike' in '/delverengine/jsonschema/current/Interfaces.schema.json' can not be resolved.
When typing in a text field in the entity property pane, pressing the t key will rotate the entity. This is not desirable.
The property pane should consume most keystrokes. Though exceptions might be made for ctrl + s, etc?
Should be a similar to fix to preventing the camera from moving when scrolling in the entities pane:
When saving a level it can be named arbitrarily.
When loading, it seems to not have saved at all. Also, .png
should not be a valid level format. See #79.
I expect an error message to appear when trying to load something invalid.
As the project ventures into the realms of open-source it encounters many different developers using a variety of operating systems, editors and naming conventions (and {}
bracket style religions).
Therefore, and also to remove any whitespace wars, the project could adopt a global editor configuration and linter/formatter solution.
Solutions:
There might be others, maybe more Java related, please add to the list.
Currently files are saved without an extension when only a name is given. Maybe we should use a default extension .bin
for levels when saving. May be connected to #82.
When using the bare-bones version of the editor some configurations are missing - e.g. for the level generation.
When clicking on e.g. the Dungeon option, the editor hangs in an infinite loop. Following is an exerpt of the output (not sure where it starts).
I would expect that an error message appears and maybe some helpful text about how to create such a config and where to put it.
[DelverGenerator] Making level
[DelverGenerator] Using theme dir generator/Dungeon/
[DelverGenerator] Using theme dir generator/Dungeon/
[Renderer] Set level to render
[Delver] Trying to make map layout.
[Renderer] Set level to render
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not generate a good room!
[DelverGenerator] bound must be positive
[DelverGenerator] Bad level. Trying again
[DelverGenerator] Making level
[DelverGenerator] Using theme dir generator/Dungeon/
[DelverGenerator] Using theme dir generator/Dungeon/
[Renderer] Set level to render
[Delver] Trying to make map layout.
[Delver] Trying to make map layout.
[Delver] Trying to make map layout.
[DelverGenerator] bound must be positive
[DelverGenerator] Bad level. Trying again
[DelverGenerator] Making level
[DelverGenerator] Using theme dir generator/Dungeon/
[DelverGenerator] Using theme dir generator/Dungeon/
[Renderer] Set level to render
[Delver] Trying to make map layout.
[DelverGenerator] bound must be positive
[DelverGenerator] Bad level. Trying again
[DelverGenerator] Making level
[DelverGenerator] Using theme dir generator/Dungeon/
[DelverGenerator] Using theme dir generator/Dungeon/
[Renderer] Set level to render
[Delver] Trying to make map layout.
[Delver] Trying to make map layout.
[Delver] Trying to make map layout.
[Renderer] Set level to render
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not find file in any mods: data/room-builders/dungeon_rooms.dat
[RoomGenerator] Cannot read field "type" because "defaultRoomTheme" is null
[Delver] Could not generate a good room!
[DelverGenerator] bound must be positive
When hovering over a top menu entry and then pressing Enter
the menu does not close.
Attempting to start a game from the jar file crashes.
java -jar DungeoneerDesktop-1.0.jar
[DelverLifeCycle] READY PLAYER ONE
[DelverLevelChangeScreen] Exception: index can't be >= size: 0 >= 0
[DelverGameManager] Fatal error!
java.lang.NullPointerException
at com.interrupt.dungeoneer.GameManager.tick(GameManager.java:113)
at com.interrupt.dungeoneer.screens.GameScreen.render(GameScreen.java:73)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
[DelverGameManager] Fatal error!
java.lang.NullPointerException
at com.interrupt.dungeoneer.gfx.GlRenderer.render(GlRenderer.java:434)
at com.interrupt.dungeoneer.GameManager.render(GameManager.java:126)
at com.interrupt.dungeoneer.screens.GameScreen.render(GameScreen.java:88)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
[Controllers] removed manager for application, 0 managers active
[DelverLifeCycle] Goodbye
First off, thanks for releasing this! I love playing around with these. It inspired me to buy the game (not on sale) and I am really enjoying it so far.
Anyway, when trying to run the Overworld mod the game will crash with the following message.
[DelverGenerator] Using theme dir generator/Outdoor/ [DelverOutdoors] Creating new Chunk [DelverGameManager] Fatal error! java.lang.NullPointerException at com.interrupt.dungeoneer.game.OverworldChunk.SpawnEntity(OverworldChunk.java:646) at com.interrupt.dungeoneer.game.OverworldChunk.SpawnEntities(OverworldChunk.java:677) at com.interrupt.dungeoneer.game.OverworldChunk.Init(OverworldChunk.java:164) at com.interrupt.dungeoneer.game.terrain.threading.OverworldGenerationThread.run(OverworldGenerationThread.java:45) at com.interrupt.dungeoneer.game.OverworldChunk.generateOnThisThread(OverworldChunk.java:88) at com.interrupt.dungeoneer.game.OverworldLevel.makeNewChunk(OverworldLevel.java:354) at com.interrupt.dungeoneer.game.OverworldLevel.MakeNewChunks(OverworldLevel.java:326) at com.interrupt.dungeoneer.game.OverworldLevel.UpdateChunks(OverworldLevel.java:343) at com.interrupt.dungeoneer.game.OverworldLevel.tick(OverworldLevel.java:186) at com.interrupt.dungeoneer.game.Game.tick(Game.java:530) at com.interrupt.dungeoneer.GameManager.tick(GameManager.java:113) at com.interrupt.dungeoneer.screens.GameScreen.render(GameScreen.java:73) at com.badlogic.gdx.Game.render(Game.java:46) at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225) at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126) [Delver] Could not find file in any mods: meshes/sky.obj [Delver] Could not find file in any mods: sky.png [Delver] Could not find file in any mods: meshes.png
I copied over the 3 files mentioned above from the retail copy, but the SpawnEntity method is crashing because it can't create a bush entity. Other missing files will be listed as well (probably from within one of the bin files since they aren't listed in the dungeon.dat), such as meshes/plane.obj, textures/wood-ladder.png, etc. None of those files are in the asset folder either. I certainly may have done something wrong, however it doesn't look like this mod can run without content from the retail version of the game.
Sidenote: The test level will play, but has a bunch of warnings about missing audio files (dragging the audio folder from retail in fixes that). Also, you may want to upgrade the Gradle wrapper. I looks like it is for a really old version of Gradle and I couldn't get running with Java 10 or 8 (using Gradle 47 got further with different warnings, but 50+ definitely didn't work because of project Gradle config). I gave up before trying Java 6 and dumped Gradle and Maven and included the dependencies manually to get things running.
Enhance Delver Engine to support different types of games by providing extension points for custom player implementations and custom hud implementations.
Just used the clean engine and it keeps asking for the Main Manifest Attribute in all jar files.
Hello,
Does anyone know if this can be compiled for ARM? I see that it's Java so it shouldn't be a problem unless they used some third party proprietary stuff that's not available on other platforms, right?
I'd also like to know the system requirements for running the game. I'm curious to see if it would be able to run on a Pi 3 hardware.
Publishing them in the README.md would be quite helpful, by the way.
A bunch of little features/bugs that I may take a look at adding
Swapping an inventory with an item on the ground can result in the item on the ground rotating forever.
This doesn't 100% repro, but can can be reproduced by trying various items.
This seems to come from: Item.java:293
The item for some reason is never set to being on the floor and will alway rotate.
Drag and drop logic lives here: Game.java:1172
After the fly controls were implemented it exposed weird behaviour when toggling between simulation. Hitting 'P' plays the level, but you are facing up toward the sky. Hitting 'Esc' takes you back to edit, but you are now looking down at the ground.
I have a fix, but GitHub managing forks via the UI has cluttered my commit history so much I'll spare you the messed up PR that will result. The fix is pretty simple. In EditorFrame
, make the following changes to get rid of adding/subtracting the unnecessary 18.9f to things:
Change Line 471 to rotY = -Game.instance.player.yrot;
Change Line 2380 to Game.instance.player.yrot = -rotY;
You may also want to change Line 2378 to Game.instance.player.z = camera.position.y - 0.5f;
to match the height being set the other way (they are both +/- 0.5f now).
When first starting the editor we get a new level with a single tile (not in the center) and a weird camera angle (top down).
When creating a new level using the menu bar we get an empty grid and an arbitrarily zoomed out camera angle (it strongly depends on the previous camera angle, see EditorCameraController::viewSelected
).
I would expect these two behaviors to be consistent in both grid layout and camera angle/position. It should also not depend on the previous camera position.
Is it possible to run Delver using the engine compiled from this repository? This should be documented (or, if that's not possible, it should be made clear in the README).
Enable panning of the camera in the editor viewport. Shift + Right Mouse
seems like a reasonable command.
camera.up
vector.camera.direction
cross product camera.up
The player will continuously bounce on retracted spikes.
The player will bounce on spikes if:
LOOPING
and have gone through at least one animation cycle.Entity.canStepUpOn
property.The Delver Engine displays an awesome tech themed splash screen and test level. It would be nice to expand on that and add additional polish. Doing so could be used to show-off all available features of the engine.
For example removing test textures and levels, replacing them with the tech themed version. Adding proper prefabs and configurations. A level/room builder using the tech theme. Renaming the tech theme.
Also, there are a lot of missing UIs, textures and sounds. These could be substituted (if feasible, copyright permitted etc.).
This issue can be used to track the work.
Investigate why the editor isn't showing the mod menu, even when built with the SteamAPI dependency.
Provide an abstraction to allow for custom Player implementations. The current player behavior should be encapsulated in a DelverPlayer
object, or something along those lines.
GPL-2.0 might not be the best choice for this as a game engine. Ideally we can find something that can do the following:
Might be a good starting point for getting this on DaydreamVR:
https://github.com/bernardjason/daydream
Provide an abstraction to afford custom defined HUD implementations. The current HUD behavior should be encapsulated in a DelverHUD
object, or something along those lines.
Two players have reported being unable to launch Delver and the usual fixes did not work. The common thread is they both have AMD Radeon graphics cards.
There might be an issue with libGDX and Radeon cards.
https://steamcommunity.com/app/249630/discussions/0/2575445991818856722/
Manually add the assets folder to the two previously released builds. Going forward this will be automated with work done in #25
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.