Jump to content

reepblue

Developers
  • Posts

    2,482
  • Joined

  • Last visited

Everything posted by reepblue

  1. Ok, thanks for the acknowledgement, and hopefully it can be addressed soon. Also, I've seen worse setups. ?
  2. For Ubuntu 18.04 (After installing the app with Steam): sudo apt-get install libglu1-mesa-dev libcurl4-openssl-dev libxft-dev libopenal-dev libcurl4-openssl-dev libxft-dev libxrender-dev libcurl4-openssl-dev libtolua++5.1-dev Then as explained here, You need to add -no-pie to the linker flags like so:
  3. Some entities also act weird when they are a child to something. Since you need to parent things to save as one object, you can try breaking the prefab up buy unparenting all the root entity's children on Start. I recall doing something like that before..
  4. Be careful using prefabs with CSG as they can cause unusual effects. Prefabs do not really want to work with complex situations. They are mostly useful for spawning models with a script pre-assigned to them. This would be something I would just assign the object with a script or actor and create the objects I need in the code. I usually never use prefabs due to situations like this, but I'm sure others adore them. ?
  5. To save you more time, replace the stock app files with this: Header: #ifndef APP_H #define APP_H #ifdef WIN32 #pragma once #endif #include "Framework.h" namespace Leadwerks { class App { Window* window; Context* context; public: App(); virtual ~App(); bool Start(); bool Loop(); static void ChangeLevel(const std::string& pName); }; } #endif // APP_H CPP: #include "App.h" #define VR_ENABLED 1 namespace Leadwerks { unsigned int windowstyle = 0; unsigned int winwidth; unsigned int winheight; iVec2 gfxmode; World* world; std::string changename; std::string currentmap; void Call_PostStart() { Entity* e; for (int i = 0; i <= world->CountEntities(); i++) { e = world->GetEntity(i); if (e != NULL) { if (e->GetKeyValue("PostStart") != "1") { if (e->CallFunction("PostStart")) { std::string entityname = "\"" + e->GetKeyValue("name") + "\""; Print("Firing PostStart() on entity: " + entityname); e->SetKeyValue("PostStart", "1"); } } } } }; void Call_ChangeMap(const std::string& pName) { std::string fullname = "Maps/" + pName + ".map"; System::Print("Changing map to: \"" + fullname + "\"..."); if (Map::Load(fullname) == false) { Print("Error: Failed to load map file \"" + fullname + "\"..."); fullname.clear(); currentmap = ""; return; } fullname.clear(); currentmap = pName; Call_PostStart(); changename = ""; System::Print("Current map is: \"Maps/" + currentmap + ".map" + "\"..."); }; App::App() : window(NULL), context(NULL) {} App::~App() { delete world; delete window; } bool App::Start() { gfxmode = System::GetGraphicsMode(System::CountGraphicsModes() - 1); currentmap = System::GetProperty("map", "Maps/start.map"); gfxmode.x = Math::Min(1280, gfxmode.x); gfxmode.y = Math::Round(gfxmode.x * 9 / 16); windowstyle = Window::Titlebar + Window::Center; #ifdef VR_ENABLED VRRules::InitVR(); #endif window = Window::Create(System::AppName, 0, 0, gfxmode.x, gfxmode.y, windowstyle); context = Context::Create(window, 0); if (context == nullptr) { Debug::Assert("Failed to create context"); } world = World::Create(); if (currentmap != "") { ChangeLevel(FileSystem::StripAll(currentmap)); } return true; } bool App::Loop() { if (window->Closed()) return false; if (window->KeyHit(Key::Escape)) return false; if (window->KeyHit(Key::Space)) { ChangeLevel(currentmap); return true; } if (changename != "") { // Pause the clock Time::Pause(); /* if (VRRules::IsVREnabled()) { VR::DisableCamera(); } */ // Pause garbage collection System::GCSuspend(); // Clear all entities world->Clear(); // Load the next map Call_ChangeMap(changename); // Resume garbage collection System::GCResume(); /* if (VRRules::IsVREnabled()) { VR::EnableCamera(); } */ // Resume the clock Time::Resume(); changename = ""; } // Update the app timing Time::Update(); // Render the world world->Update(); world->Render(); if (context != NULL) { #ifdef VR_ENABLED context->SetBlendMode(Blend::Alpha); auto t = Math::Round(Time::UPS()); context->DrawText("FPS: " + String(t), 2, 2); //Refresh the screen VR::MirrorDisplay(context); context->Sync(); #else //Refresh the screen context->Sync(true); #endif } return true; } void App::ChangeLevel(const std::string& pName) { changename = pName; } }
  6. I was working on my VR project this weekend and came across something regarding world clearing/context going nullptr when you go to change the map. The code below is a lua example of this, but if you were to re-write this in C++, the debugger will stop at the first reference of the context. Hit space on the keyboard to call the restart. If you tried when VR is not enabled, it'll work fine. --Set the application title title="VR Template" --Create a window local windowstyle = 0 local winwidth local winheight local gfxmode = System:GetGraphicsMode(System:CountGraphicsModes()-1) if System:GetProperty("devmode")=="1" then gfxmode.x = math.min(1280,gfxmode.x) gfxmode.y = Math:Round(gfxmode.x * 9 / 16) windowstyle = Window.Titlebar+Window.Center end window=Window:Create(title,0,0,gfxmode.x,gfxmode.y,windowstyle) --Create the graphics context context=Context:Create(window,0) if context==nil then return end --Create a world world=World:Create() --Load a map local mapfile = System:GetProperty("map","Maps/start.map") if mapfile~="" then if Map:Load(mapfile)==false then return end prevmapname = FileSystem:StripAll(changemapname) --Send analytics event Analytics:SendProgressEvent("Start",prevmapname) window:HideMouse() end while window:Closed()==false do if window:KeyHit(Key.Escape) then return end if window:KeyHit(Key.Space) then changemapname = "start" end --Handle map change if changemapname~=nil then --Pause the clock Time:Pause() --Pause garbage collection System:GCSuspend() --Clear all entities world:Clear() --Send analytics event Analytics:SendProgressEvent("Complete",prevmapname) --Load the next map if Map:Load("Maps/"..changemapname..".map")==false then return end prevmapname = changemapname --Send analytics event Analytics:SendProgressEvent("Start",prevmapname) --Resume garbage collection System:GCResume() --Resume the clock Time:Resume() changemapname = nil end --Update the app timing Time:Update() world:Update() --Render the world world:Render() --Refresh the screen VR:MirrorDisplay(context) context:Sync() end Again, it throws an exception at VR::MirrorDisplay stating something about the context pointer.
  7. If I'm seeing this correctly, the volume effect isn't baked within the cubemap reflection. Keep in mind that the probes only do simple static reflections and minor stuff is ignored. Try Srceen space reflections if this is an issue.
  8. Super stoked. Is the new beta going to be Leadwerks with the forward renderer or a new Turbo build? Either way, if it'll work on my AMD card, I'll be sure to give it a try.
  9. Super stoked! I'm getting ideas and plans ready for another project and this will certainly help visually and performance wise. I adore the box light idea.
  10. You need to change the execution path in your project settings. This was talked about before on the programming board.
  11. Very cool, make it happen then. I'm sure people here would pay for that update. ?
  12. Like I said previously, anything that can be swapped into Leadwerks in favor of speed is a positive. It also gives you real world tests for Turbo.
  13. Please confirm this feature will be in Leadwerks in the future.
  14. If you're still willing to Port this to Leadwerks, curious how much of a performance boost this will be. The lighting seems nicer than what's present now.
  15. Was going through files, and I found a set of C++ files that have pretty much 1 to 1 (If not, better) game Actors I've wrote for Cyclone. You attach each object to a class in the editor via a lua script. Keep in mind that this code works with existing Lua code, and works really well with something like Luawerks. How this is set up is that you have all the "shared" code in the root source directory and then make a sub directory for your game. I didn't include the VS soultions nor the cbp projects, just add every cpp/header file in and it **should** work. I haven't tried this in a year, but should be good sample code. I'm not sure if I already shared this, but if not enjoy! le_cppactorcode_18.06.22.zip
  16. I got rid of my older machine with the 750ti. My Windows machine has the RX480 while my Linux box as a cute little 1050ti. When I get a chance, I'll update my hardware profile. ? Granted, I didn't play with LE on my RX much outside of VR. Noticed a performance boost on the AI and Events map with visual odds that I took was more on AMDs part. I recall not being happy with The Zone and pin pointed it to do with the amount of objects in the cameras view cone while I was trying to get the map to work with VR. I understand and respect you not wanting to back engineer the engine, and that's cool. Use your new knowledge from Turbo to make Leadwerks faster and I'll be happy to give it another look Maybe you can also lower the overhead with other classes (like bones) while you're in there as well. I'm eager await what you have in mind and end up doing.
  17. I have mix feelings about the new approach on the LE5 idea. It makes totally sense to support Leadwerks as Turbo is developing in the background. Totally focusing on the future now will make Leadwerks seem like abandon ware (although not really.) Leadwerks 3.1 - 4.x was designed to work with the Steam ecosystem which is a huge mess beyond belief. Since this site has steam intergration, you could resell LE5 at the $99/$199 price, the subscription model (good idea to test this sooner) and offer existing owners of LE4 on Steam a discounted price. I used to be a big Steam supporter, but due to recent events, I encourage people to go elsewhere. As for the features of this LE5, I recommend actually porting the new architecture for performance instead of new visuals. I always have and still have performance issues with Leadwerks to a point I shelved my projects in wait of Turbo and free time. Porting the architecture will also allow you to see if it will hold up in real world use. I personally don't care how you end up making LE faster if porting the architecture is a project within itself, but LE should see a performance update. The Zone should run better then it currently does in my opinion. In the end, it's your call as always. ?
  18. Not just assets are there, Luawerks (a back end framework) is 50% off at $4.99/USD! Use this to cut hours of devtime with your tournament projects. There is a bug tracker (currently no reported bugs) and mini articles over on GitHub. Any questions, I'm just an email away and I'll get back to you as soon as I can. ?
  19. I wrote an entire essay explaining my statement then realized/remembered that Turbo and LE share the same code base. So even if LE bit rota over time, you can't share the code anyway due to it containing turbo code. Sorry. ?
  20. I hope the end product of this will take the ease of use of Leadwerks with the speed of Turbo. What I'm saying, please keep the level csg editor, quick asset importing, easy to read API, mutliplat support and all those aspects that made me purchase LE in 2014 or so. Also, no disrespect to the artist of the logo, but I found it screaming "riced up Honda Civics" than "very efficient game engine." when I first saw it. I think the gold is nice versus the silver with LE logo so it hints the two are some what related (unless you didn't want that then oops..) So what is going to become of this site? Will this just be turned into turboengine.com or will LE and Turbo co exist? Will LE become an entry level engine with a lower base price, or maybe consider open source? I hate for LE to be deprechated and/or purged from existence like LE2 was handled. I have your engine to thank for getting me invested more into low level code, and the people I've met and learned from here, but I see it hard the two existing in this point in time. It's engine, you do what makes the most sense. Also, is Turbo Game Engine another piece of software from Leadwerks Software, or your company name is changing too? Sorry for all the questions, just curious on where you plan to take things.
  21. Optimize lighting and shadows and fix/reduce shadow banding. LE5 is already better than LE4 due to it not slowing down after a few objects and skeletons. Looking forward to the final product.
  22. Why are you running Windows Vista? Does Vista even have OpenGL4 driver support?
  23. Thanks for the insight Mack, I recall trying to use dofile without sandboxing and it wouldn't work. But your advice is much better than mine, cheers!
  24. Please show an example of how you wish to do something. You might need to find another way of your implementation.
×
×
  • Create New...