Jump to content

All Activity

This stream auto-updates

  1. Yesterday
  2. 1 download

    This is a simple fluid simulation I use to create looping animated water textures from a seed image. The original seed image has been upsampled 2x, and the code now generates an animation twice as long as the original. BlitzMax is required to compile this.
  3. Okay, so should these tutorials be programming tutorials, or should they use a component that has been added into the default components, and explain what all the properties do? Are they "how to code" or are they no-code tutorials that show how to set up these situations?
  4. If uniforms are set per-material, then all the shaders in the family are expected to have the same uniform variables, which is not true in the general case (I guess?), so I'm not sure if this is the best way to do it. After this question I wonder a bit about how does a Camera::SetUniform work right now, because: 1. It obviously sets the variables for the currently used post effects, but it's not clear if the variables passed will be also applied after you call for Camera::ClearPostEffects, Camera::AddPostEffect. The same goes to materials with per-instance uniforms - what happens to the previously set variables after you call for Material::SetShaderFamily with a completely different set of uniform variables? 2. Post effects are a sequence of shaders and in Camera::SetUniform you pass an index and a name. I suppose that the index here is the index of a shader in the post-processing sequence and the name is the uniform variable name inside it, but it's hard to tell right from the interface. If this index is the index of the shader, then the user is required to keep track of the post-processing sequence while dealing with Camera::SetUniform, which can be so complex in some scenarios that a complete re-initialization of the camera and post effects will seem to be a more preferable way of dealing with it. The question seems to be easy, but it's really not My guess is that it will be more straight-forward to have access to some kind of a Shader instance with Shader::SetUniform methods from both ShaderFamily and PostEffect rather then setting it through Material or Camera. You load the ShaderFamily/PostEffect, find the right Shader instances, manipulate the variables as long as needed, repeat.
  5. 0.9.9 Custom shader families are finished. I simplified the user hook with a single Surface structure: void UserHook(inout Surface surface, in Material material) I might still go back through and correct some of the inconsistencies in the name. For example the Material structure has a property called emissiveColor but the Surface structure calls it emissioncolor.
  6. 0.9.9 Entity color property can now be modified per-channel when multiple entities are selected that have different colors, without changing the color channels that are conflicted.
  7. 0.9.9 @klepto2's volumetric lighting post-process effect has been added. See Effects/VolumetricLighting. I made my own modifications to it, and set it so the alpha channel of the light color can be used to control the strength of the volumetric effect. Big thanks and much appreciation are owed in this collaborative effort!
  8. If you are loading content like that, wouldn't the bottleneck be the hard drive read speed, in which case multiple threads would make it slower?
  9. 0 downloads

    Little component that can be used for Particle Emitter that should be deleted in time Temporary - will component keep entity pointer to delete it once time is out Reducing Effect - decrease particles Velocity and Turbulence with time Duration - time before entity pointer will be deleted Case uses: explosions, blood hits, bleeding effect etc.
  10. Thanks and it is very good idea ! I am for somewhat as snippet of codes for showing to "how i do make a game" on level from basic to advanced Because of beginners need all that to start something with Ultra Engine.... Hope that will make this one ! Good luck and I am looking forward to this Happy coding !
  11. I cant take all the credit for the gameplay ideas. I trawled thru an old Leadwerks topic where everyone was requesting what they wanted a tutorial on. I didn't ask for any 2D tutorials as I think Ultra Engine's strenght is in 3D.
  12. Can we please have a way for multithreaded resource loading eg. models, textures, sounds. I think it will get quite slow when stacking up a lot of resources to be loaded on the main thread, not to mention that you can't render anything while this is occurring. Ideally, a thread pool class would be useful for this.
  13. Leadwerks has a cooler spelling Ultra isn't a pain to properly pronounce
  14. Oh I see, you mean the file selection dialog...one moment...
  15. I am not able to produce this error. Does this occur with the standard components? If not, can you please upload the .h / ,lua and .json file for the component that causes this?
  16. After the last update, the editor crashes when I try to remove a file or set a new one.
  17. Last week
  18. 0.9.9 C++ and Lua parsing to generate component definition files is finalized, I think. Here are examples for both languages: C++ #pragma once #include "UltraEngine.h" #include "../BaseComponent.h" using namespace UltraEngine; class ChangeEmission : public BaseComponent { public: bool recursive = false;// "Boolean" float floatvalue;//"Float value" [0, 100] int integervalue;//"Integer value" [0, 100] int option = 1;//"Option" ["Option 1", "Option 2", "Option 3"] WString stringvalue; // "String value" std::shared_ptr<Entity> entity;// "Entity reference" Vec3 color0;// "RGB Color" color Vec4 color1;// "RGBA Color" color Vec2 v2;// "Vector 2" Vec3 v3;// "Vector 3" Vec4 v4;// "Vector 4" WString soundfile;// "Sound file" sound WString materialfile;// "Material file" material WString modelfile;// "Model file" model WString texturefile;// "Texture file" texture ChangeEmission(); virtual std::any CallMethod(shared_ptr<Component> caller, const WString& name, const std::vector<std::any>& args); virtual bool Load(table& properties, std::shared_ptr<Stream> binstream, std::shared_ptr<Scene> scene, const LoadFlags flags, std::shared_ptr<Object> extra); virtual bool Save(table& properties, std::shared_ptr<Stream> binstream, std::shared_ptr<Scene> scene, const SaveFlags flags, std::shared_ptr<Object> extra); virtual std::shared_ptr<Component> Copy(); }; Lua Luatest = {} Luatest.recursive = false-- "Boolean" Luatest.integervalue = 0-- "Integer value" [0, 100] Luatest.floatvalue = 0.0 -- "Float value" [0, 100] Luatest.stringvalue = "" -- "String value" Luatest.entityvalue = nil -- "Entity reference" Luatest.option = 1-- "Option" ["Option 1", "Option 2", "Option 3"] Luatest.color0 = Vec3(1,1,1,1)-- "RGB Color" color Luatest.color1 = Vec4(1, 1, 1, 1) -- "RGBA Color" color Luatest.v2 = Vec2(0) -- "Vector 2" Luatest.v3 = Vec3(0) -- "Vector 3" Luatest.v4 = Vec4(0) -- "Vector 4" Luatest.soundfile = "" -- "Sound file" sound Luatest.materialfile = "" -- "Material file" material Luatest.modelfile = "" -- "Model file" model Luatest.texturefile = "" -- "Texture file" texture
  19. You may have noticed a slew of workflow-improving features were added earlier this month for UV unwrapping, mesh reduction, and ambient occlusion baking. Now that we finally have the game development system I have always wanted, I am teaming up with @Andy90 and @reepblue—the same team that created the first-person shooter example—to use the new engine to develop a full game we plan to release on Steam. No details yet. Now I am an actual game designer, not just an engine developer. The game is making progress very quickly and I am having a blast with it. I think this gives me a better understanding of your experience and needs as well. Will you play my game? Stay tuned for more information.
  20. @Thirsty PantherThank you for your detailed response. That is extremely helpful.
  21. Now that you have had some time to try on the Ultra name, I am curious what everyone thinks. Which engine has the best name?
  22. Tutorials Editor Interface Textures Materials PBR Tessellation and displacement Models - How import, How convert to Mdl, Apply a texture, Load animations, Remesh, collision mesh, LOD Shaders Particles Probes Decals Project tab navigation and uses of. Scene tab navigation and uses of. How to add a component to a model. How to run your game (Lua). Project Manager- How creat a project, update a project, use a template. Terrain- How to create, How to sculpt, paint, smooth, add foliage, rocks etc World settings- How to modify ambient light, How to add a skybox, How to add fog, How to add effects. Asset Library- how to add models, textures and sounds from the asset library. Options menu- How to set general settings, video, veiwport, projects, material and project settings. Publish- How to finalize your game. Level Design Models Translate tool Rotate tool scale tool Carve tool Hollow tool Brushes Creation Edit faces Tessellation and displacement Material painting Edit vertices Environment settings Global ilumination How to build a navmesh Gameplay Components Component properties Flowgraph Exposing component properties from code to the editor Moving platforms, sliding doors. Push button/ switches to open/close a door, switch a light on and off. "E" to grab/ hold objects. HUD for gun sights, health, ammo and score Health kit - health regeneration Ammo box - ammo replenishment Raycast for guns projectiles High score table How to change maps Simple quest system eg kill 10 rats Simple Inventory system Simple crafting system Teleport system Security camera (camera to texture) Enemy spawning Different sounds (footsteps) on different surfaces. Gravity gun Jetpack on player. Hand gernade with damage and physics effect. Ladder climbing. Weather effects, Rain/snow. Picking up a new weapon. NPC dialog system. Basic skill tree. Swimming when in water. Checkpoints. A simple turret that shoots at the player.
  23. 0.9.9 Initial implementation of C++ header parsing is done. Your header files should look something like this: #pragma once #include "UltraEngine.h" #include "../BaseComponent.h" using namespace UltraEngine; class ChangeEmission : public BaseComponent { public: float a = 3;// "A" int b = 30000;// "B" bool recursive = true; // "Recursive" Vec3 color0;// "Color 1" Vec3 color1;// "Color 2" Vec3 color2;// "Color 3" ChangeEmission(); virtual void Activate();//inout virtual std::any CallMethod(shared_ptr<Component> caller, const WString& name, const std::vector<std::any>& args); virtual bool Load(table& properties, std::shared_ptr<Stream> binstream, std::shared_ptr<Scene> scene, const LoadFlags flags, std::shared_ptr<Object> extra); virtual bool Save(table& properties, std::shared_ptr<Stream> binstream, std::shared_ptr<Scene> scene, const SaveFlags flags, std::shared_ptr<Object> extra); virtual std::shared_ptr<Component> Copy(); }; The system will only overwrite JSON component definition files if the "autogenerated" value in the JSON file is set to true, so it should leave your existing files alone unless you delete them manually.
  1. Load more activity
×
×
  • Create New...