GithubHelp home page GithubHelp logo

relintai / broken_seals Goto Github PK

View Code? Open in Web Editor NEW
381.0 15.0 21.0 27.61 MB

An open source third person action RPG with multiplayer support.

License: MIT License

Batchfile 0.07% Shell 0.23% GDScript 96.66% GAP 1.27% Python 1.58% GLSL 0.19%
game godot rpg action 3d multiplayer

broken_seals's Introduction

Broken Seals

A 3D third person RPG. With both multiplayer, and singleplayer capabilities.

The main gameplay-loop goal is to create an experience with enough complexity and depth, that can rival the more old-school MMO- and action rpgs, because nowadays I feel like that is something that got lost.

I want the game to run on every platform, but the game design is PC first. From the testing I've done this is not going to be an issue.

This project now uses the Pandemonium Engine, which is my custom version of godot.

The project also requires the presence of some of my engine modules, Pandemonium contains all of them. See here.

You can get binaries under the releases tab here.
You can also try a live version running in the browser here.

Unfortunately the web editor needs custom http headers to work and I can't set that up from github.io, so right now I don't have a hosted version of that.

On Desktop

Broken Seals desktop

On Touchscreens

Broken Seals on touchscreen

Status

Currently I'm working content.

Roadmap:

  • Have a few animal models that can be used for the starter zones.
  • Have a few building models.
  • Add in sounds.
  • Have some ambient sounds as music.
  • Set up a proper starter zone.
  • Implement the naturalist's spells.
  • Add a male model.
  • Add more classes.
  • Then start working on new zones.

Some planned changes that will come sometime:

  • Add support for multiple worlds. (Just have to make use of the new World class in the engine. The scene tree (Entities and Entity Bodies) will need small changes.)
  • Fix up multiplayer, and implement missing things (like animations for clients).

Features

Multiplayer

Multiplayer was broken for quite a while, so currently it has a lot more bugs than it used to. Most of these should be relativelty easy to fix.

  • Authoritative server implementation. (Except for movement. Can be done though, I'll do it eventually, but it's usual for these kind of games to not have authoritative movement.)
  • You can create, and join to servers.
  • Movement works. Although the animations are not yet implemented for client players.
  • Targeting works.
  • Spell casting works. Although auras have some issues for now.
  • Inventory management should work.
  • Stuff like vendors, trainers should all work. I think except for crafting (I think just some methods need to be marked as RPCs, and they might need to need to call eachother via rpcs).

Characters

  • Main and secondary stats all work, they are also customizable in the project settings. They also have built in maint stat -> secondary stat conversion support.
  • Character resources all work and scriptable. (Like health, mana, speed, energy etc) Also you can dynamically add it and remove it from a character.
  • Tab targeting support.
  • Spells, and auras are fully scriptable, and networked.
  • Actionbar, actionbar profiles support.
  • Spell learning support.
  • Talent support, with multiple talent trees.
  • Loot.
  • Equipment support including weapons, clothes, and also other attachments. Although starter gear support is not yet finished.
  • Support for changing clothes via texture merging.
  • Support for changing parts of models via clothes. Also support for alternative bodyparts.
  • Character models are using merged meshes and textures, with generated LOD. (This is also multi threaded, with fallback when no threads are available.) This system is using MeshDataResources.
  • Generic attach point support for the character skeletons. (Spell cast particle effects, spell effects, also the same system can be used for weapons.)
  • Interaction support.
  • Vendors, Trainers, Crafting.
  • Fully scriptable ai support.
  • Control over characters can be easily changed by the server, and the character bodies are scripted to act accordingly automatically. For example mind control effects can be implemented with this system.

Missing:

  • Character customization support (like selecting hairtyles). It's mostly there, but some crucial features are still missing.
  • Temporary character model change support. Think of polymorph effects, toys etc. Needs the character customization support first.

