Quantcast
Channel: Urho3D
Viewing all 77 articles
Browse latest View live

Bitweb published on Steam

$
0
0

Reposted from Urho3D forum post. The game is made by practicing01.

Bitweb.jpg

Congrats on getting to Steam!


Lua autocompletion generator updated to 1.4

New theme switcher for website

$
0
0

We have now a dark theme for the website to ease reading our documentation pages at night! The theme can be selected by using the theme switcher. The theme switcher uses experimental filter feature available in the Webkit-based and Firefox browsers. It also requires JavaScript enabled for it to work.

The functionality has been tested thoroughly on the above mentioned browsers. The functionality may or may not work on other browsers, sorry. But let us know about it.

Terrain editor updated to use Urho3D 1.4

$
0
0

JTippetts has updated his terrain editor project to use the latest version (release 1.4) of Urho3D library. The project is a simple terrain editor built using Urho3D library and its exposed Lua API. It now has shaders that works for D3D9, D3D11 and GLSL. The newest addition in the project are 8-detail tri-planar shaders for both HLSL and GLSL. The tri-planar shader uses the detail blending between layers. It requires more powerful GPU but gives better result than normal-mapping shader. See the difference for yourself.

Normal

normal-map.jpg

Tri-planar

tri-planar.jpg

Infested: a survival horror and investigation game

$
0
0

Reposted from Urho3D forum post. The game is made by Dave82 single-handedly in 5-6 months of his spare time. Amazing.

Video clip

Screenshots

Infested-1.jpg

Infested-2.jpg

Infested-3.jpg

Infested-4.jpg

Infested-5.jpg

Infested-6.jpg

Infested-7.jpg

Urho3D 1.5 release

$
0
0

Source package

Binary package

