Windows builds:
hhyyrylainen / leviathan Goto Github PK
View Code? Open in Web Editor NEWLeviathan Game Engine
License: Other
Leviathan Game Engine
License: Other
Windows builds:
If a script changes the render queue mode without much thought it will crash the game.
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.
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
These broke with the major engine rewrites and need to be reimplemented. Perhaps as a component type.
Needed by: Revolutionary-Games/Thrive#527
To speed up script execution a JIT compiler should be added. AFAIK the only public one for AngelScript is this: https://github.com/BlindMindStudios/AngelScript-JIT-Compiler
Before it works perfectly it should be an optional flag to enable it.
Required by: Revolutionary-Games/Thrive#612
Configuring ffmpeg takes a long time so an option to only reconfigure it when it has changed (a new commit) would be excellent for speeding up ci builds.
Requires RubySetupSystemChanges
I fixed linking with ld.gold by adding -Wl,--disable-new-dtags
which is not optimal.
This should be somehow properly resolved.
The temporary fix was done in this commit: a6a0cb4
Some links:
http://blog.qt.io/blog/2011/10/28/rpath-and-runpath/
chros73/rtorrent-ps-ch#93
http://manpages.ubuntu.com/manpages/trusty/man1/ld.gold.1.html
https://medium.com/square-corner-blog/building-portable-binaries-50ca4f3d75cd
http://man7.org/linux/man-pages/man8/ld.so.8.html
https://stackoverflow.com/questions/26281813/what-is-ld-runpath
https://wiki.debian.org/RpathIssue
https://stackoverflow.com/questions/7967848/use-rpath-but-not-runpath (seems to say that using RPATH is fine when bundling dependencies, which is done here)
https://amir.rachum.com/blog/2016/09/17/shared-libraries/
https://stackoverflow.com/questions/17450573/how-to-actually-change-set-environment-variables-from-within-emacs
Changing linkers is done with sudo alternatives --config ld
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
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
).
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?
Basically doing an options menu is impossible currently. It needs engine support for affecting graphics parameters (and writing the changed parameters to the configuration files) on the fly.
Things like resolution, FXAA, sound master volume etc.
Required by: Revolutionary-Games/Thrive#509
Some ideas as to what to do:
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.
bs::Debug::log doesn't know if a custom callback was used.
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.
For use by the editor and automatic beautifying scripts (for example Thrive: Revolutionary-Games/Thrive#598)
It should probably be based on the AngelScript parser for conformant parsing.
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.
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.
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.
There is hopefully an option in CEF to set the default mode to allow selecting the text.
Right now it is very much untested if Direct3D11 works.
It should also be able to run the samples when selected.
This would allow this Thrive issue to be done: Revolutionary-Games/Thrive#607
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.
Modding isn't supported properly yet, but it should. So some solution needs to be created with file overwriting or some extensive hook system that mods could use.
Also needs documentation about modding.
Needed by: Revolutionary-Games/Thrive#584
Using set_source_files_properties("file" PROPERTIES HEADER_FILE_ONLY TRUE)
might be enough to not make cmake complain about them being included. They should also have their own resource group.
PR: #32 has (some) good parts along with some changes I don't want. Those parts should be applied separately.
Right now systems are run subsequently. It would be better to allow the game world script to specify dependencies on the systems and generate independent execution flows that can be run in parallel.
Required by: Revolutionary-Games/Thrive#314
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.
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.
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.
2.33.0 was just released.
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.
separate the NewtonCollision types to own classes to avoid calling wrong things on the wrong objects.
This is for script bindings
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...
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.
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
.
The cmake configured files are made read only. But the FileGenerator generated ones aren't
The dependent component must always be deleted when the thing it depends on is deleted.
Required by: Revolutionary-Games/Thrive#615
There should a mode where all the physics bodies are drawn for physics debugging purposes.
tried to compile the engine but it gave me this error code
ERROR: Downloaded file hash doesn't match expected hash, 4960c8f5c4fc5829958adae0c64904c0290569c815ef93d15ee5ca05b4206b4d != 50076ddb0225a7eb440bbb67ac07d74186068a31be2c796a6920beeea446e68b
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.