Terrain

  • Multi threaded chunk generation. It will even work when no threads are available, also in this case the work gets distributed over multiple frames (although one of the steps is a bit too long, so it still needs some tweaks).
  • Prop system. You can serialize scenes into a more efficient format than scene files. These can contain lights, meshes, rooms and portals, etc. The system is scriptable. Scene hierarchies also work.
  • PropInstance node, which can mesh and put props into the scene.
  • Per chunk material support, even for props.
  • Terraman: prop support, even with mesh (and texture) merging. If you look at the trees on the screenshot, they are merged together per chunk, and they all share the material, and shader. Also if you serialize lights into props, they are added as vertex lights.
  • Terraman and PropInstance: Vertex light support. You can add vertex lights (via code, or the prop system), and the meshes will be colored with it.
  • Terraman: Vertex colors are also used to achieve the main style. (RAO).
  • Terraman: Vertex color based ambient occlusion support.
  • Terraman and PropInstance: LOD support, even for prop meshes.
  • Terraman and PropInstance: LOD generation is scriptable.
  • Dungeon generation support via a separate prop based system. Dungeons are generated below ground, with teleporters to them. Also support for turning off the terrain engine while the player is inside a dungeon.
  • Procedural world generation. See here.

UI

  • Menu and game ui.
  • Actionbars with keybind support. Also the icons that you drag to the actionbar actually gets merged into the ui's texture to reduce drawcalls.
  • Character, talent, spellbook, crafting, inventory, loot, vendor, trainer windows are all implemented.
  • Easily scriptable options dialog.
  • The menu has full support for keyboard / controller navigation. (The game itself misses it at the moment though.)
  • Touchscreen controls. It will also make the buttons bigger if it detects a touchscreen.
  • Keybind window.
  • About window.

Project overview

As stated in the opening section the project uses a custom version of the godot engine.

The project's workflow has been set up so you can easily compile this version for yourself if you want to.

See the Compiling section if you want to know how to do this.

Engine

Currently the Pandemonium Engine is used as the engine for this project, which is a heavily customized verison of the Godot game engine. It's based on the 3.x branch.

It contains my engine modules, and also it got significanlty slimmed down compared to vanilla Godot.

For a more in-depth changelog see it's changelog file here.

Game

The /game folder contains the game's code and assets. This is the folder you are supposed to open in the editor.

The game's folder structure should be (hopefully) mostly self explanatory.

Game Modules

I designed the game's code to be highly modular, so I created a loader module.
It will look for files named game_module.tres and call methods on them on certain events.
This system uses the DataManager singleton.

For example this is how the ui initializes itself:

The player's body script requests the ui nodes from the DataManager singleton (like var ui = DataManager.request_instance(DataManager.PLAYER_UI_INSTANCE)). And then the data manager will instance it's player_ui scene, and call all module's on_request_instance methods, while also passing the newly instanced scene to them.

These module scripts are also responsible for collecting all spells and then setting them into the ESS singleton, so they are actually castable.

This is the module for the naturalist, and it's ResourceDB, which will be merged into a central resource db for ESS.

Note that the module resources are sorted by their resource paths, so spells should always get the same id, on every platform every time. This is to optimize networkd spell casts.

Most of the game assets ended up under the modules folder here for this reason, however these might get moved, if I find a better arrangement.

Terrain generation

The terrain generation is now handled by the new world_generator addon.

Right now the terrain is only going to be pseudo-random, as generating proper connected worlds are kind of super difficult, especially if you also have to mesh them in 3d.
I think this solution can be extended later to be able to do a full continent / world randomization / generation.

For now the idea is that we have a World resource, this contains Continents, those zontain Zones, and those contain SubZones.

The position and size is predetermined by the designer. And then when a chunk needs to be generated it gets put into this world, and then these generate it's data.

  • World does mostly nothing on it's own for now, except for holding continents.
  • Continents handle things like oceans, and big mountains.
  • Zones generate proper terrain, and add props. They need to blend into continents.
  • SubZones can be used as spawners, prop spawners, or they can even do terrain modifications.

So when a chunk needs to be generated, first the world gets it, then all continents which intersect with it's position, then all zones which intersect with it's position, then all subzones which intersect with it's position.