Changelog

  • Database subsystem with either SQLite or ODBC support.
  • Localization subsystem.
  • Improved the navigation / crowd navigation API and examples.
  • SSE and animation performance optimizations.
  • Enable BT_USE_SSE on Linux and MinGW platforms, enable BT_USE_NEON on Android and Raspberry-Pi platforms.
  • Urho3D macros such as OBJECT, EVENT, HANDLER renamed to have URHO3D_ prefix to prevent ambiguity with other libraries.
  • Double support to Variant, Deserializer, Serializer & JSONValue. Store Lua object attributes accurately as doubles.
  • Support for moving nodes & components between scenes, or creating components “sceneless” and moving into a scene later.
  • Cubemap loading from DDS files.
  • Refactored the object class registration mechanism to store the object’s base class for “Is this class derived from this” queries.
  • Optional “raw” Lua file loading through direct filesystem access for easier debugging.
  • Configurable blend mode in renderpath quad commands.
  • UV coordinates added to raycast results.
  • Allow submitting bare function names instead of full signature to Execute() & DelayedExecute() in AngelScript, similar to specifying event handler functions.
  • Allow negative scale for nodes.
  • Culling camera optimization for viewports, to allow rendering multiple viewports with the same culling data set.
  • Refactor Urho2D animation playback. Add optional Spine support (user must supply Spine runtime.)
  • Refactor Urho2D sprite atlas handling.
  • CollisionShape acquires model resource from StaticModel in same node automatically if collision model undefined.
  • Request the high-power GPU on AMD multi-GPU setups.
  • API for programmatic animation track & keyframe creation.
  • Added AnimationController IsAtEnd() function.
  • Added “remove on completion” mechanism to AnimationController.
  • Added function to remove all components of type to Node.
  • Added GetParentComponent() function to Node.
  • Added resource memory usage stats to DebugHud.
  • Support for ScanDir() on Android.
  • Improve Variant / VariantMap bindings on Lua.
  • Improve internal mechanisms for Lua bindings, e.g. store Urho3D context inside Lua state global table.
  • Improve API for kNet connection stats.
  • Improve AngelScript GetChildrenWithClassName() to return also derived classes.
  • Improve UI tab behavior
  • Improved navigation debug geometry
  • Improve ConvexCast by taking into account CollisionShape’s offset position & rotation.
  • Spline class cleanup & improvements, including linear interpolation mode, and looping Catmull-Rom mode.
  • Refactored JSONValue class to be more JSON-like.
  • Material render order support within a pass.
  • MM_FREE mouse mode, which disassociates cursor visibility from being confined inside the window.
  • Allow doubleclick event in UI over emptiness
  • Make Octree::Raycast() threadsafe.
  • GetGLContext() added to GraphicsImpl on OpenGL to allow the application to perform manual context switching.
  • Fixes for vertex texture fetch on D3D11.
  • Allow optional forced creation of CPU-only vertex & index buffers also in non-headless operation.
  • Unified texture upload behavior: half-float formats need to be provided as such on both D3D & OpenGL. Added float/half-float conversion functions.
  • Automatic generation of intermediate directories in FileSystem::CreateDir().
  • Warn if attempting infinite distance physics raycast. Remove erroneous infinity default value from AngelScript physics raycast bindings.
  • Allow non-strict numeric type to be returned from Variant, e.g. GetFloat() succeeds for an int.
  • Allow to disable PhysicsWorld or PhysicsWorld2D automatic simulation stepping during scene update. When disabled, the physics world can still be stepped manually.
  • Support for manual advancing of value animations.
  • globalVars VariantMap for AngelScript to allow easy cross-ScriptFile parameter passing.
  • Improve ConvexCast() to return distance using the hit fraction.
  • Ensure normalized vertex weights in AssetImporter, and clamp to 4 weights maximum instead of error, by dropping the smallest weights.
  • Configurable layer count in DynamicNavigationMesh to control memory usage.
  • Emscripten ETC1 & PVRTC extension support detection.
  • Emscripten hardware instancing support.
  • emscripten_get_now() for better timer precision and less CPU use.
  • Disable frame limiter Sleep() on Emscripten.
  • Disable audio output in C++ samples where it isn’t necessary.
  • Remove redundant glEnable() / glDisable() calls related to OpenGL texture types.
  • Removed defined_ member variable from BoundingBox, Sphere & Rect in favor of determining the definedness from the bounds being valid.
  • Invalid order checking for Lua binding overloads.
  • Dangerous math class constructors marked explicit.
  • Properly enabled multithreading in GCC/Clang builds.
  • Emscripten toolchain & build related fixes and improvements.
  • Clang tools support in the build.
  • Annotator & script binding extractor skeleton tools in preparation for generated script bindings.
  • Build improvements for CLion IDE.
  • Support Android NDK r10e.
  • Support non-PCH build.
  • Support spaces in path for build.
  • Install d3dcompiler DLL to bin directory for Windows / D3D builds.
  • Improved Urho3D DLL installation logic.
  • More user-friendly operation for missing HTML help compiler or dot.
  • Symlink assets to the build binary directory.
  • Allow installed sample executables to run out-of-the-box on Windows.
  • Reformatting of source code to get rid of indents on empty lines.
  • Script subdirectory in the engine source renamed to AngelScript.
  • Option to build Urho3D without threading (URHO3D_THREADING). Normally disabled on Emscripten but can be enabled for experimental development on browsers with included support.
  • Improved documentation on contributing and 3rd party library policy.
  • Update AngelScript to 2.30.2.
  • Update Assimp to September 2015 revision.
  • Update Bullet to 2.83.6.
  • Editor: setting for new node position preference.
  • Editor: particle editor improvements.
  • Editor: function to assign child nodes into a spline path.
  • Editor: center camera on object with HOME key.
  • Editor: selectable MMB functionality.
  • Editor: language selector and localizations.
  • Editor: Blender hotkeys mode.
  • Editor: HSV color wheel.
  • Editor: event handling refactoring.
  • Editor: 3D debug icons.
  • Editor: make showing IDs optional.
  • Editor: cubemap generation support.
  • Editor: export scene to .obj.
  • Editor: accelerator keys for reset pos/rot/scale.
  • Editor: quickmenu select topmost option with Enter key.
  • Editor: local offset added to spawn editor.
  • Fix missing bindings in navigation / crowd navigation script API.
  • Fix missing Lua bindings for Component class.
  • Fix SplinePath AngelScript bindings.
  • Fix failure to add / remove obstacles due to DetourTileCache queue being full.
  • Fix UI element debug draw.
  • Fix quantized AABB bug with large collision meshes.
  • Fix incorrect viewport size when rendering to both backbuffer & textures.
  • Fix flashing of 2D sprite animations due to misreported animation length.
  • Fix AssetImporter single keyframe animations.
  • Fix GetData() from rendertarget textures on D3D9.
  • Fix handling of lightmap textures in AssetImporter.
  • Fix debug geometry rendering if backbuffer resolve was used.
  • Fix blend mode of Urho2D material getting overwritten.
  • Fix terrain shader quality on mobile devices.
  • Fix partial rendertarget clear on D3D11.
  • Fix URHO3D_PACKAGING build option on Windows shared lib build.
  • Fix PackageFile::GetEntryNames() to return filenames with original case.
  • Fix FXAA3 shader on OpenGL.
  • Fix Depth shader on D3D11.
  • Fix Blur shader.
  • Fix shader code which attempts to use 3D textures on GLES.
  • Fix objects getting removed from physics simulation due to zero Node scale on some axis.
  • Fix line height of included SDF fonts. Fix corrupt rendering if Text3D changes font from SDF to non-SDF or vice versa.
  • Fix inaccurate terrain occlusion.
  • Fix ValueAnimation resource not loading properly.
  • Fix RigidBody2D body type enum.
  • Fix RigidBody2D & CollisionShape2D to be resilient of the add order.
  • Fix Drawable2D’s not using viewmask in rendering & raycast.
  • Fix Quaternion::FromLookRotation() zero cross product case.
  • Fix RigidBody2D custom mass handling.
  • Fix multiple value children created into XMLElement.
  • Fix TmxFile2D loading according to the updated Tiled spec.
  • Fix integer overflow in Random() functions.
  • Fix potentially unreleased Lua function references.
  • Fix UIElement functions that may crash at UI deletion time.
  • Fix mistaken commenting out of GLSL source code.
  • Fix animation “freezing” due to model being invisible while the animation finishes.
  • Fix Graphics::ResolveToTexture() on D3D11, especially for less-than-fullscreen viewports.
  • Fix potential crash or error during animation event processing, if animations are added/removed.
  • Fix potential null pointer access at navmesh destruction time.
  • Fix not allowing collision geometry from multiple CustomGeometries in the same node.
  • Fix space glyph not getting loaded in some fonts.
  • Fix missing resource dependencies tracking when resource autoloading is switched on during runtime.
  • Fix crash on MinGW build with SSE optimizations.
  • Fix windowed / fullscreen switching on Emscripten.
  • Fix missing URHO3D_API specifiers from some classes / structs.
  • Fix improper rounding during TrueType loading, which would displace some glyphs.
  • Fix incorrect bounding box of StaticSprite2D.
  • Fix lost font texture (OpenGL only) not being handled for Text3D.
  • Fix crash with CollisionChain2D with not enough vertices. Allow to create CollisionChain2D in the editor.
  • Fix crash caused by querying HashMap or HashSet while it’s being cleared.
  • Fix erroneous hardware keyboard input on Android.
  • Fix Android MIPS build.
  • Fix UI element layouting changing the user-defined minimum size.
  • Fix crash in 64bit build when opening the console window.
  • Fix potential edge artifacts in dynamically created spritesheets.
  • Fix Spine animation playback thread safety.
  • Fix mouse button release while cursor hidden not releasing drag elements.
  • Fix too heavy-handed skybox shader Z adjustment on GLES, which caused objects to be obscured by the skybox.
  • Fix protected AngelScript class variables showing up as serializable/editable.
  • Fix ResourceRefList serialization bug caused by String::Split() not returning empty strings.

