Jump to content

All Activity

This stream auto-updates     

  1. Past hour
  2. Reading a book, on how to make idies games, mentions that the biggest failure is that motivation fades, and it is due to several factors. A very big project: At this time most people come from playing AAA games, this implies that the project covers a lot and instead of creating things this is in a learning process so the project ends up stopped, in the garbage. Then it says that people who have grown up with games from the 50's, 60's, have greater ease in creating a game, and that's where I get to understand why I'm not passionate about 2D games. I didn't grow up at that time. So he says, make a very small game, simple, unless you have enough money to invest, not only in powerful engine, but in human talent. This is where I get stuck, I've been through a great learning process, but there's always something new to learn, the problem is that this has no end, so doing something simple is the key. Do you have any suggestions, they are welcome. Translated with www.DeepL.com/Translator
  3. Today
  4. Thanks for info. Sorry to hear about cryo level.I don't know what to say, not sure if level redo will fix the problem but probably worth a try.
  5. Big progress with Vulkan!

    1. Show previous comments  1 more
    2. Josh

      Josh

      It's very hard stuff but I am getting there.

    3. ErhanK

      ErhanK

      great! we need multiple platforms. :)

    4. gamecreator

      gamecreator

      So.... 1000x faster than Leadwerks 4, right?  😏  Good job regardless.

  6. I think I don't have these buttons set up in the cryo level, just the test levels. I still cannot work with the cryo level and it looks like I will have to rebuild which I wouldn't mind anyway. The code here is not really tied to the code graph. You can call it in code as normal. If you wanted to unlock the door you can just get a reference to the the button that is linked to the door through code and call the same unlock function yourself. You will know how to get a reference to an object I think? Get it from setting up a link via dragging entity onto a public field of the object from which you want to control the target (know what I mean?), or find it by scanning the world for named object (possibly bad performance). Sometimes I will set up an invisible control object (CSG item with invisible/editor-only material on it) if I want to control things in code but have the object visible to editors on the map. -- Get a reference to the self.cryo_room_door_button by whatever means first. if type(self.cryo_room_door_button.script.Unlock)=="function" then self.cryo_room_door_button.script:Unlock() end -- door button should now response to user pressing it. -- You could also open the door without user by calling similar functions on the door itself or calling unlock then open on the button. -- If things done out of order or going round the back then user may not see what expect. E.g. button may say not open but door could be open. Note: things may still be open to some changes. Note: I check the function exists on the script of the object before calling it for safety. Note that in the existence check it is .Unlock(with a dot) but in actual call it is :Unlock (semi-colon). You probably know all this. Maybe you want some more specific info. Just let me know. The doors I was going to avoid being manually open and force opening by a press button which can then open whatever door it is linked to even if has multiple parts.
  7. This is nice. Im not a fan of the flow graph , but can be usefull for small things as above. How can i trigger that flowgraph unlock door from code ? I want to unlock the door from the VR level for example when a command is executed.
  8. I removed the TEST_STATE , this was design to load levels during development for testing proposes.But seem it was not used by most. There is a new Main.lua.orig which is the unmodified Main.lua you get from a new project. Want to use the editor for testing development, rename/copy the Main.lua.orig over the game Main.lua and use editor as usually. Want to test inside game, copy back the game modified Main.lua. Want to change levels in game: modify gworld file do local _={player={1,{y=1.2809765338897705,x=-2.2399992942810059,z=-1.920012354850769} etc After the player={ insert the level you want to load (1,2,3,4). I think this is good enough for our purposes. Added back the intro text boxes and fade effect for every level.
  9. image.png.aefab4dcd63b0076b396647ab9643575.png

    926 hours 😶

    1. GorzenDev

      GorzenDev

      congratz. :D

      you are almost there ;)

      LEHours.png.6c250cfc65d59de2a2f0e7c931c06bf2.png

    2. gamecreator

      gamecreator

      Holy f*ck you guys.  I mostly spend time coding and designing levels elsewhere (like randomly generating dungeons).  I wish there was a way to figure out how many hours I spent coding for Leadwerks among all my projects.  Maybe there is.

  10. Well, it would just maintain the same offset that exists when the joint is created. This brings up a good point though, that kinematic joints probably could just use the entity position automatically when they are created.
  11. Interlinked generic lockable toggle button with flowgraph controlled inputs outputs. These are the same buttons. The on/off state of one unlocked button operating the locked/unlocked state of another which then (in this case) acts on the doors, controlling both at once. Flowgraph based maps can be a problem at times (losing connections on changes) but in this scenario with quite generic objects it seems an attractive solution. I'll see how it goes, can always recode to work against references instead. Heres the flow graph. The lights are not fully complete but were going to more clearly indicate that the door was in a locked state at a distance.
  12. Excellent. Starting to look a lot more solid now. Better first impression. Good work!
  13. What happens if the child entity is offset from the joint position? For example, the joint is made at 0,0,0 but the child exists at 100,100,100? Or if I move the object with SetPosition() after I have assigned it to the joint?
  14. Yesterday
  15. kuznec.fbx Your FBX file has no vertex normals. For a quick fix, make sure vertex normals are being exported with your FBX file. I have already made the necessary changes to fix this issue, so Josh may want to contact me. Send email to my hotmail address, because my hosting provider is currently experiencing a service interruption.
  16. This could be true. I did some searches and one response said that it depends on if you can put it to use for your engine or game. Wiki says something similar:
  17. No, I don't consider myself a real programmer, that is to say the magic is done by the engine, I have no idea how to create a light, I have no idea how that light casts shadows on a static or dynamic mesh, I think that in this era of globalization we are made to believe that we are programmers when we use powerful tools such as Leadwerks, where the greatest work is already done, on the other hand we are users, creators of possible games, but the programmer in all this riddle is really you, the one who has the necessary tools for people like us to think we are programmers and create something fun. Translated with www.DeepL.com/Translator
  18. You're a real programmer, I just have more experience writing renderers.
  19. The best wishes in this project will surely be very pleasant results for users like us who are not real programmers.
  20. Our new engine makes speed gains in a different way and I don't think Vulkan will make anything faster at all, honestly, over what the engine could do with OpenGL 4.3. We already have zero driver overhead, but Vulkan is more widely supported and the brand is synonymous with speed in the customer's mind. I know this because when I talk to people in person the first thing they say is "does it use Vulkan?" It will be a lot faster than Leadwerks 4 but so was the OpenGL implementation. Using Vulkan does not automatically make anything faster. No one will listen to me if I try to argue with that, which is fine, because I am just going to let everyone else mess up and I will make the fastest engine.
  21. I updated the menu to display a map GameMaps/menu/level ( its actually the Maps\Test\Cinematics\cinematic_test3.map) , no more static backdrop. Got everything working Continue/New Game/Credits. Continue New Game Options Credits Exit Think is almost done , only thing that is still needed is to add different animation for New Game and Continue in that map. Delete gworld file from disk before testing this , so the new version is generated i had to update that file.
  22. ErhanK

    Baked lighting

    Is it correct to add the Baked lighting map from the blender cycles as an emission and diffuse shader to the leadwerks? I tried, but there's no decal on it. How would it be? Would it give such an image? Anybody try anything like that?
  23. Do you already know if it will be faster than OpenGL and if so, by how much? Or is that subject to testing?
  24. The latest design of my OpenGL renderer using bindless textures has some problems, and although these can be resolved, I think I have hit the limit on how useful an initial OpenGL implementation will be for the new engine. I decided it was time to dive into the Vulkan API. This is sort of scary, because I feel like it sets me back quite a lot, but at the same time the work I do with this will carry forward much better. A Vulkan-based renderer can run on Windows, Linux, Mac, iOS, Android, PS4, and Nintendo Switch. So far my impressions of the API are pretty good. Although it is very verbose, it gives you a lot of control over things that were previously undefined or vendor-specific hacks. Below is code that initializes Vulkan and chooses a rendering device, with a preference for discrete GPUs over integrated graphics. VkInstance inst; VkResult res; VkDevice device; VkApplicationInfo appInfo = {}; appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; appInfo.pApplicationName = "MyGame"; appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0); appInfo.pEngineName = "TurboEngine"; appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0); appInfo.apiVersion = VK_API_VERSION_1_0; // Get extensions uint32_t extensionCount = 0; vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr); std::vector<VkExtensionProperties> availableExtensions(extensionCount); vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, availableExtensions.data()); std::vector<const char*> extensions; VkInstanceCreateInfo createInfo = {}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; createInfo.pApplicationInfo = &appInfo; createInfo.enabledExtensionCount = (uint32_t)extensions.size(); createInfo.ppEnabledExtensionNames = extensions.data(); #ifdef DEBUG createInfo.enabledLayerCount = 1; const char* DEBUG_LAYER = "VK_LAYER_LUNARG_standard_validation"; createInfo.ppEnabledLayerNames = &DEBUG_LAYER; #endif res = vkCreateInstance(&createInfo, NULL, &inst); if (res == VK_ERROR_INCOMPATIBLE_DRIVER) { std::cout << "cannot find a compatible Vulkan ICD\n"; exit(-1); } else if (res) { std::cout << "unknown error\n"; exit(-1); } //Enumerate devices uint32_t gpu_count = 1; std::vector<VkPhysicalDevice> devices; res = vkEnumeratePhysicalDevices(inst, &gpu_count, NULL); if (gpu_count > 0) { devices.resize(gpu_count); res = vkEnumeratePhysicalDevices(inst, &gpu_count, &devices[0]); assert(!res && gpu_count >= 1); } //Sort list with discrete GPUs at the beginning std::vector<VkPhysicalDevice> sorteddevices; for (int n = 0; n < devices.size(); n++) { VkPhysicalDeviceProperties deviceprops = VkPhysicalDeviceProperties{}; vkGetPhysicalDeviceProperties(devices[n], &deviceprops); if (deviceprops.deviceType == VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU) { sorteddevices.insert(sorteddevices.begin(),devices[n]); } else { sorteddevices.push_back(devices[n]); } } devices = sorteddevices; VkDeviceQueueCreateInfo queue_info = {}; unsigned int queue_family_count; for (int n = 0; n < devices.size(); ++n) { vkGetPhysicalDeviceQueueFamilyProperties(devices[n], &queue_family_count, NULL); if (queue_family_count >= 1) { std::vector<VkQueueFamilyProperties> queue_props; queue_props.resize(queue_family_count); vkGetPhysicalDeviceQueueFamilyProperties(devices[n], &queue_family_count, queue_props.data()); if (queue_family_count >= 1) { bool found = false; for (int i = 0; i < queue_family_count; i++) { if (queue_props[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) { queue_info.queueFamilyIndex = i; found = true; break; } } if (!found) continue; float queue_priorities[1] = { 0.0 }; queue_info.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO; queue_info.pNext = NULL; queue_info.queueCount = 1; queue_info.pQueuePriorities = queue_priorities; VkDeviceCreateInfo device_info = {}; device_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO; device_info.pNext = NULL; device_info.queueCreateInfoCount = 1; device_info.pQueueCreateInfos = &queue_info; device_info.enabledExtensionCount = 0; device_info.ppEnabledExtensionNames = NULL; device_info.enabledLayerCount = 0; device_info.ppEnabledLayerNames = NULL; device_info.pEnabledFeatures = NULL; res = vkCreateDevice(devices[n], &device_info, NULL, &device); if (res == VK_SUCCESS) { VkPhysicalDeviceProperties deviceprops = VkPhysicalDeviceProperties{}; vkGetPhysicalDeviceProperties(devices[n], &deviceprops); std::cout << deviceprops.deviceName; vkDestroyDevice(device, NULL); break; } } } } vkDestroyInstance(inst, NULL);
  25. Downloading Vulkan SDK...

    1. aiaf

      aiaf

      Go go, hope vulkan has a good api design, I suspect will be a lot to learn 

  26. UPDATE: Ran the demo on my Linux machine which has a 1050Ti. Everything fine there. This has to do with light quality being set to medium or lower, and might be AMD exclusive. If there are any other Windows+AMD folks to confirm this, let me know!
  1. Load more activity
×
×
  • Create New...