The editor contains an addon to help with editing the world.

Editing the game

Grab the engine itself, and then open the project inside the game folder.

After the initial import it might need an editor restart, however everything should work after that.

If you want to use master, you will likely need to build the editor for it if the c++ side had breaking changes since the last release.

Compiling

First make sure, that you have everything installed to be able to compile the engine. See the official docs for compiling Godot for more info. My setup/compile script uses the same tools, so you don't need to install anything else.

Even though the project doesn't use godot anymore, their docs are still sufficient.

Now let's clone this repository:

git clone https://github.com/Relintai/broken_seals

cd into the new folder:

cd broken_seals

Now let's run the project's setup script, by calling scons without arguments.

scons

This will clone and setup the engine, and all of the required modules into a new engine folder inside the project, using http.

(If you want to use the github's ssh links append repository_type=ssh like scons repository_type=ssh)

Once it is done you can compile the engine.

To build the editor on windows with 4 threads run the following command:

scons bew -j4

To build the editor on linux with 4 threads run the following command:

scons bel -j4

I call this feature of the setup script build words. See.

Once the build finishes you can find the editor executable inside the ./engine/bin/ folder.

For convenience there is a provided editor.sh, or editor.bat for running it from the project's folder. These will create a copy, so you can even compile while the editor is running.

Alternatively if you don't want to use build words, you can also just go into the engine folder:

cd engine

And compile godot as per the official docs.

Build words

The project's setup script contains support for "build words". These can be used from the root of this project.

For example to build the editor for windows with 4 threads you can use:

scons bew -j4

The first argument must start with b (build), then it needs to be followed by a few abbreviations (the order does not matters)

The rest of the arguments will be passed directly to godot's scons script.

Editor

Append e to build with tools=yes a.k.a. the editor.

scons bew -j4

if you omit e, the system will build the export template for you. For example:

scons bw -j4

This will be the release_debug windows export template.

Platform abbreviations

l: linux
w: windows
a: android
j: Javascript
i: iphone (Not yet finished, use build_ios.sh, and build_ios_release.sh)
Mac OSX: Not yet finished, use build_osx.sh

Target abbreviations

By default the system builds in release_debug.

Append d for debug, or r for release.

scons bewd -j4

build editor windows debug

scons bwr -j4

build windows release (this will build the windows release export template)

Shared modules

Note: This only works on linux!

append s to the build string.

Optionally you can also make the build system only build a target module, by appending one of these:

E: Entity Spell System
T: Texture Packer
V: Voxelman
W: World Generator
P: Procedural Animations

Example:

scons belsE -j4

build editor linux shared (Entity Spell System) with 4 threads

Note: to easily run the editor you can use the editor.sh or editor.bat in the root of the project.

Other

Append v to pass the vsproj=yes parameter to the build script. This will generate Visual Studio project files.
Append c to pass the compiledb=yes parameter to the build script. This is a new feature in 3.x to have this disabled by default to lessen compile times.

Postfixes

There are a few postfixes for the build words. These are more complex options. You have to append them to your build word with an underscore.

You can use as many as you want.

For example:

scons bel_slim_latomic -j4

slim

With this postfix you can build a slimmed down version of the engine. This disables quite a few unneeded modules.

scons bel_slim -j4

latomic

If you get linker errors while building the game/editor about undefined referenced with atomic related functions you can use this postfix. It will add the -latomic command line switch to the linker flags.

I ran into this issue while building on a raspberry pi 4 with the x11 platform. It might be related to the recent reworks to threading.

scons bel_latomic -j4

strip

Appends debug_symbols=no to the build command, which will strip the resulting binary from debug symbols.

scons bel_strip -j4

threads

Appends threads_enabled=yes to the build command. Useful for building the editor for html.

scons bej_threads -j4

Scons cache, and sdk locations

In order to use scons cache and to tell the build system where some of the required sdks are located you usually have to use environment variables. Most of the time you might just want to add them globally, howewer this is sometimes unfeasible (e.g. you don't have administrator access, or you just want to have multiple sdk versions installed).

In order to solve this a build config file was added.

If you want to use the config simply rename the provided build.config.example to build.config, and customize the settings inside.

Manual Setup

If you you don't want to use the setup script (or just want to know what it actually does), this section will explain how to set everything up manually.

First clone the engine:

git clone https://github.com/Relintai/pandemonium_engine

Now if you look at the HEADS file.

It contains the commit hashes for that particular revision for every module and the engine. The engine now contains all the modules, so at the moment only worry about the engine's commit hash.

You need to go and checkout the proper commit for it.

Now you can go ahead and compile the engine normally.

Pulling upstream changes

First pull the changes by calling

git pull orgin master

Then just run scons, to will update the modules.

Upgrading the modules

Note: this is how to update the HEADS file. Normally you don't need to do this.

If you want to update the modules, and the engine to the latest, you can use (action=update):

scons a=u

You can also update different targets: all, engine, modules, all_addons, addons, third_party_addons

For example to update the engine to the latest: scons a=u target=engine

broken_seals's People

Contributors

mbscode avatar relintai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

broken_seals's Issues

TODO List

Next

  • Starter gear support.
  • Finish character customization support.
  • Add support for changing character models temporarily. (Polymorph effects for example.)
  • Add a few animals / mobs.
  • Add / improve animations.
  • Improve the character model.
  • Male character model.
  • Sounds - basic setup for spell effects, and footsteps.
  • Start working on classes.
  • Start working on the world, and dungeons.
  • I already added Z offsets to TiledWalls, but they still need work to support colliders properly. (Z offset = 3d walls)
  • Add a few overworld mobs.
  • Set up early levelling.
  • Make dungeon spawning manual with the world generator addon.
  • Implement Naturalist's spells.
  • Add more classes.
  • Create some actual proper dungs.
  • (Somehow) Figure out the remaining specifics on how the game should actually function. Like pacing, etc.

General

  • Add MIT license headers to files that miss it. (Game)
  • Add MIT license headers to files that miss it. (Engine Modules)
  • Rebrand this issue as a TODO list, remove checkboxes, and clean it up.
  • Set up proper patreon rewards, as it looks super bad right now.
  • MIT license headers cleanup.
  • Look through the engine module readmes and add links to usage examples. (texture merger could definitely have some of these. Probably more.)
  • Set up a a build container for the pi.
  • Set up ios build containers and builds.
  • Automatically build the server platform aswell for linux.
  • Fix compile of the modules for 4.0.
  • Check / fix compile of the modules for 3.3, 3.2, and possibly 3.1 and 3.0.
  • Look through the engine module readmes and update where necessary. (ESS says it's for godot 3.2, will probably need to update the clone commands aswell.)
  • Add a clean script.
  • Add a clean - build - release script.
  • Add a changelog md file to the repo itself.

Animations

Animations - Technical

  • Figure out a way to set up animation layers so running and attacking at the same time works.
  • Make Walk/Run animations faster/slower based on the character's current speed.

Animations

  • Jump - jump
  • Jump - falling (loop)
  • Jump - land
  • Melee - dodge
  • Melee - 1h (main hand) - attack
  • Melee - 1h (main hand) - miss
  • Melee - 1h (main hand) - parry
  • Melee - 1h (main hand) - parried
  • Melee - 1h (off hand) - attack
  • Melee - 1h (off hand) - miss
  • Melee - 1h (off hand) - parry
  • Melee - 1h (off hand) - block same as parried
  • Melee - 2h - attack
  • Melee - 2h - miss
  • Melee - 2h - blocked - same as parried
  • Movement - slow walk
  • Movement - walk backwards
  • Movement - turn left
  • Movement - turn right
  • Improve - Movement - run - forward
  • Improve - Movement - run - strafe left
  • Improve - Movement - run - strafe right
  • Improve - Idle
  • Improve - Cast - loop
  • Improve - Cast - end

Characters

  • Add support for starter items.
  • Add starter items.
  • Start adding items, and textures for them.
  • Start work on classes, add talents etc
  • Add more classes.
  • Add more spells and talents to the naturalist.
  • Actually finish implementing naturalist's spells.
  • Set up xp values.
  • Make Entities easily creatable from the editor.
  • Finish up the EntitySpeciesInstance resource (Maybe this should be renamed). This will make Entities customizable and customizable from the editor.
  • Make Entities to automaticaly serialize to props. (This was working at some point.)

Models

  • Male model - It should use the same rig. And even the same parts wherever possible.
  • Mob models (Probably 3 should be enough for now) - Spider etc
  • Npcs - humanoid variations
  • Starter gear support. (Should only need a resource and a few lines of code.)
  • Make the model weaponless, by default and equip the initial weapon with starter gear.
  • Add clothes to the models with gear. (Npcs could use the same system, it would be easier to make them stronger when needed, in a lot more unique ways than just messing with their hp/damage. Higher resists, or bonuses on equipment etc. (For example different difficulty settings could make their gear better.))

Networking

  • Fix the animations on the networked entities on clients during movement.
  • Fix mouse control / clicking issues when one than one instance is running. (Might be an engine issue, not yet sure.)
  • Make sure all remote methods are actually set up as such in Entity.
  • A few Entity subsystems need to have rpc calls added. (Vendors for example.)

Entities

  • Check / clean up unneeded properties (if any).

Sounds

  • Implement/add ui sounds
  • Implement/add footstep sounds
  • Implement/add spell sounds
  • Implement/add melee sounds
  • Ambient sounds

World

Generation

  • Make continents generate terrain with high mountains, or have a zone that does this.
  • Figure out a way to make oceans.
  • Mob spawners, etc for the world generator.
  • Mob level should be based off of the player's level after every load. At least for now.
  • Save mobs - or have and save respawn timers.

Technical

  • Save chunks, so they don't have to be re-generated every time. (Potentially also save and cache chunk meshes.)

Buildings

  • Exclude/include spawn support for the props module. (This is more general than the random spawn support, this system could do that too.) For example prop_instance->set_skip_spawn(int prop_entry_index, true/false), and store additional info in prop data entries, like chance to spawn etc, and Building could set these based on what it wants. This solution would also work with plugs.
  • Finish portal support. (Need to check whether the system works now properly or not.)
  • Spawn in buildings in the proper way for the portal culling system. (After it actually starts to work with custom geometry instances, or it's notifications starts to work.)
  • Start adding props, and start actually working on dungeons.

Content Creation Tools

  • Make sure repositories exist for all the current addons, and also update/add them there.

mesh_data_resource_editor

  • Set position widget.
  • Snapping support via a popup + snap to button.
  • Snapping support while dragging.
  • Blender like move by "x" type command.
  • Add translate by, scale by, rotate by widgets to the sidebar. -> gets zeroed on deselection. -> undo redo on deselection.
  • A small overlay telling some infos, like vert positions etc.
  • Port it to c++ and add it to the mesh_data_resource module by default.

mat_maker_gd

( https://github.com/Relintai/mat_maker_gd ) A port of https://github.com/RodZill4/material-maker to work on the cpu, and inside the editor as a module. I already ported most of the shaders to gdscript. I'm adding this now as it's development is not that demanding, and I can mess with this during times where I wouldn't really be able to do much else.

  • Go through the current MaterialMaker and add the code from all the new nodes.
  • Go through the current MaterialMaker and update any old code.
  • Add note to all files that has code from MaterialMaker.
  • Proper readme.md.
  • Per node seed like in the original.
  • Port all the nodes. Missing ~ 60 from ~ 195
  • Add threading support when ThreadPool is not available.
  • Figure out a way to have it working on vanilla godot, wihtout changes.
  • Try to fix error spam that sometimes happen on undo.
  • Should probably be submitted to the assetlib.
  • Comment cleanups.
  • Figure out which commit I used as a base and add it to the readme. - Or just bring back the .mmgd sets, update them and update comments wherever necessary.

Eventually turn it into an engine module once it works properly, and proven to be useful.


UI

  • Ingame controller navigation support for the windows.
  • Ingame controller spell dragging support.
  • Bindable custom modifiers support for the spells. It would allow you to create new shift/alt/etc like keys and bind buttons to them. I tested this a while ago with a previous version in Unity. Works really well for contollers.
  • Set up a supporters section in the about dialog.

Technical

  • Finish collision support for TiledWalls.
  • TerramanMaterialCache duplicates materials in a different thread. This can cause crashes (fortunately it happens rarely), so figure out a way to make the material duplication itself happen on the main thread without too much complications.
  • The character has some texture mapping issues on the javascipt backend. Fix.

Project

  • Reorganize the project's folders, and remove the modules folder.

Documentation

Modules

  • Improve docs.
  • Most modules need a lot more docs.
  • ESS needs a lot more docs about the character skeleton setup / character mesh merges.

Notes

Everything below this point are random ideas / things that might be needed in the future (Even though they have formatting that might make it seem otherwise.)
This stuff needs to be cleaned up.

Random item /scene, prop, mesh etc/ spawning support for the prop system -> depends on how the room and building system will end up.
Tooling for easy room creation -> currently I think a class that can tile walls with texture atlas textures + the prop system + an in engine editor for it should be enough (Basicly a spatial node that has 4 vertices, and it creates a tiled mesh with a given texture between those vertices + can be used and serialized to and merged from a prop, without node creation)
Auto attack (I used to be against this, but not sure anymore. Thinking about it.)
Maybe an alternate clothing system for npcs, so they don't need gear.

Finish pet support.
Pet talents.

Later

Make the models by default naked. This is not that important for now (except for the weapons).
Terraman raw chunk data serialization (For mostly other games).
Mesh cache support for Terraman. (It could save generated meshes, and stuff like spawn data to the disk, instead of raw chunk data, since terrains aren't editable in this game.)
Full world pre-generation option. (After the new world generator is finished, since It won't generate "infinite" terrains)
Finish the mesh data editor plugin.

Togglable spells. (Auto attack, auto shoot etc)(?)

Fix Networking.
Terraman networking support. (Just keeping the chunks loaded around all players serverside should be enough for now.)
Doing these should be relatively simple after the world related things are finished. Like dungeons/buildings etc as these need some experimentation.
AO fix/reimplementation for PropInstanceMerger.
Vertex light fix/reimplementation for Terraman.
Add random spawn support to the prop system.
Controller support for spells. (It works by default, but need to have bindable custom modifiers to be usable. (Bindable custom shift, alt etc like keys.)
Add a chat
Add command support to the chat
Add serverside commands
Make the ui navigatable via the keyboard / controller ingame.

A music player that can play files from a folder. Could support dynamic music with subfolders. Like it could play music from a battle subfolder in combat etc.

"Stretchable" wall that serializes to and from props and creates a proper mesh grid on deserialization/in the editor. (They cold have 4 vertices -> they could use the portal editor. -> could be a setting. Also vertex snapping in editor maybe.)
"Stretchable" wall with multiple textures. (Vector (tex) -> random/tiled -multiple way- order)
Animation - emotes

PropInstanceMerger should use rooms and portals callbacks. Those callbacks doesn't yet work properly.
Finish up EntitySpeciesInstance -> so entities can be customized -> like having different hair styles / faces / skin color etc
Figure out a way to set up animation layers so running and casting at the same time works.

Implement world saves (Might be a good candidate for the 0.5 release):

Save which mobs get killed and don't spawn them back on chunk/dungeon reload.
Implement character position save.
Implement character position save even in a dungeon.
Save all generated world data, so it won't have to be generated more than once. (Makes position saves easier.)
Save all generated meshes aswell, and just load them if they exist. (Maybe this should be done after 0.4.)
Have a way to reset the world. (Or have respawns on a timer.) (Or just respawn mobs after quitting.)


Other queued up stuff / stuff that I'm thinking about:

Create an asset store like editor plugin, which handles game modules. Should also save dependencies, and git commit hashes.
Optionally implement this into the project setup script.
Add more hooks to modules.
Add optional init order priority for modules.
Add module dependencies.
Edit time hooks/init for modules. (?) - Would remove lots of complexity from game startup. - Could be awful for git and development though. - Will need to think. Zero conf modules would be preferrable.
Take modules and put them into separate repositories.
Specialized modules (?) (For example terrarin generation, ui, etc.)

Plug support for the prop system? PropDataMerger could have an api for this set_render_plug(PropDataPortal, bool).
Setting up tiles like that however would be annoying. It might be simpler to have plugs in the building class, and that plugs up holes if the generator can't spawn a proper room. It should spawn end rooms when it can.

Fixes

Fix Networking.
Voxelman networking support. (Just keeping the chunks loaded around all players serverside should be enough for now.)

Usability

Make Entities saveable with scenes. (Mostly done, should only need fixes.)
Entity spawner prop for voxelman.
Voxelman different per channel size support. (maybe)
A terrarin engine like voxel mesher for voxelman. (it could operate on a for example 16x16x1 array.)
A terrarin engine like water support for voxelman.
A terrarin engine like editor tools for voxelman.
Improve the voxel editors.
Fix VoxelMesherCubic.
Editor tools for VoxelMesherCubic.
Implement hide option for voxel faces.
Editor tools for voxel lights.
Prop toolbar.
Fix save issues with the procedural animations module. Or maybe drop it?
Ability to serialize meshes into chunks.
Ability to export chunks with only mesh data.
Ability to pre-bake everything into chunks.
Ability for voxelman to save and load chunks automatically from files.
The data editor plugin should probably be fixed/improved.

Other

Drop procedural generation(?) (Still not 100% sure.) Handcrafted content usually works better for rpgs. Could be done for a test project.

From the old issue: (Will be cleaned up soon.)


Classes

Fix/implement all of Naturalist's spells
Add more talents for Naturalist
Add more classes (at least 2 for now)


Models / animations

Add a human male model
Make the human female model look less bad
(Maybe) add more races
Add / create animal models
Create melee animations
Implement melee attack animations (godot side) - Needs animation blending/layers too
Add variations for the human


Outdoor props

Add a few basic props like trees, bushes, (maybe) flowers, fences etc.
Create a few buildings. Maybe these could be procedurally generated using the prop system.
This system could also do smaller outdoor "dungeons" like forts for example.


Level generation

Implement continent generation.
Villages.
More biomes.
Add simple cave generation. (Should be easy compared to full dungeons.)
Implement quests.
Very simple quest generation.

Create a simple scenario / planet with a dungeon (Diablo 1 complexity should be enough for now (I mean a small town and a multilevel dungeon), especially since the class design/combat design needs to be kind of like... found). (I think I might be able to do the continent generator directly.)


Mobs
Add wild animals (at least a few)
Add mobs - camps, forts bandits etc -
Fix mob turning


Items
Basic crafting materials
Basic weapons / clothes
Starter items
Maybe a few simple crafting recipes

Gameplay
Need more experiments, both combat and the overall map design


Development quality of life (These would make creating models with the current style a breeze)
Finish the mesh data resource editor addon. Not having to export bodyparts constantly would make life a lot easier. Editing models inside the world with the generated terrarin (with the ingame colors/look) would be cool aswell.
Improve gdpose. Would make it simpler to mess with animations, as with the current workflow you can't see the final model in blender, only a skeleton. Turns out the skeleton editor backport already works quite well, added it as a patch.


Later

Dungeons (Can easily be a goal for 0.5. Especially if the continent generation works out. They will still require lots of work, even though Voxelman already supports them. Unfortunately right now the core is better equipped to work with an overworld.)

A few basic dungeon props (Can't tell exactly yet, depends on the dungeon generator)
Create an okay dungeon generator.
(Probably) A new voxel mesher that works like VoxelMesherBlocky, but also uses isolevel.
Try vertex displacement based on a global noise (per mesher). This might make everything look more organic.
Empty voxel. A voxel type that makes Voxelman skip generating it's mesh.
Mobs for the dungeons.


Networking
Fix Networking
Maybe a client should receive terrarin data from the server. This would make the terrarin editable serverside. It would also reduce client only computation.

Is shouldn't be that hard to fix, but it will need some work. Can probably wait until the game is actually somewhat playable.


Development quality of life (These would make creating models with the current style a breeze)
Implement vertex edit mode for skeletons -> Depends on the mdr editor addon. (Not as important, not having to export after every change is the real time save)
Finish, and port math_maker_gd to c++. (Not as important)

multiple textures for smooth terrain

use a splat/texarray shader and then all you need is to populate the COLOR attributes of vertices with the material ID, which you use in shader

0.4 tracker [OLD]

This issue tries to track what I think needs to be done to (hopefully) make the game actually a game.


Classes

  • Fix/implement all of Naturalist's spells
  • Add more talents for Naturalist
  • Add more classes (at least 2 for now)

Models / animations

  • Add a human male model
  • Make the human female model look less bad
  • (Maybe) add more races
  • Add / create animal models
  • Create melee animations
  • Implement melee attack animations (godot side) - Needs animation blending/layers too
  • Add variations for the human
  • Finish up EntitySpeciesInstance
  • Jump animations, and implement jumping

Outdoor props

  • Add a few basic props like trees, bushes, (maybe) flowers, fences etc.
  • Create a few buildings. Maybe these could be procedurally generated using the prop system.
  • This system could also do smaller outdoor "dungeons" like forts for example.

Level generation

  • Implement continent generation.
  • Villages.
  • More biomes.
  • Add simple cave generation. (Should be easy compared to full dungeons.)
  • Implement quests.
  • Very simple quest generation.

Create a simple scenario / planet with a dungeon (Diablo 1 complexity should be enough for now (I mean a small town and a multilevel dungeon), especially since the class design/combat design needs to be kind of like... found). (I think I might be able to do the continent generator directly.)


Mobs

  • Add wild animals (at least a few)
  • Add mobs - camps, forts bandits etc -
  • Fix mob turning

Items

  • Basic crafting materials
  • Basic weapons / clothes
  • Starter items
  • Maybe a few simple crafting recipes

Gameplay

  • Need more experiments, both combat and the overall map design

Sounds

  • Implement/add ui sounds
  • Implement/add footstep sounds
  • Implement/add spell sounds
  • Implement/add melee sounds
  • Ambient sounds

Development quality of life (These would make creating models with the current style a breeze)

  • Finish the mesh data resource editor addon. Not having to export bodyparts constantly would make life a lot easier. Editing models inside the world with the generated terrarin (with the ingame colors/look) would be cool aswell.
  • Improve gdpose. Would make it simpler to mess with animations, as with the current workflow you can't see the final model in blender, only a skeleton. Turns out the skeleton editor backport already works quite well, added it as a patch.

Later

Dungeons (Can easily be a goal for 0.5. Especially if the continent generation works out. They will still require lots of work, even though Voxelman already supports them. Unfortunately right now the core is better equipped to work with an overworld.)

  • A few basic dungeon props (Can't tell exactly yet, depends on the dungeon generator)
  • Create an okay dungeon generator.
  • (Probably) A new voxel mesher that works like VoxelMesherBlocky, but also uses isolevel.
  • Try vertex displacement based on a global noise (per mesher). This might make everything look more organic.
  • Empty voxel. A voxel type that makes Voxelman skip generating it's mesh.
  • Mobs for the dungeons.

Networking

  • Fix Networking
  • Maybe a client should receive terrarin data from the server. This would make the terrarin editable serverside. It would also reduce client only computation.

Is shouldn't be that hard to fix, but it will need some work. Can probably wait until the game is actually somewhat playable.


Development quality of life (These would make creating models with the current style a breeze)

  • Implement vertex edit mode for skeletons -> Depends on the mdr editor addon. (Not as important, not having to export after every change is the real time save)
  • Finish, and port math_maker_gd to c++. (Not as important)

before i try

is this working project? and no errors ,,i use godouw 3.lts

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.