New and improved class index page

$
0
0

A few days ago one of the contributor has submitted a PR to switch on the generation of the class index page for our doxygen-generated documentation. The new index page can now be accessed under the ‘Classes’ documentation navigation button in our main website. We have improved the usability of this class index page. It is also vieweable using a wide variety of browser viewport sizes like all our pages do. Happy coding!

(Fixed) Documentation pages generation issue

$
0
0

It has come to our attention that all our documentation pages have not been generated correctly recently. All the pages currently do not have the “doc-switcher” which supposedly allows user to switch the version of the page to the corresponding Urho3D release that you are using. The pages also have missing CSS and/or JS files for the “doc-navigation” to function properly. For the former issue, you can workaround to switch the version manually by altering the URL to the version you want to use. e.g. https://urho3d.io/documentation/HEAD/index.html for HEAD version or https://urho3d.io/documentation/1.5/index.html for 1.5 version. You only need to do this once as all the other links found in a documentation page will follow to your chosen version (they are statically generated for one specific version). Unfortunately there is no good workaround for the latter issue. You may find it difficult in navigating some of the documentation pages as the result.

The root cause of the problem has been identified. We have hit a bug in the GitHub Pages which is still not running the latest good version of the Jekyll. The issues are not reproducible locally with the latest version. Therefore, we have decided not to take any action and to wait it out for GitHub Pages to upgrade their Jekyll version. We are sorry for any inconvenience has caused.

UPDATE: It appears that part of the cause was self-inflicted. We had not adapted all our Liquid tags correctly after migrating to Jekyll 3.0. Correcting that seems to make GitHub Pages happy as well.


Unique documentation page title

$
0
0

In order to get a more favourable SEO factor on our documentation pages, we have changed our documentation page generation logic slightly to generate a unique title per page. Instead of using a single title “Documentation” for all the pages like in the past, we now use the value of the Doxygen’s page tile in the HTML title tag. We have also take this opportunity to enable the jekyll-seo-tag gem for our website. So now all our pages, including documentation pages, have auto-generated SEO tags. Hope we have done everything correctly.

Urho3D 1.6 release

$
0
0

Source package

Binary package

Porting notes

If you are migrating your existing project from earlier release version of Urho3D, please read this notes.

