GithubHelp home page GithubHelp logo

dixx / die_chroniken_eines_namenlosen_spiels Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 46.09 MB

We develop a game just for the sake of learning how to do it. Okay, maybe it's more developing a game engine and using a game as its integration test. We have no real goal besides the learning experience.

License: Other

C++ 62.18% Lua 0.88% CMake 36.49% Shell 0.32% C 0.13%
catch cmake doxygen-documentation fakeit game-development game-engine irrlicht rpg-game

die_chroniken_eines_namenlosen_spiels's People

Contributors

dixx avatar mbrendler avatar odon4t4 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

jzobel

die_chroniken_eines_namenlosen_spiels's Issues

how to get meshes from Blender to IrrLicht

Using Blender, certain materials and properties may be stored for a mesh.
What can be retrieved by IrrLicht mesh loaders?

property in Blender 3ds (solid) x ms3b b3d
Material.name yes no no no no
Material.lighting no yes yes yes yes
Material.colors.ambient yes == diffuse no yes == diffuse
Material.colors.specular yes yes yes yes no
Material.colors.diffuse yes yes yes yes yes
Material.colors.emissive yes no yes yes no
Material.textures yes no no no no
Material.physics
Material.reflection yes no no no no
Material.shinieness yes no yes yes no
Material.transparency yes no no no
Mesh.properties
Bones
Animations.keyframes yes no yes
Animations.names no
Animations.weights yes no yes
Particle_effects
Camera_and_lights yes if asked if asked
saves unused materials yes no yes no saves only 1 at all!
other can in no way hold material names text format, export left-hand as per default breaks the mesh, crashes the game.

How to export .x correctly:
How to export .3ds correctly:

how to add noise to the ground?

Is there a way in Irrlicht to add a second texture to the map tiles, to have "ground noise"?
If so, is it scalable and repeatable?

map tiles do not fit seamless

The map tiles do not seamlessly fit together, there are gaps and therefore collision errors. Make them fit perfectly with an easy-to-follow Blender way, or even without using Blender.

add the artificial intelligence

We need an AI for the game.
We need a minimum of AI to move NPCs and monsters as well as for attacking.
It should be able to read scripted files for behaviours of lifeforms.

whole game does not work correctly for lesser FPS

On slower systems, collision glitches, game does not respond to keys, mouse sensitivity is not proportional to FPS, camera zooming does get stuck.

System used:

  • ATI Radeon 7000 64MB VRAM
  • Windows XP SP ???
  • <1GB RAM
  • OpenGL v1.1.0

Can be reproduced using a VM with low settings.

save the world

The world must be saved! ... at least the changes.

  • Weather: fog, daytime, rain ...
  • Objects: static???, moving???, lifeforms???
  • Story, Quests: ???
  • [ ]

add an input action mapping file

Create a default mapping file for every input action in the game.
It should be possible to map keyboard keys as well as other controller inputs to an action.
The file must contain sections for game and menues, and may contain comments. YAML format would be sufficient. There should be one custom file for the game section.

Brainstorming: https://github.com/dixx/Die_Chroniken_eines_namenlosen_Spiels/blob/master/Doc/Brainstorming/keymap.md

Some good starting points:
https://www.gamedev.net/articles/programming/general-and-gameplay-programming/designing-a-robust-input-handling-system-for-games-r2975/
https://www.codeproject.com/Articles/37446/Direct-Input-Custom-Action-Mapping-refresh

add configuration screen for video

Values to change:

  • driver type
  • screen resolution (fixed pairs)
  • color depht
  • fullscreen/windowed
  • VSync
  • anti-aliasing
  • fltering (?)
  • shaders (?)
  • StencilBuffer (?)

It must read from the config file, it must write to the config file, it must update wrong values from the config file.
It is a precondition for #42

update configuration file

Add the entities mentioned in GameFloatControl::createDeviceFromConfig() to the configuration file and the Config reader class.

add menues

  • add main menu
  • make buttons work
  • make switching between menus possible
  • look out for the SegFault Bug when using TAB to jump around on disabled menus

memory leak in game flow

Steps to reproduce:

  • run compiled game, watch the memory it consumes
  • click repeatedly on "Fortsetzen", about 10 times
  • wait for 2 minutes

Actual behavior:
the memory consumption goes up and does not go down by itself

Expected behavior:
the memory consumption goes up and then goes down immediately, latest after 1 minute.

savegame does not take timezones into account

Irrlicht provides only one method to get the local system time. The UNIX timestamp is GTM. Find a way to get the local system's timezone offset and subtract it from the Irrlicht datetime.Hour.

