Jump to content

reepblue

Developers
  • Posts

    2,524
  • Joined

  • Last visited

Everything posted by reepblue

  1. I'll be sure that I'm the editor's biggest critic.🙂
  2. Back in business since this change. I had a library with the namespace of "Core", and it was causing conflicts. Got an app that can load multiple encrypted packages generated by my own package solution. This weekend I'm going to start the UI layer! Josh, is the code here still good? I'm going to need a Text Field that'll only accept alpha-numeric characters for my console, and I was wondering if the code here will still work or if it needs to be updated.
  3. Congratulations 🎉 Will there be a new dedicated link for the client? I'll probably not be able to upgrade everything until this weekend.
  4. Can we get a Quote String/WString function? I made one in my core static library similar how Leadwerks would have it. I have a terrible time remembering how to format the string to show quotes and this makes it easier. std::string String::Quote(const std::string& s) { return "\"" + s + "\""; } The usage could be something like this: UltraEngine::String str = "Hello World!"; UltraEngine::Print(str.Quote()); Output: "Hello World!"
  5. Regarding the zip file issue... I think they were just bad zips generated by my prototype packaging program. I manually created the zip files and it all works.
  6. Yeah, I'll definitely get back to you. I wanna try reproducing the issue with a simple app. Right now, my application loads packages that are listed in Ultra.json. Who knows, maybe I'm doing something crazy that's causing the package manager to fail.
  7. Yeah, my zip files don't have any passwords on it. I'll try to narrow down my issue tonight/this weekend. Asking because I'm making an application that autosplits my game packages for me and I didn't want to pack things that hurt load times. I'm worried if I use the maximum compression settings, it'll cause problems or slow downs.
  8. I assume this didn't include loading the zip file that had everything first? I'll try lvl8 over my bugcheck map next time. I may need to send you the zips I'm trying to load to make sure that it's not an issue with the zip file. I'll also try a simple program over my sample game app. Maybe I'm doing something wrong, but it's weird that some files load and others don't. Do you have a suggested compression method/mode/level for making game packages?
  9. Not sure. All the contents were present and in the correct location, It's just that the package manager didn't like the files being split apart across multiple zip files. Leadwerks can do this with no problem. I would like to be able to do this as it makes updates to steam a lot faster. This way you're not re uploading the entirety of the game like most Unity users do.
  10. Oh, I zipped those with Maps since they are technically Map files.
  11. Ok, if you package everything into one zip file, it'll work fine. However, if you split the contents across multiple zip files (which is what I was doing) then that's when you have the issue. Try compressing maps, materials, and models in their own zip packages and load each one by itself. I can confirm this isn't working correctly. After reloading bugcheck.map, the idle state is all messed up. (The button top is in the body of the switch)
  12. I'll try my app again and get back to you. Also going to try clearing and reloading the map again. Thanks.
  13. I know I sent you down a rabbit hole with the skeleton issue, but when you're done with that, I'm gonna ask you to zip up the contents and load the maps with everything packaged. Prefabs, and materials assigned to models don't seem to be loading. This map is bugcheck.map. As you can see, materials for brushes are fine, but the materials for models aren't there. Also, prefabs don't seem to load. Skipping Plugin Loading... cyclone_imported Loading package "D:/UltraGame/game/cyclone_imported/data_maps.zip" Loading package "D:/UltraGame/game/cyclone_imported/data_materials.zip" Loading package "D:/UltraGame/game/cyclone_imported/data_models.zip" Loading package "D:/UltraGame/game/core/data_everything.zip" Creating World... Loading shader family "Shaders/PBR.json" Loading font "D:/UltraGame/game/sampleapp/Fonts/arial.ttf" Loading shader family "Shaders/unlit.json" Game has started! Loading shader family "Shaders/Sky.json" Loading posteffect "Shaders/PostEffects/Refraction.json" Loading scene "Maps/bugcheck.map" Loading material "materials/developer/defaultmeshface.mat" Loading shader family "Shaders/Classic.json" Loading texture "materials/developer/defaultmeshface.tex" Loading material "materials/concrete/concrete_modular_floor001a.mat" Loading texture "materials/concrete/concrete_modular_floor001a.tex" Loading texture "materials/concrete/concrete_modular_floor001a_normal.tex" Loading texture "materials/concrete/concrete_modular_floor001a_spec.tex" Loading material "materials/concrete/concrete_modular_wall001b.mat" Loading texture "materials/concrete/concrete_modular_wall001b.tex" Loading texture "materials/concrete/concrete_modular_wall001a_normal.tex" Loading texture "materials/concrete/concrete_modular_wall001a_spec.tex" Loading material "materials/concrete/concrete_modular_ceiling001a.mat" Loading texture "materials/concrete/concrete_modular_ceiling001a.tex" Loading material "materials/concrete/concrete_modular_wall001a.mat" Loading texture "materials/concrete/concrete_modular_wall001a.tex" Loading model "models/characters/generic/generic.mdl" Loading scene "prefabs/test/test_brushparent.pfb" Error: Failed to load scene "prefabs/test/test_brushparent.pfb" Loading scene "prefabs/lights/lightpanel_widehuge_warm.pfb" Error: Failed to load scene "prefabs/lights/lightpanel_widehuge_warm.pfb" Loading scene "prefabs/lights/lightpanel_widehuge_cool.pfb" Error: Failed to load scene "prefabs/lights/lightpanel_widehuge_cool.pfb" Loading material "materials/concrete/concrete_modular_wall002a.mat" Loading texture "materials/concrete/concrete_modular_wall002a.tex" Loading material "materials/plaster/observation_plasterceiling001a.mat" Loading texture "materials/plaster/observation_plasterceiling001a.tex" Loading material "materials/concrete/concrete_modular_wall001f.mat" Loading texture "materials/concrete/concrete_modular_wall001f.tex" Loading material "materials/plaster/observation_plasterwall001a.mat" Loading texture "materials/plaster/observation_plasterwall001a.tex" Loading scene "prefabs/lights/lightpanel_widehuge_cool.pfb" Error: Failed to load scene "prefabs/lights/lightpanel_widehuge_cool.pfb" Loading scene "prefabs/lights/lightpanel_widehuge_cool.pfb" Error: Failed to load scene "prefabs/lights/lightpanel_widehuge_cool.pfb" Loading scene "prefabs/frames/observationframe_512.pfb" Error: Failed to load scene "prefabs/frames/observationframe_512.pfb" Loading scene "prefabs/gameplay/floorbutton.pfb" Error: Failed to load scene "prefabs/gameplay/floorbutton.pfb" Loading material "materials/signage/hazard_boarder.mat" Loading texture "materials/signage/hazard_boarder.tex" Loading texture "materials/signage/hazard_boarder_emission.tex" Loading material "materials/concrete/concrete_modular_floor001e.mat" Loading texture "materials/concrete/concrete_modular_floor001e.tex" Loading material "materials/nature/toxicsime01.mat" Loading texture "materials/nature/toxicsime01.tex" Loading texture "materials/nature/toxicsime01_normal.tex" Loading texture "materials/nature/toxicsime01_spec.tex" Loading material "materials/metal/metalwall_tiled001a_lrg.mat" Loading texture "materials/metal/metalwall_tiled001a_lrg.tex" Loading texture "materials/metal/metalwall_tiled001a_lrg_normal.tex" Loading texture "materials/metal/metalwall_tiled001a_lrg_spec.tex" Loading material "materials/metal/metalwall_tiled001a.mat" Loading texture "materials/metal/metalwall_tiled001a.tex" Loading texture "materials/metal/metalwall_tiled001a_normal.tex" Loading texture "materials/metal/metalwall_tiled001a_spec.tex" Loading material "materials/metal/metalwall_tiled001a_med.mat" Loading texture "materials/metal/metalwall_tiled001a_med.tex" Loading texture "materials/metal/metalwall_tiled001a_med_normal.tex" Loading texture "materials/metal/metalwall_tiled001a_med_spec.tex" Loading material "materials/concrete/concrete_modular_wall001e.mat" Loading texture "materials/concrete/concrete_modular_wall001e.tex" Loading material "materials/concrete/concrete_modular_wall001c.mat" Loading texture "materials/concrete/concrete_modular_wall001c.tex" Loading material "materials/metal/metalfloor_tiled001a.mat" Loading texture "materials/metal/metalfloor_tiled001a.tex" Loading texture "materials/metal/metalfloor_tiled001a_spec.tex" Loading material "materials/plastic/plastictrim001a.mat" Loading texture "materials/plastic/plastictrim001a.tex" Loading scene "prefabs/gameplay/squaredoor.pfb" Error: Failed to load scene "prefabs/gameplay/squaredoor.pfb" Loading model "models/props/lightplatform_end.mdl" Loading material "materials/plaster/observation_carpetfloor001a.mat" Loading texture "materials/plaster/observation_carpetfloor001a.tex" Loading scene "prefabs/gameplay/eballlauncher.pfb" Error: Failed to load scene "prefabs/gameplay/eballlauncher.pfb" Loading scene "prefabs/gameplay/switch.pfb" Error: Failed to load scene "prefabs/gameplay/switch.pfb" Loading scene "prefabs/gameplay/eballcatcher.pfb" Error: Failed to load scene "prefabs/gameplay/eballcatcher.pfb" Loading model "models/signage/signage_frame.mdl" Loading scene "prefabs/gameplay/puzzlebox.pfb" Error: Failed to load scene "prefabs/gameplay/puzzlebox.pfb" Loading scene "prefabs/gameplay/cycloneframe.pfb" Error: Failed to load scene "prefabs/gameplay/cycloneframe.pfb" Loading scene "prefabs/gameplay/cleanser_256.pfb" Error: Failed to load scene "prefabs/gameplay/cleanser_256.pfb" Loading scene "prefabs/gameplay/flashchamberdoor.pfb" Error: Failed to load scene "prefabs/gameplay/flashchamberdoor.pfb" Loading scene "prefabs/gameplay/hexdoor.pfb" Error: Failed to load scene "prefabs/gameplay/hexdoor.pfb" Loading scene "prefabs/gameplay/switch.pfb" Error: Failed to load scene "prefabs/gameplay/switch.pfb" Loading scene "prefabs/lights/observationroom_pointlght.pfb" Error: Failed to load scene "prefabs/lights/observationroom_pointlght.pfb" Loading model "models/environment/pillar_mid.mdl" Loading material "materials/metal/metallift001a.mat" Loading texture "materials/metal/metallift001a.tex" Loading model "models/environment/pillar_top.mdl" Loading material "materials/developer/invisibleramp.mat" Loading texture "materials/developer/defaultgrid.tex" Loading material "materials/developer/defaultgrid.mat" Loading model "models/props/item_dropper.mdl" Loading model "models/props/item_dropper_cover.mdl" Loading material "materials/glass/itemdropper_glass.mat" Loading texture "materials/glass/glasswindow01.tex" Loading material "materials/developer/invisible.mat" Loading material "materials/concrete/concrete_modular_ceiling001b.mat" Loading texture "materials/concrete/concrete_modular_ceiling001b.tex" Loading material "materials/developer/caulk.mat" Loading texture "materials/developer/caulk.tex" Loading material "materials/metal/metalbeam001a.mat" Loading texture "materials/metal/metalbeam001a.tex" Loading material "materials/metal/metalwall_backstage001a.mat" Loading texture "materials/metal/metalwall_backstage001a.tex" Loading texture "materials/metal/metalwall_backstage001a_dot3.tex" Loading material "materials/metal/metalwall_backstage001a_gradient.mat" Loading texture "materials/effects/lightgradient.tex" Loading material "materials/lights/light_backstage.mat" Loading scene "prefabs/gameplay/lightplatform.pfb" Error: Failed to load scene "prefabs/gameplay/lightplatform.pfb" Loading scene "prefabs/gameplay/switch.pfb" Error: Failed to load scene "prefabs/gameplay/switch.pfb" Loading scene "prefabs/gameplay/puzzlebox.pfb" Error: Failed to load scene "prefabs/gameplay/puzzlebox.pfb" Loading scene "prefabs/gameplay/puzzlebox.pfb" Error: Failed to load scene "prefabs/gameplay/puzzlebox.pfb" Deleting material "materials/developer/caulk.mat" Deleting texture "materials/developer/caulk.tex" On a side note, can we get a Widget::SetFont() method if possible? I was manually assigning the font member to change a font of a widget for my splash window, but I had to comment it out on the latest build.
  14. Yep, just about to say. The switches also don't reload. Must be a bone/skeleton issue.
  15. I used design and press shirts 10 years ago. I stopped doing it because it seemed like everyone was doing it and it took a lot of real estate. I also did sublimation over screen printing which removed the issue of the ink cracking but it financially didn't make sense for simple logos and such. They probably "streamlined" the process to accommodate space for the plates and lower skilled employees. If everything is the same, it's less likely to screw up. I'm not a big fan of these websites for a number of reasons. I'm sure you'll find someone who will do custom shirts if the order is in bulk. But I'm not sure you want to share your place with a big box of shirts.
  16. One issue happens when you load the scene, delete it, and then reload the map (or load a different map) on the same pointer. You're looking for missing ball catchers and pedestal buttons (the switches) after the reload. These are the only two models in the game (minus the view model) that have a skeleton. The fog issue can be seen if you stick the camera outside the map. All lvl# have fog applied to them and it seems to be missing. I'm not sure if this is because fog isn't finished or the map loader isn't applying it to the camera. You can notice this by flying backwards out of the map and notice the brush work not being coved by the gold fog color. That glitch I've posted only happened once in lvl8. Last issue that I had noticed was wrong UVs on some CSG based prefabs. Happens if they were rotated. Working late this week but I'll try to get comparison screenshots if needed. It's probably easier for me to notice these things because they were my maps that I've spent a lot of time on. Yeah, my signage used a custom shader for adjusting the emission mask. If I were to "reimagine" the game, I think I could get away using the stock shaders emission mask.
  17. I've found my Leadwerks T-shirt today and although I never wore it because I was worried about the screen printing cracking on a limited item, I would like to be able to purchase an Ultra Engine shirt. Maybe this time we can have it navy blue and on the back it can say something like: "The future of performance is here." Or something. I also still have my sticker!
  18. I noticed this for the first time last night, but none of the maps don't seem to have fog enabled.
  19. Thanks, Think the speed has something to do how the zip is compressed? I used 7z with the -a flag to make the zip. I recently found ZipLib which is a modern C++ zip library that can be used to package games. I only got to compiling it as one static library last night. I also noticed that the package only works if the extension is.zip. in Cyclone, I have my packages as .pak but I understand that this can cause conflicts with package plugins.
  20. I guess I'll have experiment with it more outside debug mode as the application cames to a screeching hault when loading big maps. In reale it's 10x faster. Hopefully this will be easier to do in the future. Kind of shy to learn shaders with them being massive this time around.
  21. Ok, then how would someone make a loading bar or spinner when the map is loading? I recall this being asked around a lot during the Leadwerks days. Would I put the spinner on the separate thread instead since that just needs to rotate/change images? Something else to consider is you probably want background map loading when VR gets implemented. Maybe official level streaming support can come later, idk. I'm more worried about my skinned meshes not reloading and some of my prefabs still have their UVs messed up when it comes to scene loading at the moment than a silly spinny wheel.
  22. I made a prototype map loader tonight. One thing I wanted to do is see if I could break the ice with multithreading and load the scene in a different thread. This way I can at least do a loading bar or a spinner on the loading screen. One thing you can also do is level streaming, but I was getting crashes and other issues when rendering the world in the while loop. On small maps it loaded fine, and it was cool to see the assets slowly load in. But on the bigger maps, it wasn't successful. Also, if you reload a Cyclone map, models with bones/animations (ball catcher, pedestal button) does not load with the rest of the map, You're free to load the Cyclone assets with this demo code. Maybe you can also give a multithread noob some tips on how to make it more stable/actually work right. #include "UltraEngine.h" #include "ComponentSystem.h" using namespace UltraEngine; static std::shared_ptr<Camera> camera = NULL; class SceneLoader : public UltraEngine::Object { std::shared_ptr<UltraEngine::Thread> m_spThread; //std::shared_ptr<UltraEngine::Mutex> m_spMutex; public: std::shared_ptr<UltraEngine::Scene> m_spScene; UltraEngine::WString m_pszScene; std::weak_ptr<UltraEngine::World> m_wpWorld; std::vector<std::shared_ptr<Actor>> m_spActors; SceneLoader() { m_spScene = NULL; m_spActors.clear(); m_spThread = NULL; m_pszScene.clear(); } ~SceneLoader() { m_spScene = NULL; m_spActors.clear(); m_spThread = NULL; m_pszScene.clear(); } static shared_ptr<Object> LoadingThread(shared_ptr<Object> extra) { auto ml = extra->As<SceneLoader>(); return UltraEngine::LoadScene(ml->GetWorld(), ml->m_pszScene); } static shared_ptr<Object> ClearThread(shared_ptr<Object> extra) { auto ml = extra->As<SceneLoader>(); ml->m_spScene = NULL; return NULL; } void Load(std::shared_ptr<UltraEngine::World> pWorld, const UltraEngine::WString& psScenePath, const bool bMultiThreaded = false) { m_pszScene = psScenePath; m_wpWorld = pWorld; // Pause the world GetWorld()->Pause(); // Clear the current scene. m_spScene = NULL; //for (auto& e : m_spActors) //{ // e = NULL; //} if (bMultiThreaded) { //auto mutex = UltraEngine::CreateMutex(); m_spThread = UltraEngine::CreateThread(LoadingThread, Self(), true); while (m_spThread->GetState() != UltraEngine::THREAD_FINISHED) { //mutex->Lock(); // Print spam Print("L O A D I N G . . . "); //mutex->Unlock(); } auto o = m_spThread->GetResult(); m_spScene = o->As<UltraEngine::Scene>(); m_spThread = NULL; //mutex = NULL; } else { m_spScene = UltraEngine::LoadScene(m_wpWorld.lock(), m_pszScene); } if (m_spScene) { // If there's no actors, make this the spec cam. if (m_spActors.empty()) { if (camera) { auto actor = CreateActor(camera); actor->AddComponent<CameraControls>(); m_spActors.push_back(actor); } } } // Resume the world GetWorld()->Resume(); } void Clear() { if (m_spScene) { Print("Clearing scene..."); GetWorld()->Pause(); GetWorld()->SetEnvironmentMap(NULL); GetWorld()->SetEnvironmentMap(NULL, UltraEngine::ENVIRONMENTMAP_DIFFUSE); GetWorld()->SetEnvironmentMap(NULL, UltraEngine::ENVIRONMENTMAP_SPECULAR); m_spScene = NULL; for (auto& e : m_spActors) { e = NULL; } m_spActors.clear(); GetWorld()->Resume(); } } std::shared_ptr<UltraEngine::Scene> GetScene() { return m_spScene; } std::shared_ptr<UltraEngine::World> GetWorld() { return m_wpWorld.lock(); } }; static std::shared_ptr<SceneLoader> sceneloader; const WString GetStringArg(nlohmann::json& j3, const WString& defaultval = "") { if (!j3.is_null()) { return JSONGetString(j3); } return defaultval; } const bool IsFlagSet(nlohmann::json& j3, const bool defaultval = false) { if (!j3.is_null() && j3.is_boolean()) { return j3.get<bool>(); } return defaultval; } int main(int argc, const char* argv[]) { auto args = ParseCommandLine(argc, argv); //Get the displays auto displays = GetDisplays(); //Create a window auto window = CreateWindow("Ultra Engine", 0, 0, 1280, 720, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR); //Create framebuffer auto framebuffer = CreateFramebuffer(window); //Create world auto world = CreateWorld(); camera = CreateCamera(world); camera->SetFov(70); camera->SetPosition(0, 0, 0); camera->SetRotation(0, 0, 0); sceneloader = std::make_shared<SceneLoader>(); auto mapfile = GetStringArg(args["map"], "Maps/start.map"); auto multithread_load = IsFlagSet(args["multithread"], false); sceneloader->Load(world, mapfile, IsFlagSet(args["multithread"], multithread_load)); //Main loop while (window->Closed() == false and window->KeyHit(KEY_ESCAPE) == false) { if (window->KeyHit(KEY_ENTER)) { Print("Reloading map."); sceneloader->Load(world, mapfile, multithread_load); camera->SetPosition(0, 0, 0); camera->SetRotation(0, 0, 0); } world->Update(); world->Render(framebuffer); } return 0; } Also, @SpiderPig said something about the fog being broken and here's a picture of it. Load any lvl# map of Cyclone to notice no fog in the void. I got this artifact randomly and took a screen of it.
  23. Loading classic assets isn't working the way it should. In my project, I'm unable to load anything when I point to my Cyclone packages but in this example, it just fails to load materials. #include "UltraEngine.h" using namespace UltraEngine; int main(int argc, const char* argv[]) { //Load Package auto pkg = LoadPackage("classic_assets.zip"); if (!pkg) { Print("Failed to read package!"); return 1; } //Get the displays auto displays = GetDisplays(); //Create a window auto window = CreateWindow("Ultra Engine", 0, 0, 1280, 720, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR); //Create a world auto world = CreateWorld(); //Create a framebuffer auto framebuffer = CreateFramebuffer(window); //Create a camera auto camera = CreateCamera(world); camera->SetClearColor(0.125); camera->SetFov(70); camera->SetPosition(0, 0.64f, -1.28); auto scene = LoadScene(world, "Maps/start.map"); if (!scene) { Print("Failed to load scene!"); return 1; } //Main loop while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) { world->Update(); world->Render(framebuffer); } return 0; } classic_assets.zip
  24. I've made a new pull request to fix the missing semicolon and changed my note about the Eof define., Not sure if you corrected it already on your end or not.
  25. Forgot to add a semicolon on line 669. My example never called the function so it was missed. Also, I guess LoadJSON got thanos snapped from the API...
×
×
  • Create New...