Changelog

  • Physically based rendering shaders, techniques, renderpaths and example materials / demo scene.
  • AngelScript support on Emscripten and 64-bit iOS, based on generic bindings.
  • JSON load/save option for scenes, nodes and materials.
  • Tags added to nodes & UI elements.
  • EventProfiler subsystem.
  • Improved mouse mode handling on Emscripten.
  • Texture2DArray class added.
  • RibbonTrail class added.
  • Variance shadow mapping option.
  • Normal offset option as an alternative to reducing self-shadowing artifacts.
  • Arbitrary (freeform) vertex declarations. Legacy bitmask based vertex declarations emulated using them.
  • API-independent graphics class headers. Should ensure Urho library ABI compatibility between builds made on different APIs.
  • PackageFile support also on Android from within the .apk.
  • Optional additive animation blending mode. Based on calculating difference from the bind pose on the fly.
  • Directional billboard mode.
  • Fixed screen size option for billboards & Text3D.
  • Rendering scale added to UI.
  • Context-wide global variable implementation. Replaces the previous script-only global variables mechanism.
  • Aggregate initializers for containers.
  • C++11 binding to Urho events using std::bind.
  • C++11 variadic template version of SendEvent().
  • 64-bit integer support in Serializer / Deserializer.
  • Template versions of math functions.
  • Container class API improvements.
  • SharedPtr / WeakPtr implicit upcasting support.
  • Matrix2 class.
  • Rename escape key name to KEY_ESCAPE for consistency with SDL.
  • Make keycodes lowercase for consistency with SDL.
  • API to get joysticks by name.
  • Detect number of CPU cores on Emscripten if possible.
  • Utilize SDLActivity’s get arguments feature.
  • Configurable minidump write location.
  • Engine parameter for enabling/disabling high DPI window mode.
  • Skip using the engine frame limiter on iOS when targeting 60 fps or above, to prevent erratic frame rate from sleep calls.
  • Text effect enhancements.
  • TmxFile2D & SpriteSheet2D improvements.
  • Sprite2D edge offset parameter for removing bleeding artifacts.
  • Drawable2D distance sorting.
  • Interpolation mode IM_NONE (no interpolation) added to ValueAnimation.
  • Segmented PhysicsWorld ray query for performance optimization.
  • Hit fraction added to physics cast results.
  • Allow custom collision shape subclasses & custom Bullet collision configuration.
  • Expanded data returned from NavigationMesh path queries.
  • Clone() added to Technique, ParticleEffect & ParticleEffect2D classes.
  • SetFontSize() added to Text & Text3D.
  • IntRect / IntVector2 setters & getters added to XMLElement.
  • TryAcquire() added to Mutex class.
  • Vector2 Angle() function added.
  • StringUtils ToInt() & ToUInt() take an optional base parameter.
  • Convenience function Context::CreateObject.
  • Convenience template version of ReleaseResource().
  • Allow Vector4 to substitute for Color in Variant::GetColor().
  • Additional Variant types can function as parameters for AngelScript function / method calls.
  • Improve FixedUpdate event to allow it to originate from either PhysicsWorld or PhysicsWorld2D.
  • Particle effect, animation playback & sound playback finish events.
  • CrowdAgent emits events also from its node.
  • Event sent after cloning a Node or Component is done.
  • b2Contact pointer added to PhysicsWorld2D collision events.
  • Execute DelayedStart() before FixedUpdate() if FixedUpdate comes sooner than the first Update.
  • Allow updating AnimatedModel’s bone bounding box manually.
  • Texture SetData() functions modified to use raw Image ptr for consistency and script bindings simplicity.
  • Graphics::SetDither() for controlling backbuffer dithering, relevant on mobiles with 16bit backbuffer.
  • Graphics::Draw() & DrawInstanced() overload with base vertex index.
  • UIBatch::AddQuad() with arbitrary positions & UVs.
  • Use glReadPixels() to get pixel data from rendertargets on GLES.
  • Highp precision used for GLES shadows.
  • Change deferred shaders to use proper world space to be easier to understand.
  • Send ElapsedTime uniform to UI rendering.
  • Allow overriding culling mode in a pass.
  • SendEvent renderpath command that can be used to interleave custom low-level rendering.
  • TRANSLUCENT lighting option in shaders, which takes absolute value of N dot L.
  • NOUV shader option added for D3D11 compatibility when model data does not contain UVs.
  • Buffer variants supported as shader parameters; will be interpreted as an array of floats.
  • View & inverse view uniforms supplied to shaders. Obsolete camera rotation uniform removed.
  • Skydome shader & technique added.
  • Optional object index vertex attribute that can be used by custom instancing schemes.
  • Optional additional per-instance Vector4 data, supplied to the shaders as extra texcoords.
  • Logging of D3D9 / D3D11 HRESULTs and proper failure check discipline for D3D object creation.
  • Improved occluder sorting.
  • Optimize to not render invisible View3Ds.
  • Optimized Image::Clear() for RGBA case.
  • Optimized SinCos() function added to speed up e.g. billboard calculations.
  • Optimized IsPowerOfTwo() function.
  • Optimization to amount of Frustum::UpdatePlanes() calls in rendering.
  • Update to Civetweb 1.7.
  • Update to GLEW 1.13.0.
  • Update to libcpuid 0.2.2.
  • Update to LuaJIT 2.1.0.
  • Update to LZ4 r131.
  • Update to nanodbc 2.12.4.
  • Update to pugixml 1.7.
  • Update to SDL 2.0.4.
  • Update to SQLite 3.13.0.
  • Update to stb_image 2.12, stb_image_write 1.02, stb_rect_pack 0.08 & stb_vorbis 1.09.
  • Use Readline library if available for Lua & SQLite.
  • Generic ARM on Linux platform support.
  • Android NDK r11 & r12 support.
  • Reduce exposure to SDL headers from Urho’s headers.
  • Support for Codelite CMake invocation.
  • Improved multiarch support in auto-detection.
  • Scaffolding rake task improvements.
  • Build speedup improvements.
  • Avoid SDL when building mini Urho3D for PackageTool.
  • Avoid hardcoding sample list in build script.
  • Output option in PackageTool.
  • Enhance Urho3D-CMake-common module to auto find Urho3D library.
  • Automatical bumping of year in the source code when crossing to a new year.
  • Move to use subtrees for some thirdparty libraries.
  • For downstream use: auto detect Urho3D lib type from build artifact.
  • Refactored mechanism to detect CPU instruction extensions for build.
  • Set PCH flags at target level, not compile unit level.
  • Perform cleanup when installing headers to the build tree.
  • try_run logic to auto-discover build options.
  • try_compile mechanism to verify ABI compatibility of found Urho3D library.
  • SDL build options added: PulseAudio, EGL, Wayland, Mir.
  • LuaJIT related build fixes.
  • Eliminate the need for KNET_UNIX define.
  • Enable class index in documentation.
  • Editor: if original node selected when pasting, do not paste as its child, but rather behave similarly as if performing a Duplicate action.
  • Editor: particle editor improvements.
  • Editor: node & UI element tag editing.
  • Editor: use fixed size billboards for the debug icons.
  • Editor: add gamma correction & HDR rendering toggles.
  • Editor: reorder components, nodes & UI elements by holding down Ctrl when drag-dropping.
  • Editor: fix sharp edges in UI when opacity is reduced.
  • Editor: fix “is enabled” checkbox moving to wrong location when node is edited.
  • AssetImporter: allow saving animations without actual skinned geometry.
  • AssetImporter: allow saving a subset of an animation.
  • AssetImporter: generate non-deforming skinning information when a model has non-skinned subgeometries.
  • AssetImporter: support multiple color & UV channels.
  • Fix various missing script bindings & missing export specifiers for classes.
  • Fix various uninitialized variables.
  • Fix hardware shadow support always returning false on OpenGL after the Graphics headers refactor.
  • Fix wrong UV index in drawable OBJ export.
  • Fix backbuffer not getting cleared when just UI & texture viewports are being rendered.
  • Fix DirExists() on Android.
  • Fix potential crash when using MessageBox from C++.
  • Fix erroneous fog shader uniform being set in some rendering cases.
  • Fix serialization of localized Text elements.
  • Fix use of deprecated usleep() function in favor of nanosleep().
  • Fix UI slider knob behavior when it’s fixed size.
  • Fix toggling mouse visibility right at application start.
  • Fix instancing in HLSL water shader.
  • Fix Android / iOS reporting mouse as grabbed.
  • Fix update event subscription in Material class.
  • Fix window getting maximized after fullscreen -> windowed change on Windows + SDL 2.0.4.
  • Fix bogus SDL joystick registration on Android.
  • Fix AngelScript ScriptInstance variable hot reload. Removes the need for a specific implementation from the editor.
  • Fix OgreImporter animation save & Jack’s walk animation.
  • Fix incorrect enemy orientation on spawn in NinjaSnowWar.
  • Fix insertion of further drawable updates during threaded drawable update.
  • Fix runtime DLL not being installed to tool directory.
  • Fix Emscripten performance loss due to enabling SSE mode incorrectly.
  • Fix ODBCConnection compile error on windows.
  • Fix incorrect terrain index data generation.
  • Fix AssetImporter to handle potential multiple root node situations better.
  • Fix incorrect 2D drawable culling optimization.
  • Fix transform applying order for parented 2D rigidbodies.
  • Fix incorrect rendering caused by not updating shader parameter has when a material is cloned.
  • Fix FileWatcher getting in stuck on read() on Linux.
  • Fix WorldToHeightMap() in Terrain.
  • Fix 2D particle emitter potentially causing memory overwrite by emitting more particles than allocated.
  • Fix culling issues when non-master AnimatedModels are larger than the master.
  • Fix potentially incorrect viewport update order.
  • Fix D3D11 dynamic textures to use only 1 mip level, as more does not work.
  • Fix SDL Windows-specific mouse move internals not working in some cases (e.g. without Aero) leading to wrong relative mouse input.
  • Fix basepath not being applied to file entries in PackageTool.
  • Fix initial position of kinematic rigidbodies after being loaded.
  • Fix temporary AnimatedModel’s bones to be temporary as well.
  • Fix SSE / ABI incompatibility related crashes with Bullet.
  • Fix HasSubscribedToEvent() missing from scripting.
  • Fix UI scrollbar snap epsilon attribute default value.
  • Fix error in DropDownList serialization.
  • Fix String::DecodeUTF16().
  • Fix deploying .pak files to Emscripten samples.
  • Fix UI style late applying when a child element is added.
  • Fix CustomGeometry bounding box update when committing new data.
  • Fix sprite textures to use clamp addressing by default instead of wrap.
  • Fix depth test potentially disabled in OpenGL by third party programs such as MSI Afterburner (re-enable every frame.)
  • Fix writing rendertarget inverse size uniforms incorrectly (Vector2 instead of Vector4.)
  • Fix off by one error in mipmap data size counting.
  • Fix FindUrho3D CMake module behaving incorrectly when called more than once.
  • Fix PhysicsWorld::GetRigidBodies() to use immediate contact test for static bodies.
  • Fix sampling of depth buffer in read-only mode on D3D11.
  • Fix ForwardDepth renderpath potentially missing depth clear on OpenGL.
  • Fix DropDownList placeholder text not auto-hiding when an item is selected.
  • Fix possible crash issue when exiting engine with background loaded resources still in queue.
  • Fix FindDirect3D CMake code for CMake old versions.
  • Fix issues with parented rigidbodies when moving them from code.
  • Fix math class equality operator in SSE builds on specific Visual Studio versions.
  • Fix ScreenToWorldPoint() to return the specified Z distance.
  • Fix vegetation shadow shader on D3D11.
  • Fix & simplify setup of the “universal” builtin target in iOS build.
  • Fix build system to install/package Emscripten shared js & data files.
  • Fix Application.h to be usable without other include files.
  • Fix lighting interpolator order in D3D11 shaders.
  • Fix node’s Z coordinate not retained in 2D physics movement.
  • Fix potential crash and performance issues in Octree raycasts by making them non-threaded; in practice the spin-up time for work items could override any threading benefits.
  • Fix missing DelayedStart functionality in LuaScriptInstance.
  • Fix point fill mode on D3D11.
  • Fix input focus loss when using an external window handle.
  • Fix missing D3D SDK search on VS2010 and earlier.
  • Fix ABI incompatibility in BoundingBox class depending on URHO3D_SSE flag.

