Giter Site home page Giter Site logo

hhyyrylainen / leviathan Goto Github PK

View Code? Open in Web Editor NEW
17.0 4.0 8.0 11.01 MB

Leviathan Game Engine

License: Other

CMake 9.10% Shell 0.01% Ruby 2.17% Batchfile 0.02% C++ 82.37% C 5.46% Makefile 0.10% AngelScript 0.55% JavaScript 0.15% HTML 0.03% CSS 0.03% ActionScript 0.02%
game-engine angelscript cpp17 entity-component-system

leviathan's People

Contributors

crodnu avatar hhyyrylainen avatar nillythekid avatar untrustedlife avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

leviathan's Issues

Add Ogre shader cache folder

This will speed up launching games after the first time. It would also be good to figure out a way to precompile the shaders for all platforms.

Ogre recommends for this purpose creating a scene that uses all the materials and loading that in order to generate all the needed shaders and then using the shader cache store them.

Setup.rb 404 error

I'm a little inexperienced, so I'm not sure if its something I'm doing wrong, but when I try to compile Leviathan by running Setup.rb, I run into a problem. Once it reaches the part where it tries to clone CEF, it encounters a 404 Not Found error. I think the problem is that it is trying to clone CEF from boostslair.com, which doesn't exist. I don't think Setup.rb is out of date or anything, because I just cloned Leviathan less than an hour ago. Is there something else I should be doing?

Create Logger in CEF process

Right now using some common functions that uses the logger will crash the GUI process. Instead there should be an additional Logger created in the GUI process that uses the CEF log macros. The logger should only be created when it is actually ran in a separate process (and not with --single-process).

Resolve the RPATH situation

Speed up startup

Some ideas as to what to do:

  • make Ogre and CEF initialization simultaneous

Fix warnings from cAudio

cAudioPlatform.h add already defined check to line 57 "#define _CRT_SECURE_NO_WARNINGS 1"

c:\projects\leviathan\build\thirdparty\include\caudio\caudioplatform.h(57): warning C4005: '_CRT_SECURE_NO_WARNINGS': macro redefinition (compiling source file C:\projects\Leviathan\Engine\GUI\VideoPlayer.cpp)

This should be done to the used cAudio fork as the main project seems dead.

engine refuses to compile

tried to compile the engine but it gave me this error code
ERROR: Downloaded file hash doesn't match expected hash, 4960c8f5c4fc5829958adae0c64904c0290569c815ef93d15ee5ca05b4206b4d != 50076ddb0225a7eb440bbb67ac07d74186068a31be2c796a6920beeea446e68b

Split the generator script

The world and network packet generator script is huge and should be split into much smaller files to make it less unwieldy to work on.

Expose log functions to JavaScript

Right now only console.log can be used to log things from JS. That's not optimal. Instead something like Leviathan.LogInfo() function should be added for JS to proxy calls to LOG_INFO.

Make the file generator properly indent lines

Besides splitting it into more files it would be good for readability to make an output writer class that would have methods like:

f.puts "if(stuff){"
f.indent
f.puts "return true;"
f.deindent

to make the code output code cleaner and easier to read. And also the resulting code

Fix GUI scroll input events

For some reason CEF doesn't want to react to scroll events when the scrollable part of the GUI doesn't take up the entire screen.

Maybe sending mouse position events or something before the scroll would make it work.
A workaround could maybe be made with JavaScript forcing scrolling when a scroll event is sent to the GUI.

Resolves this issue: Revolutionary-Games/Thrive#603

SoundDevice configuration should track "default" device

Right now on the first startup the default device name is saved and then that is always used when available.
Instead it should work like this: by default the saved name would be "default" and that would mean to always use the default device.

The user could still customize the choice (once option menu support is added) by selecting a different device.

Fix logging in tests

Using the INFO macro will lose all the messages when they go out of scope. So using it isn't optimal. But there might not be a much better choice...

Add conversions for script calling

Now only exact type matches are accepted. It would be much better to allow integer and float type conversions. And also conversions with dynamic_cast (if it is possible to somehow detect that the cast might succeed). This makes calling scripts from C++ easier.

Fix Pong Sample

Right now the sample is utterly broken after some major engine changes.
Also the Samples executable needs some GUI fixing.

This should wait until major parts of the engine have been stabilised.

Directly grab SFML networking sources

This way SFML dependency will go away and the code can finally be fixed to work better with nested sf::Packets. And the socket code should be updated to work with ipv6 (if SFML hasn't done that yet).

It might be worth it to try to avoid major changes to make it easier to grab fixes from SFML.

Add option for hardware cursor

Software cursor is now added, but for games that don't have a steady framerate having the option of using a hardware cursor would be nice.

This should be added to Window::SetCustomCursor method.

Add wrapper generation for world generator

World script needs to be able to generate wrappers for stuff. Right now the physics creation can be ran with a nullptr that is then converted to a reference. So it needs to generate wrappers for using pointers and checking them for null. Unless AngelScript automatically stops this, but it sort of looks like it doesn't.

Add software cursor support back

The current solution grabbing the cursor from CEF almost works all of the time, but an option for fully software cursor (like before with CEGUI) would be quite excellent. If it also could be controlled from JavaScript (with the cursor properties) it would be even better.

Enforce a strict material id order for performance

It should be possible to always require that a lower material ID forms pairs with higher IDs. This makes it possible to only check one way around for the material pair in physics callbacks, hopefully giving some performance increases.

VideoPlayer audio stutters

The approach with the audio callback (in the audio thread) trying to also read the file and decode audio when it has nothing to play seems to result in stuttering audio.

A fix for this is needed.

Initial idea: make the video frame decoding decode up to 10 future frames and make buffers of audio chunks for the audio thread to play, which will hopefully then always be able to quickly get audio data to play.

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.