add a vegetation creator class

Follow-up for #27.
Add vegetation to the ground. This class should:

  • load vegetation mesh(es)
  • calculate positions and place there an instance of a vegetation
  • update the vegetation movement

use fixed screen resolutions

If there are unusual screen resolutions given for fullscreen mode, fall back to the next lesser resolution. Start with at least 800x600. The camera aspect ratio and the loading screens must be adjusted too.

save in-game objects

Find a way to save any in-game-object's parameters and options and so on into a savegame. Think about to use the objectData strings for this.

bake the map tiles together

Is there a way to "bake" map tiles together?
If so, is the texture offset also correct?
Do we need absolutely correct Blender Meshes for the baking, or is it possible also with "incompatible" mesh edges?

a "naming machine"

For our cool swords and rings and enemies, we need cool names.
Names should be generated automatically, depending on the class of the thing to be named, it's durability, and it's states and attributes.
E.g.:
Stuhlbein -- Haltbarkeit: 9999 -- +3 zu Leben -- +1 auf Leben stehlen
--> 'unzerstörbares Stuhlbein des wärmenden Vampirs'
or 'Des lebendigen Blutegels haltbarer Knüppel'
...or something like that.
There shoud be scripted naming rules and scripted dictionaries for the name's parts.
The outcome of this issue should be more detailed work instructions.

loading screens are stretched

Current behavior:
Loading screens are stretched and loose their aspect ratio.

Expected behavior:
They should be resized only if necessary, and keep their aspect ratio.
They also must be centered correctly again!

How the hero walks when action key is held down

When hero is lead with the mouse, when behind an NPC, he wals back towards the NPC as soon as the mouse pointer hits the NPC. Instead the hero should walk to the destination ON THE GROUND the mouse pointer is pointing at.
New engine, new rules.

TODO when "action key" is held down:

  • target is ground: move hero
  • target is anything else: move hero
  • hero faces the right direction
  • animation is correctly timed with speed
  • check if there is an easy solution for great hight differences
    target is enemy: attack targeted enemy re-target if enemy dies --> will follow later

sounds are not preloaded

Steps to reproduce:

  • use method irrKlangEnginePointer->addSoundSourceFromFile( filename, ESM_NO_STREAMING, true );
  • play a preloaded sound via irrKlangEnginePointer->play2D

Expected behaviour:

  • the sound is always played immediately

Actual behaviour:

  • on first attempt, the sound is preloaded first and then played
  • all following attempts play the sound immediately.

add a save game mechanism

It should be binary format. There should be three cyclic used autosaves. "Laden" should set the file change date timestamp to now, and LoadGameState should load always the newest savegame.
Save games should contain:

  • version number
  • timestamp
  • the hero
  • the level name
  • the save-worthy rest of the world (will be a separate task: #20)

The menu responds:

  • if there are no save games, create one directly after successful char creation. (will be a separate task: #23)
  • if there are savegames, load the newest one and get the char from there. (will be a separate task: #24)
  • Enable "Fortsetzen" if there are save games.

update CMakeLists.txt to run in Windows and Linux too

Follow-up for #53.

  • The CMake tooling must run in Linux (at least latest Ubuntu) and Windows. OSX and Jolla would be nice, but have no high priority.
  • There must be meaninfull error messages.
  • Necessary compiler switches and a stub for tests must be in place.

replace internal object description string with a configuration

This is related to the 3D object creation #22.
Most of the time, a C++ configuration object is way faster and a bit smaller than a string.
Check why we use the string in the first case, and check if it would be a good idea to replace it with a proper configuration object.

loading screens are not centered

The loading screens are not centered if their sizes differ from the window resolution.
Resize the loading screens to match the chosen window size.
This also affects the main menue bar.

optimize compilation process

For convenient compiling/running/debugging of the project, we need to think about:

  • a method to automatically link the project to local Irrlicht/IrrKlang lib folders (e.G. via environmental variables)
  • a cross-platform make file (CMake was introduced by mbrendler)
  • a method to copy necessary media files and lib files to the output folder
  • a method to have tests in the same or another project

vegetation

  • How can terrain be marked for certain vegetation types?
  • How can vegetation be set to the world?
  • Collideable or not?

advance game states

  • transitions to other states
  • request switching to another state
  • startup phase (via update())
  • shutdown phase (via update())
  • pause / resume

update code style

  • max width: 120 chars
  • remove '_' from local variable _instance
  • add '*' to block comment lines
  • remove unnecessary comments

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.