Jump to content

All Activity

This stream auto-updates     

  1. Today
  2. Textures in Leadwerks don't actually store any pixel data in system memory. Instead the data is sent straight from the hard drive to the GPU and dumped from memory, because there is no reason to have all that data sitting around in RAM. However, I needed to implement texture saving for our terrain system so I implemented a simple "Pixmap" class for handling image data: class Pixmap : public SharedObject { VkFormat m_format; iVec2 m_size; shared_ptr<Buffer> m_pixels; int bpp; public: Pixmap(); const VkFormat& format; const iVec2& size; const shared_ptr<Buffer>& pixels; virtual shared_ptr<Pixmap> Copy(); virtual shared_ptr<Pixmap> Convert(const VkFormat format); virtual bool Save(const std::string& filename, const SaveFlags flags = SAVE_DEFAULT); virtual bool Save(shared_ptr<Stream>, const std::string& mimetype = "image/vnd-ms.dds", const SaveFlags flags = SAVE_DEFAULT); friend shared_ptr<Pixmap> CreatePixmap(const int, const int, const VkFormat, shared_ptr<Buffer> data); friend shared_ptr<Pixmap> LoadPixmap(const std::wstring&, const LoadFlags); }; shared_ptr<Pixmap> CreatePixmap(const int width, const int height, const VkFormat format = VK_FORMAT_R8G8B8A8_UNORM, shared_ptr<Buffer> data = nullptr); shared_ptr<Pixmap> LoadPixmap(const std::wstring& path, const LoadFlags flags = LOAD_DEFAULT); You can convert a pixmap from one format to another in order to compress raw RGBA pixels into BCn compressed data. The supported conversion formats are very limited and are only being implemented as they are needed. Pixmaps can be saved as DDS files, and the same rules apply. Support for the most common formats is being added. As a result, the terrain system can now save out all processed images as DDS files. The modern DDS format supports a lot of pixel formats, so even heightmaps can be saved. All of these files can be easily viewed in Visual Studio itself. It's by far the most reliable DDS viewer, as even the built-in Windows preview function is missing support for DX10 formats. Unfortunately there's really no modern DDS viewer application like the old Windows Texture Viewer. Storing terrain data in an easy-to-open standard texture format will make development easier for you. I intend to eliminate all "black box" file formats so all your game data is always easily viewable in a variety of tools, right up until the final publish step.
  3. Yesterday
  4. Josh

    Terrain Compression

    I wanted to see if any of the terrain data can be compressed down, mostly to reduce GPU memory usage. I implemented some fast texture compression algorithms for BC1, BC3, BC4, BC5, and BC7 compression. BC6 and BC7 are not terribly useful in this situation because they involve a complex lookup table, so data from different textures can't be mixed and matched. I found two areas where texture compression could be used, in alpha layers and normal maps. I implemented BC3 compression for terrain alpha and could not see any artifacts. The compression is very fast, always less than one second even with the biggest textures I would care to use (4096 x 4096). For normals, BC1 (DXT1 and BC3 (DXT5) produce artifacts: (I accidentally left tessellation turned on high in these shots, which is why the framerate is low): BC5 gives a better appearance on this bumpy area and closely matches the original uncompressed normals. BC5 takes 1 byte per pixel, one quarter the size of uncomompressed RGBA. However, it only supports two channels, so we need one texture for normals and another for tangents, leaving us with a total 50% reduced size. Here are the results: 2048 x 2048 Uncompressed Terrain: Heightmap = 2048 * 2048 * 2 = 8388608 Normal / tangents map = 16777216 Secret sauce = 67108864 Secret sauce 2 = 16777216 Total = 104 MB 2048 x 2048 Compressed Terrain: Heightmap = 2048 * 2048 * 2 = 8388608 Normal map = 4194304 Tangents = 4194304 Secret sauce = 16777216 Secret sauce 2 = 16777216 Total = 48 MB Additionally, for editable terrain an extra 32 MB of data needs to be stored, but this can be dumped once the terrain is made static. There are other things you can do to reduce the file size but it would not change the memory usage, and processing time is very high for "super-compression" techniques. I investigated this thoroughly and found the best compression methods for this situation that are pretty much instantaneous with no noticeable loss of quality, so I am satisfied.
  5. aiaf

    Still Here

    Im thinking to release a demo out of what we have here, will include 4 complete levels (the robot computer room , the vr room, dream level 1 and 2. The cryo room will be included separately , i tried to link it to other levels but everytime i save the map it crashes the editor ... Hope you guys ok with this. In case somebody finds time to do some further work will be no problem.
  6. jen

    Foregate

    My small project will be called Foregate, it will be a dark medieval Diablo style single player action RPG. The graphics will be simple, no PBR, 256x256 map, reasonably low-res models. Camera style? Top-down-ish I think? Like in Diablo exactly - and because the camera is not directly in-front of the 3 models, I can get away with low-resolution assets - bonus. Also, with top-down view, I won't have to worry about high resolution sky-boxes. What's my plan for this project? I plan to make this project as small and as simple as possible, possibly release it as open-source, and have fun with it of course. My previous experience with game development (1-2 years ago?) was amateurish I think, still is now. I want to give it a go again, this time with experience although my skill in C++ is not really that good? Maybe I can improve it in this project. More about the game The content is not set in stone yet but I have a general idea of how the mechanics is going to look and feel - Diablo-ish obviously. It'll have monsters (ancient & mythical probably), loot when killing a monster, gold as in-game currency, visual grid inventory, player stats (level, strength, agility, vitality, energy, &c.). The game will be single-player. Possibly a coop multiplayer also? I don't have any interest in making massive multi-player. I started my development yesterday with the basic preparations (setting up project environment, &c.), today I made my first step in developing the core components; worker class, game state, task class. I have a game state that keeps a single source of truth for the entire application; all game data will be stored in this class as "states". I also have a "Worker" which will do the processing of tasks in the game. I also have "object" class, this can be a monster, the player, a weapon, a prop, or an NPC. So the idea is to have a CQRS type of interaction between the classes and the data. Any action in the game will be interpreted as "Task" for the Worker class. The worker class iterates through the Task. Tasks can be created by any class interfaced with the Worker class trough "addNewTask" and the new tasks can be of a certain type i.e.: ATTACK, IDLE, SAVE_GAME, EXIT_GAME, the new task will also have a payload data and it's processed according to its task type e.g. an ATTACK with payload "{ Damage: 10, Target: MonsterA }" will reduce the health of MonsterA by 10 - the worker class will change the game state; find MonsterA in MonsterState and reduce its health by 10. I think it's advantageous to have this type of centralized module where all actions are processed; I can do all sorts of procedures during the processes, maybe debug data, filter actions, mutate payloads, and such. How much time am I going to put into this? A couple of hours a day for 3 days a week maybe. So it's all a rough sketch for now and it's heading the right direction. I'll have more to report later on. This is Forgate Castle, minus the castle, in the map Forgate; the starting location for the player. The fortification will have merchants, and quest givers.
  7. hi, i am new on this forum. Can you help me to make my game? I need a scripteur (LUA) and one buildeur?? Thanks for answering
  8. @Marcousik same example... Scene with creepy materials and marble/shiny wood ground... So as you seen it's not imposible... You can make a scene with all creepy materials and only some marble materials in there. But you need work the Textures. Not the shader.
  9. Here... Example only using DIFFUSE texture on our material (the skin on Triceratops). The SSR make the skin shiny and with reflection. But if we work NORMAL and SPECULAR textures for the same Material, SSR doesn't work on them. Example on the same Material (the Skin of Triceratops): It's pure desing, not programation... 😉
  10. You don't need specify material for the Shader... You can change the textures are you using for SSR doesn't work on CREEPY material or old Wood or Cloth textures... For example in my game, this reflections don't work on my Cloth textures or rought Stone material... But you need play with the diferent types of textures you can create on your MATERIALS.
  11. Right thx adebgamesoft and Russel Actually it would be nice to use this shader on a specific material as it seems to turn the entire scene to marble: It is so impossible to compose a scene with old creepy material and marble
  12. As adebgamesoft said, i have use SSR.SHADER (inside our Leadwerks) on PostEffects area inside ROOT. (It's a Shader like GODRAYS, SSAO o WOOBLE) Anyway, to take advantage of the effect, be sure work and create diffuse and Normal textures, with this the shader works well and we will get that aspect and relief on the reflection of the SSR.SHADER. But if you create and use too Specular and Displacement textures, you will get better effect of relief with the reflections of the shader.
  13. jen

    VSCode + Custom Build Script

    I updated the script to include the header files of projects. I've tested the script today with multi-folder project structure as I move ahead with my project, it builds. Also, there's a better script using CMAKE, if you want it please ask @aiaf.
  14. There are some good GDC talks about how they designed the art for the Diablo games and the choices they had to make to make things more readable. For example, a beam of lightning and a beam of ice might look very similar, especially if you're playing the game on a couch, at a distance from your monitor/TV. It's also more stylish to not have the same shades of gray in every level. But I agree with you and them that they may have turned the colors up a bit too much in the last installments. It's an interesting compromise between making things stylish and readable versus true to the nature of the game, which often limits your palette.
  15. Last week
  16. Hey Russel Nice showcase. How did you do the floor reflections may I ask? It s cool and realistic
  17. jen

    VSCode + Custom Build Script

    Hey aiaf! Sure, send a link over, please. Thanks. And yes, Diablo would be the most fitting example. The recent Diablo installments are too vibrant for me, it doesn't fit the title. Blizzard needs to cut down on the use of glow and shine, it should be reserved for special or high grade items/high tier skills. I think they are cutting the use of colours a bit in the latest one, not enough for my liking though.
  18. aiaf

    VSCode + Custom Build Script

    Welcome back Visual Code is awesome. The c++ debugger is good also, no more gdb from terminal. Another thing somehow the leadwerks editor is now working on ubuntu 18.04 I use some cmake project (linux/windows), can send if you want. When i hear arpgs im thinking Diablo1, maybe something more modest in size but with same kind of dark feeling
  19. I've got a bit of free time on my hands for a while. I plan to take up Leadwerks again and come up with a simple project to have fun with. I use VSCode at work and I don't have a Windows machine at the moment. Codeblocks is a bit dated now and I'm not sure if it has all the features to fit my workflow so I can't use it. It's a bit fiddly to build C++ apps on VSCode. There's a prescribed method of setting up your C++ project in the official hubs but I don't think those are necessary in my case, I just need a script that builds the project which I have below. By the way, VSCode website is here: https://code.visualstudio.com/ Have fun. Save as build.sh in your project's root folder and run using build.sh or build.sh -r for release. Works for Stable version LW and any previous versions(?) - at least v4.5 (archived). BETA branch (4.6?) doesn't seem to build for me, missing Leadwerks.a file. Disclaimer: not really fully tested for bigger projects? I've only tested this with sample projects that have no additional project folder structure in its Source so I'm not sure if the script will propagate its search for CPP files thoroughly and process each file successfully in bigger projects. Back-up project files before running the script for the first time please. Updated: 26/02/2020 #!/bin/sh if [ $1 == "-h" ]; then echo "Build script is set to DEBUG by default. Set -r in first argument of the script to build for release."; exit 1; fi if [ $1 != "" ] && [ $1 != "-r" ] && [ $1 != "-h" ]; then echo "Type build.sh -h to see brief help description."; exit 1; fi debugFlags='-g -DDEBUG -D_DEBUG'; debugLibPath='Debug'; PROJECT_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) LEADWERKS_PATH=~/.local/share/Steam/steamapps/common/Leadwerks declare a compiledFiles; declare a includedFilePaths; if [ $1 == "-r" ]; then debugFlags=''; debugLibPath='Release'; fi truncate -s 0 $PROJECT_PATH/build.log echo "Leadwerks Path: $LEADWERKS_PATH" echo "Project Path: $PROJECT_PATH" echo "Compiling source..." if [ ! -d "$PROJECT_PATH/Compilations" ]; then mkdir $PROJECT_PATH/Compilations; fi if [ ! -d "$PROJECT_PATH/Compilations/$debugLibPath" ]; then mkdir $PROJECT_PATH/Compilations/$debugLibPath; fi for f in $(find $PROJECT_PATH/Source -name '*.h' ); do includedFilePaths+=("-I $(dirname "${f}")") done includedFilesJoined=$(printf "%s " "${includedFilePaths[@]}") includedFilesJoined="-${includedFilesJoined:1}" for f in $(find $PROJECT_PATH/Source -name '*.cpp' ); do originalSourcePath=$PROJECT_PATH/Source; compilationsPath=$PROJECT_PATH/Compilations/$debugLibPath; compiledFilePath=${f/.cpp/'.o'}; compiledFilePath=${compiledFilePath/$originalSourcePath/$compilationsPath}; mkdir -p $(dirname "${compiledFilePath}") g++ -std=c++0x $debugFlags -w -fexceptions -msse3 -DDG_DISABLE_ASSERT -DZLIB \ -DPLATFORM_LINUX -D_NEWTON_STATIC_LIB -DFT2_BUILD_LIBRARY -DOPENGL \ -Dunix -D__STEAM__ -D_POSIX_VER -D_POSIX_VER_64 -DDG_THREAD_EMULATION \ -D_STATICLIB -DDG_USE_THREAD_EMULATION -DGL_GLEXT_PROTOTYPES -DLEADWERKS_3_1 \ -DLUA_USE_LINUX -D_GLIBCXX_USE_CXX11_ABI=1 -D_CUSTOM_JOINTS_STATIC_LIB -fPIC -O2 -std=c++0x \ $includedFilesJoined \ -I $LEADWERKS_PATH/Include/Libraries/VHACD/src/VHACD_Lib/inc \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dMath \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dgNewton \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dContainers \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dgCore \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dgTimeTracker \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dgPhysics \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dCustomJoints \ -I $LEADWERKS_PATH/Include/Libraries/tolua++-1.0.93/include \ -I $LEADWERKS_PATH/Include/Libraries/lua-5.1.4 \ -I $LEADWERKS_PATH/Include/Libraries/freetype-2.4.7/include \ -I $LEADWERKS_PATH/Include/Libraries/enet-1.3.1/include \ -I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/DebugUtils/Include \ -I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/Detour/Include \ -I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/DetourCrowd/Include \ -I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/DetourTileCache/Include \ -I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/Recast/Include \ -I $LEADWERKS_PATH/Include/Libraries/libvorbis/include \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/packages/thirdParty/timeTracker \ -I $LEADWERKS_PATH/Include/Libraries/libvorbis/lib \ -I $LEADWERKS_PATH/Include/Libraries/libogg/include \ -I $LEADWERKS_PATH/Include \ -I $LEADWERKS_PATH/Include/Libraries/zlib-1.2.5 \ -I $LEADWERKS_PATH/Include/Libraries/zlib-1.2.5/contrib/minizip \ -I $LEADWERKS_PATH/Include/Libraries/freetype-2.4.7/include/freetype \ -I $LEADWERKS_PATH/Include/Libraries/freetype-2.4.7/include/freetype/config \ -I $LEADWERKS_PATH/Include/Libraries/LuaJIT/dynasm \ -I $LEADWERKS_PATH/Include/Libraries/glew-1.6.0/include \ -c $f -o $compiledFilePath; compiledFiles+=($compiledFilePath) done compiledFilesJoined=$(printf "%s " "${compiledFiles[@]}") compiledFilesJoined="/${compiledFilesJoined:1}" echo "Building project..."; g++ -o $PROJECT_PATH/${PWD##*/} $compiledFilesJoined -s "$LEADWERKS_PATH/Library/Linux/$debugLibPath/Leadwerks.a" -ldl \ -lopenal -lGL -lGLU "$LEADWERKS_PATH/Library/Linux/libluajit.a" $PROJECT_PATH/libsteam_api.so \ -lX11 -lXext -lXrender -lXft -lpthread -lcurl "$LEADWERKS_PATH/Library/Linux/libopenvr_api.so" echo "Build complete. See build.log for result summary." About the game: I'm kind of disappointed with the Action RPGs released recently. I want to give the genre a shot, present my own interpretation of how it should look like? Dark, medieval, less electric, modest if not rare use of glow shaders... maybe?
  20. They are made by @tjheldna so it's not my permission to give. But you can use the shaders to your liking if not otherwise is staded in them.
  21. Ok, Leadwerks Beta Branch doesn't have it included. I switched to the latest stable branch on Steam. The issue is fixed.
  22. Hey Leadwerks, Update: Looks like this is not a new issue. I'm searching the forum for similar reports and possible solutions. Version: Leadwerks Beta Branch I'm trying to create a custom build script to work in Linux. I want to use VSCode instead of Codeblocks. It's all hands on with VSCode when it comes to building C++ apps hence the custom build script. I have a problem when performing the build. It looks like Leadwerks.a is missing? When performing locate, I can't find it: locate Leadwerks.a Supposedly, it should be in the Library/Linux/Rlease folder (if build is release mode) but the release folder within Library/Linux looks empty: jen:~$ locate Leadwerks.a jen:~$ locate Library/Linux /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Library/Linux /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Library/Linux/Debug /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Library/Linux/Release /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Library/Linux/libluajit.a /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Library/Linux/libopenvr_api.so /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Library/Linux/libsteam_api.so jen:~$ cd /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Library/Linux/Release jen:~/.local/share/Steam/steamapps/common/Leadwerks/Library/Linux/Release$ dir jen:~/.local/share/Steam/steamapps/common/Leadwerks/Library/Linux/Release$ Here is my build script so far: #!/bin/sh PROJECT_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) LEADWERKS_PATH=~/.local/share/Steam/steamapps/common/Leadwerks echo "Leadwerks Path: $LEADWERKS_PATH" echo "Project Path: $PROJECT_PATH" echo "........................................." gcc -I $LEADWERKS_PATH/Include/Libraries/VHACD/src/VHACD_LIB/inc \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dMath \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dgNewton \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dContainers \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/dgCore \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dgTimeTracker \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dgPhysics \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dCustomJoints \ -I $LEADWERKS_PATH/Include/Libraries/tolua++-1.0.93/include \ -I $LEADWERKS_PATH/Include/Libraries/lua-5.1.4 \ -I $LEADWERKS_PATH/Include/Libraries/freetype-2.4.7/include \ -I $LEADWERKS_PATH/Include/Libraries/enet-1.3.1/include \ -I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/DebugUtils/Include \ -I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/Detour/Include \ -I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/DetourCrowd/Include \ -I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/DetourTileCache/Include \ -I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/Recast/Include \ -I $LEADWERKS_PATH/Include/Libraries/libvorbis/include \ -I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/packages/thirdParty/timeTracker \ -I $LEADWERKS_PATH/Include/Libraries/libvorbis/lib \ -I $LEADWERKS_PATH/Include/Libraries/libogg/include \ -I $LEADWERKS_PATH/Include -I $LEADWERKS_PATH/Include/Libraries/zlib-1.2.5 \ -I $LEADWERKS_PATH/Include/Libraries/zlib-1.2.5/contrib/minizip \ -I $LEADWERKS_PATH/Include/Libraries/freetype-2.4.7/include/freetype \ -I $LEADWERKS_PATH/Include/Libraries/freetype-2.4.7/include/freetype/config \ -I $LEADWERKS_PATH/Include/Libraries/LuaJIT/dynasm \ -I $LEADWERKS_PATH/Include/Libraries/glew-1.6.0/include \ -I $LEADWERKS_PATH/Include/Libraries/openal-soft/include \ -L $LEADWERKS_PATH/Library/Linux/Release/Leadwerks.a -L dl \ -L openal -L GL -L GLU -L $LEADWERKS_PATH/Library/Linux/libluajit.a \ -L ADWERKS_PATH/libsteam_api.so -L X11 -L Xext -L Xft -L pthread -L libcurl \ -L $LEADWERKS_PATH/Library/Linux/libopenvr_api.so -std=c++0x -Wall \ -fexceptions -msse3 -DDG_DISABLE_ASSET -DZLIB -DPLATFORM_LINUX -D_NEWTON_STATIC_LIB \ -DFT2_BUILD_LIBRARY -DOPENGL -Dunix -D__STEAM__ -D_POSIX_VER \ -D_POSIX_VER_64 -DDG_THREAD_EMULATION -D_STATICLIB -DDG_USE_THREAD_EMULATION \ -DGL_GLEXT_PROTOTYPES -DLEADWERKS_3_1 -DLUA_USE_LINUX -D_GLIBCXX_USE_CXX11__ABI=1 \ -D_CUSTOM_JOINTS_STATIC_LIB -s $PROJECT_PATH/Source/App.cpp -o $PROJECT_PATH/$1 Result when running "bash build-release.sh Test": Leadwerks Path: /home/jen/.local/share/Steam/steamapps/common/Leadwerks Project Path: /home/jen/Documents/Leadwerks/Projects/Test ......................................... In file included from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/NewtonDynamics/sdk/dCustomJoints/dCustomBallAndSocket.h:16:0, from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Leadwerks.h:179, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.h:3, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.cpp:1: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/NewtonDynamics/sdk/dCustomJoints/dCustomJoint.h:76:1: warning: multi-line comment [-Wcomment] //#define DECLARE_CUSTOM_JOINT_EXPORT_IMPORT(exportImport,className,baseClass) \ ^ In file included from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Leadwerks.h:184:0, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.h:3, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.cpp:1: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/NewtonDynamics/sdk/dCustomJoints/dCustomJoint.h:76:1: warning: multi-line comment [-Wcomment] //#define DECLARE_CUSTOM_JOINT_EXPORT_IMPORT(exportImport,className,baseClass) \ ^ In file included from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Leadwerks.h:395:0, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.h:3, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.cpp:1: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Classes/Directory.h:2:0: warning: ignoring #pragma warning [-Wunknown-pragmas] #pragma warning(disable:4290) /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Classes/Directory.h:3:0: warning: ignoring #pragma warning [-Wunknown-pragmas] #pragma warning(disable:4996) In file included from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Leadwerks.h:451:0, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.h:3, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.cpp:1: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Classes/Stream.h:2:0: warning: ignoring #pragma warning [-Wunknown-pragmas] #pragma warning(disable:4290) /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Classes/Stream.h:3:0: warning: ignoring #pragma warning [-Wunknown-pragmas] #pragma warning(disable:4996) In file included from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Leadwerks.h:456:0, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.h:3, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.cpp:1: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Classes/Texture.h:2:0: warning: ignoring #pragma warning [-Wunknown-pragmas] #pragma warning(disable:4290) /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Classes/Texture.h:3:0: warning: ignoring #pragma warning [-Wunknown-pragmas] #pragma warning(disable:4996) In file included from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Classes/Drivers/Graphics/OpenGL/OpenGLGraphicsDriver.h:6:0, from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Leadwerks.h:541, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.h:3, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.cpp:1: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Classes/Drivers/Graphics/OpenGL/./OpenGLTexture.h:2:0: warning: ignoring #pragma warning [-Wunknown-pragmas] #pragma warning(disable:4290) /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Classes/Drivers/Graphics/OpenGL/./OpenGLTexture.h:3:0: warning: ignoring #pragma warning [-Wunknown-pragmas] #pragma warning(disable:4996) In file included from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/pickcollision.h:5:0, from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/meshcollider.h:5, from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Leadwerks.h:159, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.h:3, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.cpp:1: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/geom.h: In member function ‘void b3d::Box::update(const b3d::Vector&)’: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/geom.h:370:4: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation] if (q.x < a.x) a.x = q.x; if (q.y < a.y) a.y = q.y; if (q.z < a.z) a.z = q.z; ^~ /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/geom.h:370:30: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’ if (q.x < a.x) a.x = q.x; if (q.y < a.y) a.y = q.y; if (q.z < a.z) a.z = q.z; ^~ /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/geom.h:371:4: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation] if (q.x > b.x) b.x = q.x; if (q.y > b.y) b.y = q.y; if (q.z > b.z) b.z = q.z; ^~ /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/geom.h:371:30: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’ if (q.x > b.x) b.x = q.x; if (q.y > b.y) b.y = q.y; if (q.z > b.z) b.z = q.z; ^~ /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/geom.h: In member function ‘void b3d::Box::update(const b3d::Box&)’: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/geom.h:374:4: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation] if (q.a.x < a.x) a.x = q.a.x; if (q.a.y < a.y) a.y = q.a.y; if (q.a.z < a.z) a.z = q.a.z; ^~ /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/geom.h:374:34: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’ if (q.a.x < a.x) a.x = q.a.x; if (q.a.y < a.y) a.y = q.a.y; if (q.a.z < a.z) a.z = q.a.z; ^~ /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/geom.h:375:4: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation] if (q.b.x > b.x) b.x = q.b.x; if (q.b.y > b.y) b.y = q.b.y; if (q.b.z > b.z) b.z = q.b.z; ^~ /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/b3d/geom.h:375:34: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’ if (q.b.x > b.x) b.x = q.b.x; if (q.b.y > b.y) b.y = q.b.y; if (q.b.z > b.z) b.z = q.b.z; ^~ In file included from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/NewtonDynamics/sdk/dMath/dStdAfxMath.h:34:0, from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/NewtonDynamics/sdk/dMath/dLinearAlgebra.h:12, from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/NewtonDynamics/sdk/dCustomJoints/dCustomJointLibraryStdAfx.h:66, from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/NewtonDynamics/sdk/dCustomJoints/dCustomJoint.h:20, from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/NewtonDynamics/sdk/dCustomJoints/dCustomBallAndSocket.h:16, from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Leadwerks.h:179, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.h:3, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.cpp:1: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/NewtonDynamics/sdk/dCustomJoints/dCustomJoint.h: In member function ‘void dCustomJoint::dSerializeMetaDataDictionary::Insert(dCustomJoint::dSerializeMetaData*, long long int)’: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/NewtonDynamics/sdk/dCustomJoints/dCustomJoint.h:191:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] dAssert(m_count < sizeof(m_buffer) / sizeof(m_buffer[0])); ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/NewtonDynamics/sdk/dCustomJoints/dCustomJoint.h:191:4: note: in expansion of macro ‘dAssert’ dAssert(m_count < sizeof(m_buffer) / sizeof(m_buffer[0])); ^~~~~~~ In file included from /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Leadwerks.h:148:0, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.h:3, from /home/jen/Documents/Leadwerks/Projects/Test/Source/App.cpp:1: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/libvorbis/include/vorbis/vorbisfile.h: At global scope: /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/libvorbis/include/vorbis/vorbisfile.h:96:21: warning: ‘OV_CALLBACKS_STREAMONLY_NOCLOSE’ defined but not used [-Wunused-variable] static ov_callbacks OV_CALLBACKS_STREAMONLY_NOCLOSE = { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/libvorbis/include/vorbis/vorbisfile.h:89:21: warning: ‘OV_CALLBACKS_STREAMONLY’ defined but not used [-Wunused-variable] static ov_callbacks OV_CALLBACKS_STREAMONLY = { ^~~~~~~~~~~~~~~~~~~~~~~ /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/libvorbis/include/vorbis/vorbisfile.h:82:21: warning: ‘OV_CALLBACKS_NOCLOSE’ defined but not used [-Wunused-variable] static ov_callbacks OV_CALLBACKS_NOCLOSE = { ^~~~~~~~~~~~~~~~~~~~ /home/jen/.local/share/Steam/steamapps/common/Leadwerks/Include/Libraries/libvorbis/include/vorbis/vorbisfile.h:75:21: warning: ‘OV_CALLBACKS_DEFAULT’ defined but not used [-Wunused-variable] static ov_callbacks OV_CALLBACKS_DEFAULT = { ^~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: In function `_start': (.text+0x20): undefined reference to `main' /tmp/ccRKsdhD.o: In function `App::~App()': App.cpp:(.text+0x11a): undefined reference to `operator delete(void*)' /tmp/ccRKsdhD.o: In function `App::Start()': App.cpp:(.text+0x143): undefined reference to `Leadwerks::Interpreter::GetStackSize()' App.cpp:(.text+0x158): undefined reference to `Leadwerks::Interpreter::NewTable()' App.cpp:(.text+0x167): undefined reference to `std::allocator<char>::allocator()' App.cpp:(.text+0x181): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' App.cpp:(.text+0x18d): undefined reference to `Leadwerks::Interpreter::SetGlobal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' App.cpp:(.text+0x199): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x1a8): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x1b7): undefined reference to `std::allocator<char>::allocator()' App.cpp:(.text+0x1d1): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' App.cpp:(.text+0x1e0): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x1ef): undefined reference to `std::allocator<char>::allocator()' App.cpp:(.text+0x209): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' App.cpp:(.text+0x21a): undefined reference to `Leadwerks::FileSystem::GetFileType(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long)' App.cpp:(.text+0x22c): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x23b): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x252): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(char const*)' App.cpp:(.text+0x263): undefined reference to `Leadwerks::Interpreter::ExecuteFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long)' App.cpp:(.text+0x2a7): undefined reference to `Leadwerks::System::Print(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' App.cpp:(.text+0x2b3): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x2bf): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x2d8): undefined reference to `std::allocator<char>::allocator()' App.cpp:(.text+0x2f2): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' App.cpp:(.text+0x2fe): undefined reference to `Leadwerks::Interpreter::GetGlobal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' App.cpp:(.text+0x30a): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x319): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x323): undefined reference to `Leadwerks::Interpreter::IsTable(int)' App.cpp:(.text+0x33a): undefined reference to `std::allocator<char>::allocator()' App.cpp:(.text+0x354): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' App.cpp:(.text+0x360): undefined reference to `Leadwerks::Interpreter::PushString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' App.cpp:(.text+0x36c): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x37b): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x385): undefined reference to `Leadwerks::Interpreter::GetTable(int)' App.cpp:(.text+0x38f): undefined reference to `Leadwerks::Interpreter::IsFunction(int)' App.cpp:(.text+0x39d): undefined reference to `Leadwerks::Interpreter::PushValue(int)' App.cpp:(.text+0x3b4): undefined reference to `Leadwerks::Interpreter::Invoke(int, int, int)' App.cpp:(.text+0x3cc): undefined reference to `Leadwerks::Interpreter::IsBool(int)' App.cpp:(.text+0x3da): undefined reference to `Leadwerks::Interpreter::ToBool(int)' App.cpp:(.text+0x3fc): undefined reference to `Leadwerks::Interpreter::SetStackSize(int)' App.cpp:(.text+0x40d): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x436): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x44a): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x467): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x481): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x495): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x4a6): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x4b7): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x4c8): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x4dc): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x4ed): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x501): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x512): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' /tmp/ccRKsdhD.o: In function `App::Loop()': App.cpp:(.text+0x54d): undefined reference to `Leadwerks::Interpreter::GetStackSize()' App.cpp:(.text+0x563): undefined reference to `std::allocator<char>::allocator()' App.cpp:(.text+0x57a): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' App.cpp:(.text+0x586): undefined reference to `Leadwerks::Interpreter::GetGlobal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' App.cpp:(.text+0x592): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x59e): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x5a8): undefined reference to `Leadwerks::Interpreter::IsTable(int)' App.cpp:(.text+0x5bc): undefined reference to `std::allocator<char>::allocator()' App.cpp:(.text+0x5d3): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' App.cpp:(.text+0x5df): undefined reference to `Leadwerks::Interpreter::PushString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' App.cpp:(.text+0x5eb): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x5f7): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x601): undefined reference to `Leadwerks::Interpreter::GetTable(int)' App.cpp:(.text+0x60b): undefined reference to `Leadwerks::Interpreter::IsFunction(int)' App.cpp:(.text+0x61d): undefined reference to `Leadwerks::Interpreter::PushValue(int)' App.cpp:(.text+0x631): undefined reference to `Leadwerks::Interpreter::Invoke(int, int, int)' App.cpp:(.text+0x644): undefined reference to `Leadwerks::System::Print(char const*)' App.cpp:(.text+0x64e): undefined reference to `Leadwerks::Interpreter::SetStackSize(int)' App.cpp:(.text+0x65f): undefined reference to `Leadwerks::Interpreter::IsBool(int)' App.cpp:(.text+0x66d): undefined reference to `Leadwerks::Interpreter::ToBool(int)' App.cpp:(.text+0x67e): undefined reference to `Leadwerks::Interpreter::SetStackSize(int)' App.cpp:(.text+0x68f): undefined reference to `Leadwerks::Interpreter::SetStackSize(int)' App.cpp:(.text+0x6a0): undefined reference to `Leadwerks::Interpreter::SetStackSize(int)' App.cpp:(.text+0x6b1): undefined reference to `Leadwerks::Interpreter::SetStackSize(int)' App.cpp:(.text+0x6c2): undefined reference to `Leadwerks::Interpreter::SetStackSize(int)' App.cpp:(.text+0x6e7): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x6f8): undefined reference to `std::allocator<char>::~allocator()' App.cpp:(.text+0x712): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' App.cpp:(.text+0x723): undefined reference to `std::allocator<char>::~allocator()' /tmp/ccRKsdhD.o: In function `__static_initialization_and_destruction_0(int, int)': App.cpp:(.text+0x763): undefined reference to `std::ios_base::Init::Init()' App.cpp:(.text+0x778): undefined reference to `std::ios_base::Init::~Init()' /tmp/ccRKsdhD.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': App.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_]+0x3c): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()' App.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_]+0x48): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const' App.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_]+0x61): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned long)' App.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_]+0x78): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append(char const*, unsigned long)' App.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_]+0x8b): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' App.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_]+0x9c): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' /tmp/ccRKsdhD.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, char const*)': App.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_]+0x23): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append(char const*)' App.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_]+0x3d): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)' /tmp/ccRKsdhD.o:(.data.rel.ro._ZTI3App[_ZTI3App]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info' /tmp/ccRKsdhD.o:(.data.rel.local.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0' collect2: error: ld returned 1 exit status
  23. A new update is available for beta testers. This adds a new LOD system to the terrain system, fixes the terrain normals, and adds some new features. The terrain example has been updated ans shows how to apply multiple material layers and save the data. Terrain in LE4 uses a system of tiles. The tiles are rendered at a different resolution based on distance. This works great for medium sized terrains, but problems arise when we have very large view distances. This is why it is okay to use a 4096x4096 terrain in LE4, but your camera range should only show a portion of the terrain at once. A terrain that size will use 1024 separate tiles, and having them all onscreen at once can cause slowdown just because of the number of objects. That have to be culled and drawn. Another approach is to progressively divide the terrain up into quadrants starting from the top and working down to the lowest level. When a box is created that is a certain distance from the camera, the algorithm stops subdividing it and draws a tile. The same resolution tile is drawn over and over, but it is stretched to cover different sized areas. This approach is much better suited to cover very large areas. At the furthest distance, the entire terrain will be drawn with just one single 32x32 patch. Here it is in action with a 2048x2048 terrain, the same size as The Zone: This example shows how to load a heightmap, add some layers to it, and save the data, or load the data we previously saved: --Create terrain local terrain = CreateTerrain(world,2048,32) terrain:SetScale(1,150,1) --Load heightmap terrain:LoadHeightmap("Terrain/2048/2048.r16", VK_FORMAT_R16_UNORM) --Add base layer local mtl = LoadMaterial("Materials/Dirt/dirt01.mat") local layerID = terrain:AddLayer(mtl) --Add rock layer mtl = LoadMaterial("Materials/Rough-rockface1.json") rockLayerID = terrain:AddLayer(mtl) terrain:SetLayerSlopeConstraints(rockLayerID, 35, 90, 25) --Add snow layer mtl = LoadMaterial("Materials/Snow/snow01.mat") snowLayerID = terrain:AddLayer(mtl) terrain:SetLayerHeightConstraints(snowLayerID, 50, 1000, 8) terrain:SetLayerSlopeConstraints(snowLayerID, 0, 35, 10) --Normals if FileType("Terrain/2048/2048_N.raw") == 0 then terrain:UpdateNormals() terrain:SaveNormals("Terrain/2048/2048_N.raw") else terrain:LoadNormals("Terrain/2048/2048_N.raw") end --Layers if FileType("Terrain/2048/2048_L.raw") == 0 or FileType("Terrain/2048/2048_A.raw") == 0 then terrain:SetLayer(rockLayerID, 1) terrain:SetLayer(snowLayerID, 1) terrain:SaveLayers(WriteFile("Terrain/2048/2048_L.raw")) terrain:SaveAlpha(WriteFile("Terrain/2048/2048_A.raw")) else terrain:LoadLayers("Terrain/2048/2048_L.raw") terrain:LoadAlpha("Terrain/2048/2048_A.raw") end The x86 build configurations have also been removed from the game template project. This is available now in the beta tester forum.
  24. @shadmar incredible Dino land!! I don't need now, but in the future in another "minigame" or level in my museum, would you give me your permission to use the camera model and fps hands??? They are cool!!
  25. But Steal is a horrible word 😅😅😅😅 Anyway thanks!! I will look the code of shaders to learn from them, if I don't need it anymore because I have finished the underwater area of my game. Used the default stuff has Leadwerks inside it. (I think wobble.shader is developed by you Shadmar) This is the final result of yesterday work (thank you very much team with the help about sintax of how use addposteffect). I'm very satisfied with it:
  26. There are water shaders in Dino Land you can steal (whole game is unencrypted) I believe the rest of the sahders are also there.
  27. I have now 2 collisions scripts differents for the Water area. One for ENABLE (thanks @Josh) wobble.shader effect, and another one for DISABLE it with ClearPostEffects() This is the result: Many thanks team!! Im very newbie with LUA, and sometimes one simple line of code takes me a long time to achieve my objetive.
  1. Load more activity
×
×
  • Create New...