Migration to new forums

$
0
0

We have successfully migrated our forums to discourse.urho3d.io, generously hosted for free without ads by discourse. Thanks to hd_ for all the work.

Urho3D 1.7 release

$
0
0

Source package

Binary package

Porting notes

If you are migrating your existing project from earlier release version of Urho3D, please read these notes.

Changelog

  • Inverse kinematics support.
  • Bullet RaycastVehicle support.
  • AppleTV platform support.
  • WebAssembly support on the Web platform.
  • IME support on Linux platform.
  • Several font rendering improvements and TypoGraphy sample.
  • WebP image loading support.
  • Sparse navigation meshes and navmesh streaming support.
  • AutoRemove bool removed. Replaced with more general AutoRemoveMode mechanism.
  • Free functions supported in attribute accessors.
  • IntVector3 class.
  • EnumAttributeAccessorImpl is now compatible with enum classes.
  • Use default continuous physics & substepping values for Box2D world.
  • Node-specific 2D physics collision events.
  • Improved Box2D joint handling.
  • Use GetDerivedComponent() when getting PhysicsWorld2D to allow subclassing it. PhysicsWorld2D members no longer private also for this reason.
  • ApplyLinearImpulseToCenter() function in RigidBody2D.
  • Additional info exposed in 2D physics events.
  • CollisionShape2D scale allowed to be signed.
  • Refactor PhysicsWorld2D contact info.
  • ParticleEmitter2D can be made to stop / restart emitting.
  • CSV and base64 encoding options when loading TMX files.
  • Several tilemap / TMX file improvements.
  • Improved convex hull debug draw.
  • Bool & int shader parameters on D3D11 / OpenGL.
  • Maximum extrusion distance for directional light shadows.
  • Shader compilation defines added to materials.
  • Shader compilation defines added to renderpath commands.
  • Shader compilation define exclusion mechanism in Pass.
  • Multisampled rendertargets.
  • Mipmapped rendertargets.
  • Alpha-to-coverage can be enabled in pass or material. Requires D3D11 or OpenGL.
  • Line antialiasing support.
  • Optional soft particles support.
  • Improve VSM shadows by moving z/w divide to pixel shader.
  • Anisotropic-nearest filtering mode, when supported.
  • Optional per-texture max anisotropy setting.
  • Physical light values support.
  • Area light support.
  • Multisample option for VSM shadows.
  • Shader cache location is configurable, and defaults to a user-writable directory.
  • Renderer events for screen buffer allocation & global shader parameters having been set.
  • Renderer event for all views having been rendered.
  • DecalSet optionally sizes vertex & index buffer only based on use.
  • New face camera mode in BillboardSet & Text3D.
  • Support defining neighbor terrains to avoid LOD discontinuities.
  • AnimationController internal control structures can be accessed as part of its public API.
  • AnimationController can be queried if any animation is playing on a layer.
  • Allow to get animation tracks by index.
  • Custom projection matrix support.
  • Implement GetMultiSampleLevels() on OpenGL.
  • Monitor and refresh rate options for Graphics::SetMode().
  • Allow unclamped morph weights.
  • Static helper function for calculating VertexBuffer element offsets.
  • Model metadata support.
  • PBR improvements.
  • Clean up PBR shaders & techniques; do not require tangents in PBR shaders unless using normal mappings.
  • Possibility to set mouse mode or visibility before Input class initialization.
  • Mouse centering / position setting moved to Input public API.
  • Seek method for audio streams.
  • Anchors and pivots can optionally be specified for UI elements.
  • ProgressBar UI element added.
  • UI root element custom size support.
  • UIElement child XML loading returns created child instead of success bool.
  • Add delta parameter to UI element resize event.
  • SDF font supersampling.
  • FontType enum exposed to public API.
  • NAVIGATIONPUSHINESS_NONE mode in CrowdAgent.
  • NavArea solid debug geometry.
  • To/from string conversions in JSONValueType / JSONNumberType.
  • Add function to test for Rect / Rect intersection.
  • Resize overloads in Vector / PODVector.
  • Remove ineffective static TypeInfo checking functions.
  • Node & UIElement child query function overloads that return a collection.
  • Node IsChildOf() function.
  • Temporary parameter added to Node CreateChild() function.
  • Sprite2D can define its draw & texture rectangles.
  • UniquePtr class.
  • Several math API functions added.
  • Stable random generator added.
  • Add FloatToRawIntBits function.
  • Variant can hold Rect objects.
  • Variant can hold 64-bit integers.
  • Mipmap manipulation support in Image.
  • Image class SaveDDS() function.
  • Text3D GetHeight() function.
  • Console auto-completion.
  • Console text highlighting according to message type.
  • XMLFile GetOrCreateRoot() function, and XMLElement GetOrCreateChild() function.
  • Urho3DPlayer attempts to read CommandLine.txt from resource system on all platforms, if cannot read from filesystem.
  • Improve use of SDL_Init() so that Context keeps track of initialized SDL subsystems.
  • IES cookie generation in RampGenerator.
  • AbstractFile as a parent class for those that implement both Serializer & Deserializer.
  • Allow specifying child node by name in attribute animation paths.
  • Functions to get rotation axis & angle in Quaternion.
  • Improved AngelScript API dump.
  • Consts exposed to AngelScript API.
  • OS query functions added to ProcessUtils.
  • Add resource to cache before sending background load event.
  • Prevent sending event to subscribers added during event handling.
  • Prevent rendering of unnecessary shadow maps.
  • Prevent rendering of deferred light volumes which would be masked out due to lightmask being only 8-bit in deferred rendering.
  • Move “cold” parts of Node into NodeImpl class to improve performance.
  • Populate rapidjson value before adding to parent.
  • Update to AngelScript 2.31.2.
  • Update to FreeType 2.7.1.
  • Update to SQLite 3.18.0.
  • Update to LibCpuId 0.4.0.
  • Update to Box2D 2.3.2.
  • Update to Assimp 3.2.
  • Update to LZ4 1.7.5.
  • Update to Bullet 2.86.1.
  • Build system: ensure empty CMAKE_OSX_DEPLOYMENT_TARGET on iOS build.
  • Build system: auto-disable PCH on Android Clang build.
  • Build system: prefer CMake’s regex instead of grep.
  • Build system: turn off PCH on bad ccache version.
  • Build system: Bash on Ubuntu on Windows -support.
  • Build system: work around MinGW 6.1.0 linking issue.
  • Build system: MinGW 6.1.0+ fix (narrowing conversion / internal compiler error.)
  • Build system: consider MinGW as multilib compiler.
  • Build system: make URHO3D_64BIT option applicable on MinGW.
  • Build system: use absolute output path for MinGW sysroot auto-detection.
  • Build system: fix Wayland build.
  • Build system: autodetect availability of clock_gettime() on Apple platforms.
  • Build system: fix package metadata for RPI & ARM platforms.
  • Build system: fix Urho3DAll.h generation in non out-of-source build.
  • Build system: avoid special chars in paths in MRI script passed to ar utility (Web build.)
  • Build system: Always use export header for auto-discovering build options.
  • Build system: use -O2 option for MinGW release build
  • Build system: add option to control how to share resources on web platform.
  • Build system: check availability of native compiler toolchain.
  • Build system: remove older CMake constructs that are no longer necessary.
  • Build system: new Android toolchain.
  • Build system: several Web build related improvements.
  • Build system: MODULE library type support option for Web build.
  • Build system: disable exception handling codegen for Web DEBUG build.
  • Build system: remove unused options from define_source_files() macro.
  • Build system: Prevent resource symlink creation during resource packaging.
  • Build system: Skip try_compile test when not appropriate (iOS debug build.)
  • Build system: use no_weak_imports linker flag.
  • Build system: workaround struct redefinition on newer MinGW.
  • Build system: search for DirectX path both rooted & non-rooted.
  • Build system: make clean for MinGW / Android / Web platforms.
  • Build system: enable multi-threaded compilation in Visual Studio.
  • Build system: fix mklink test when current path is not sources dir.
  • Build system: fix symlinked batch files not being launchable from Windows Explorer.
  • Build system: generate PCH files using naming convention expected by Clion.
  • Build system: generate dummy PCH only in out-of-source build tree.
  • Editor: do not attempt to parse extensionless files as XML.
  • Editor: draw navigation debug geometry.
  • Editor: prevent unnecessary attribute inspector refresh on resource reload.
  • Editor: allow drag-drop of generic XML files into attribute edit fields.
  • Editor: improved handling of structure attributes.
  • Editor: optimization to avoid updating temporary objects when they are not shown in hierarchy.
  • Editor: optimize update during object spawn.
  • Editor: paint selection.
  • Editor: show origins option.
  • Editor: fix UI element internal var indexing so that editing user-defined variables works right.
  • Editor: restore window positions on viewport mode switch.
  • Editor: terrain editor.
  • Editor: color wheel for Text3D.
  • Editor: double size on high DPI display.
  • Editor: fix resource browser node add/removal shown in hierarchy window.
  • Editor: fix resource browser preview camera position.
  • AssetImporter: possibility to export animation without skinned mesh.
  • AssetImporter: $fbx node suppression.
  • AssetImporter: fix animation start/end times when saving multiple animations.
  • AssetImporter: fix incorrect applying of model’s root node transform.
  • Documentation: explain how to setup Windows MKLINK privilege.
  • Documentation: add section on scene graph events.
  • Documentation: explain EMSCRIPTEN_WASM build option.
  • Documentation: note on simultaneous network server & client usage.
  • Documentation: update on the define_resource_dirs() macro.
  • Documentation: do not include RapidJSON classes.
  • Documentation: inverse kinematics page.
  • Sample content: Kachujin model, used in SkeletalAnimation sample.
  • Sample content: new Urho3D logo.
  • Sample content: mutant model added to the CharacterDemo.
  • Sample content: Vertex colors in the standard primitive models.
  • Sample content: fix normals / lighting on the cylinder.
  • Sample content: Line primitive models.
  • Sample content: material preview model.
  • Fix broken off-mesh movement for CrowdAgent.
  • Fix Bullet assert / crash when collision shape was changed from compound to non-compound.
  • Fix unintended update of wordwrapping text’s width.
  • Fix uninitialized fields in FontFaceBitmap.
  • Fix recreation of CollisionChain2D shape.
  • Fix positioning of borderless window (if not filling the whole monitor.)
  • Fix RigidBody2D not returning to original transform.
  • Fix copypaste error in SpriteSheet2D load code.
  • Fix out-of-bounds text buffer access when compiling an AngelScript module.
  • Fix VariantMap to JSONValue and back conversion.
  • Fix handling /./ in executable path in SanitateResourceName().
  • Fix crash if script object constructor throws.
  • Fix incorrect optimization in UIElement::GetElementAt().
  • Fix potential crash when erasing sibling nodes during component destructor.
  • Fix blend modes for 2D particles.
  • Fix use of asGetActiveContext() in template code, as it could leak undesirably to user application and cause undefined symbol.
  • Fix jumping Slider knob.
  • Fix AngelScript temp variable corruption and problem with handle-reference argument.
  • Fix Constraint2D body connection serialization (other body nodeID.)
  • Fix instancing in vegetation shader.
  • Fix SDL keyboard input on RPI platform.
  • Fix fixed size billboard not properly realculating size in all cases.
  • Fix multisample quality handling on D3D11.
  • Fix Text3D batches beyond the first not showing correctly.
  • Fix input scaling for high DPI displays.
  • Fix differentiation of alpha & RGBA textures in text shader.
  • Fix crash in usedGlyphs mode.
  • Fix zero sized UI root element causing divide by zero.
  • Fix various missing script API functions.
  • Fix terrain UV coordinates generation.
  • Fix shader define update when Text3D changes its rendering between SDF / non-SDF.
  • Fix erroneous fadeout of other AnimationController animations, if playback of new animation failed.
  • Fix nearest filter mode not using mipmaps on OpenGOL.
  • Fix skinning matrix pointers changing erroneously after late creation of bones.
  • Fix BillboardSet 16 bit indices limitation.
  • Fix CrowdAgents getting erroneously included in navmesh geometry.
  • Fix calculation of UI element combined screen rect.
  • Fix world space tangent for billboards.
  • Fix ValueAnimation’s time range not getting expanded by adding event frames.
  • Fix ValueAnimation removal during event handling causing crash.
  • Fix word wrap text char positions.
  • Fix WorkQueue item insertion; insert last if no other option possible.
  • Fix unnecessary mouse centering in screen mode change handling.
  • Fix unsafe removal of event receivers.
  • Fix string corruption in SQLite queries.
  • Fix error in skybox HLSL shader when instancing is forced on.
  • Fix erroneous reuse of backbuffer depth buffer when multisampling.
  • Fix uninitialized memory in Material.
  • Fix out of bounds array access when material quality is higher than high.
  • Fix shadow-related shader function signatures on GLES.
  • Fix shaky water shader on GLES.
  • Fix memory leak in AngelScript Dictionary.
  • Fix weight fade erroneously affecting animation after weight was set manually.
  • Fix LookAt mixed rotation mode.
  • Fix skydome GLSL shader.
  • Fix depth bias not getting cloned in Material::Clone().
  • Fix CrowdAgent removal to be safe during reposition event.
  • Fix keeping track of RigidBody2D constraints.
  • Fix double shader parameters passed from e.g. Lua, convert to float.
  • Fix navigation system obstacles not observing their scene node movement and updating themselves.
  • Fix self-insertion in Vector.
  • Fix slowed down navigation agent when scene node dirtied during reposition event.
  • Fix slope-scale bias adjustment on OpenGL.
  • Fix incorrect hashing of rasterizer states on D3D11.
  • Fix AnimationController animation search differentiating slash and backslash when it shouldn’t.
  • Fix LineEdit text & cursor not being centered by default.
  • Fix potential flipped normals in physics collisions (double manifold issue.)
  • Fix undefined __cpu_model symbol in shared lib on GCC.
  • Fix cache datatype for URHO3D_LIB_TYPE
  • Fix Android black screenshot (use RGBA format.)
  • Fix missing network update if node is added to the scene late.
  • Fix crash when setting model resource to drawable component that is not attached to a scene node.

Hellbreaker released on Steam

$
0
0

Hellbreaker is a fast-paced challenging FPS game with focus on aggressive play-style. Also comes with modding and Steam Workshop support.

Hellbreaker on Steam

Screeshots

Hellbreaker-1.jpg

Hellbreaker-2.jpg

Hellbreaker-3.jpg

Bolderline released on Google Play

$
0
0

Bolderline is the latest game made with Urho3D by Indonesian based game studio Dolanan Games.

Bolderline is a minimalist puzzle game with colorful blocks that will challenge your brain.

Gameplay is simple. Random block pieces fall down on the upper side of the screen.

Your goal is to destroy them by arranging the bricks on the lower side of the screen with the same color to match the shape of the block.

Destroy as many blocks as you can to get more coins and unlock new colorful & cute themes.

Bolderline.jpg

Bolderline is available for free on Google Play https://play.google.com/store/apps/details?id=com.dolanan.bolderline

HTML5 is coming soon.

Edge of Time Episode 1: Rise of the Aeus

$
0
0

Edge of Time is a 3D action and puzzle Video Game Series made using Urho3D and other open source software. Inspired by the era of PS1 and PS2 games. The demo can be downloaded for free on itch io and gamejolt.

Please support us on our upcoming Kickstarter this 2018, follow us on Facebook to get news and updates.

edge-of-time-ep1-1.jpg

edge-of-time-ep1-2.jpg

edge-of-time-ep1-3.jpg

edge-of-time-ep1-4.jpg

edge-of-time-ep1-5.jpg

edge-of-time-ep1-6.jpg

edge-of-time-ep1-7.jpg


Clinically Dead is released on Steam

$
0
0

Clinically Dead, the game which uses Urho3D as code base is released on Steam. It is a first person puzzle game, created by a one-man studio from Poland, the production offers unique experiences referring to the state of clinical death, unconventional and challenging puzzles as well as a psychedelic visual setting.

Clinically Dead was in the making for the last 4 years, and Mogila Games studio, which was created by Paweł Mogiła (the creator of, among others, the logical platformer Grimind), was in charge of the production. The storyline concerns death – the last seconds of life and an unnatural flow of time. In Clinically Dead, the player faces a strange and surprising reality.

clinically_dead_screenshot.jpg

The manipulation of space-time plays a decisive role. In Clinically Dead, movement itself affects time, and individual colors determine the time that is left. For example, the color blue means a low time value. The color red, however, is a large amount of time. We move not only in three standard directions, but also in the fourth, which is time.

Clinically Dead offers a total of about 4-6 hours of fun based on psychedelic reality, manipulation of space-time and demanding puzzles.

If for some people the coloring of the game is too bright, they can take advantage of an additional option (a so-called anti-psychedelic filter) and reduce the intensity of colors accordingly.

War Priest made it out alive

$
0
0

War Priest is a 3D platforming bullet hell where all enemies are dead at the start of the level, and you must revive them all and return to the altar while running away from their attacks. Featuring low-poly Nintendo 64 graphics and gratuitous manliness!

Sacred Sands Act 2.png

It takes place in the aftermath of a brutal holy war between sects of a fictional, monolithic religion. You are Grungle the War Priest, and you must go about the business of reviving all of those who died, but the ancient feuds still remain, and your fellow corrupted clergy will do all that they can to hurt you.

Fallen Fatherland Act 1.png

This project took about two and a half years to make. Pretty much everything except for the game engine and the sound effects were made by hand using Blender, Gimp, Krita, ReNoise, and other miscellaneous tools.

Palisade Pantheon Act 2.png

The game is available for free on my website. You may also choose your price for it on Gamejolt or Itch.io.

The game actually started off as a first person shooter, where you were constantly shooting and had to avoid killing civilians while collecting tokens by shooting a boulder into them. At some point, I realized that I would have a hard time giving the gameplay variety so I came up with a different concept.

Beta Screenshot.pngСтарая Картина.jpg

Viewing all 77 articles
Browse latest View live