June 18, 2019, 06:41:37 AM

Author Topic: What 3D Engine are people using now?  (Read 3796 times)

Offline Kryzon

  • Full Member
  • ***
  • Posts: 120
Re: What 3D Engine are people using now?
« Reply #60 on: November 13, 2018, 09:24:32 PM »
Godot looks sexy:
https://godotengine.org/features
(Lol my autocorrect named it "Goody" instead of Godot)

Oh, and remember Shiva?
http://www.shiva-engine.com/features192/
It's still going.

Offline Steve Elliott

  • Hero Member
  • *****
  • Posts: 1802
Re: What 3D Engine are people using now?
« Reply #61 on: November 13, 2018, 09:37:18 PM »
Yep, so many options out there...But I just get the feeling people aren't truely connecting with a particular product...I like this about it - but not this...I'll wait for something better.  That's not a great situation to be in.
Windows 10, 64-bit, 16Gb RAM, CPU Intel i5, 3.2 GHz, Nvidia GeForce GTX 1050 (2Gb).
MacOS Mojave, 64-bit, 8Gb RAM, CPU Intel i5, 2.3 Ghz, Intel Iris Plus Graphics 640 1536 MB.
Linux Mint 19.1, 64-bit, 16Gb RAM, CPU Intel i5, 3.2 GHz, Nvidia GeForce GTX 1050 (2Gb).

Offline Madjack

  • Jr. Member
  • **
  • Posts: 44
Re: What 3D Engine are people using now?
« Reply #62 on: November 13, 2018, 10:34:38 PM »
So what is the best Blitz3d like option at the moment?
And by best, I mean something that is DX9 or higher, at least as fast as B3d (but pref as fast as BMax), has the full range of commands including raycasting+collision and has very few bugs?

Offline 3DzForMe

  • Hero Member
  • *****
  • Posts: 583
Re: What 3D Engine are people using now?
« Reply #63 on: November 13, 2018, 11:29:37 PM »
I've tried AGK briefly, to be fair, my age might not have given it a fair crack of the whip, and just possibly my resolve at overcoming coding nuances that I didn't find a problem a decade ago when having fun with Blitz3D and JV ODE may be down to coding mojo fade.

Blitz3D still works for me, made a new video tonight on my W7 box, I should really do it on my son's W10 box. Sure, it's not polygon tastic, but it's an example of what is achievable as an analysis tool of real world 3d data.

Would love to hear of any responses to MJ's question, otherwise/nevertheless, B3D still rocks

Offline Naughty Alien

  • Hero Member
  • *****
  • Posts: 590
Re: What 3D Engine are people using now?
« Reply #64 on: November 14, 2018, 12:34:01 AM »
So what is the best Blitz3d like option at the moment?
And by best, I mean something that is DX9 or higher, at least as fast as B3d (but pref as fast as BMax), has the full range of commands including raycasting+collision and has very few bugs?

..thats exactly what im trying to look for..there are tons of options which are Unity like, but thats not something im feeling comfortable with..currently, im messing with Lumberyard engine, and it is nice..just like Unity and all, you sort out your level visually quickly, and then you go to coding..and when you do that, this is what you code just to have entity spinning around Z axis...

Code: [Select]
local RotateEntity =
{
Properties =
{
IncomingGameplayEventName = "",
AxisOfRotation = {default=Vector3(0,0,1), description="The axis to rotate around"},
IsRelative = {default=true, description="When true, the entity's transform will transform the AxisOfRotation"},
RotationSpeed = {default=60, description="Degrees per second."},
},

}


function RotateEntity:OnActivate()
local gameplayBusId = GameplayNotificationId(self.entityId, self.Properties.IncomingGameplayEventName, "float")
self.gameplayBus = GameplayNotificationBus.Connect(self, gameplayBusId)
end

function RotateEntity:ApplyRotation(floatValue)
local axisOfRotation = self.Properties.AxisOfRotation:GetNormalized()
local localTM = TransformBus.Event.GetWorldTM(self.entityId)
local translation = localTM:GetTranslation()
localTM:SetTranslation(Vector3(0,0,0))
local scale = localTM:ExtractScale()

if not self.Properties.IsRelative then
axisOfRotation = axisOfRotation * localTM
end

local dt = TickRequestBus.Broadcast.GetTickDeltaTime()
local rotationAmount = floatValue * dt * Math.DegToRad(self.Properties.RotationSpeed)

local finalTM = localTM * Transform.CreateFromQuaternion(Quaternion.CreateFromAxisAngle(axisOfRotation, rotationAmount):GetNormalized())
finalTM:SetPosition(translation)
finalTM:MultiplyByScale(scale)
TransformBus.Event.SetWorldTM(self.entityId, finalTM)
end

function RotateEntity:OnEventBegin(floatValue)
self:ApplyRotation(floatValue)
end

function RotateEntity:OnEventUpdating(floatValue)
self:ApplyRotation(floatValue)
end

function RotateEntity:OnEventEnd(floatValue)
self:ApplyRotation(floatValue)
end

function RotateEntity:OnDeactivate()
self.gameplayBus:Disconnect()
end

return RotateEntity

..and this is exactly where this tools start losing me..yes, you do compose your level quickly in editor( i do same in 3dsmax by the way,end export directly for engine use), and then you 'code' stuff...i mean..if you see trigger code(to open door for example), its a spaghetti of various things..i guess its just me as so many people like this sort of tools..ill keep digging..

Offline c0d3r9

  • Full Member
  • ***
  • Posts: 114
Re: What 3D Engine are people using now?
« Reply #65 on: November 14, 2018, 01:01:21 AM »
and thats where i totally agree.
I tested unity some years ago.But at the end its most only behavior scripting.
Its good for game designer and i know we can code detailed in unity.
And the games made with unity, godot and similar looks good but maybe i´m to oldschool.
Atm i´m learning c++ deeper and maybe i can code a little 2d framework/engine anytime...

But the bigges wish is a Blitz3D like thing with dx11/12 support and an active community.
I´m sure such thing is possible with bm-ng too but i never used it.
On the other side there are then modules and modules and always modules....thats not bad but the most would use an out-of-the-box system.

Its the same reason why i don´t use linux(this time its better...but years ago...).
I would work with an OS not for an OS. ;)
And mainly i would code game code and not an (parts of) engine.

And so i should write a wishlist to santa....for now...good night ;)
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD

Offline Madjack

  • Jr. Member
  • **
  • Posts: 44
Re: What 3D Engine are people using now?
« Reply #66 on: November 14, 2018, 01:15:54 AM »
The example code NA posted below is why sometimes I feel that programmers make things overly complex because it's self-reinforcing and a form of gate-keeping.

Code: [Select]
local RotateEntity =
{
Properties =
{
IncomingGameplayEventName = "",
AxisOfRotation = {default=Vector3(0,0,1), description="The axis to rotate around"},
IsRelative = {default=true, description="When true, the entity's transform will transform the AxisOfRotation"},
RotationSpeed = {default=60, description="Degrees per second."},
},

}


function RotateEntity:OnActivate()
local gameplayBusId = GameplayNotificationId(self.entityId, self.Properties.IncomingGameplayEventName, "float")
self.gameplayBus = GameplayNotificationBus.Connect(self, gameplayBusId)
end

function RotateEntity:ApplyRotation(floatValue)
local axisOfRotation = self.Properties.AxisOfRotation:GetNormalized()
local localTM = TransformBus.Event.GetWorldTM(self.entityId)
local translation = localTM:GetTranslation()
localTM:SetTranslation(Vector3(0,0,0))
local scale = localTM:ExtractScale()

if not self.Properties.IsRelative then
axisOfRotation = axisOfRotation * localTM
end

local dt = TickRequestBus.Broadcast.GetTickDeltaTime()
local rotationAmount = floatValue * dt * Math.DegToRad(self.Properties.RotationSpeed)

local finalTM = localTM * Transform.CreateFromQuaternion(Quaternion.CreateFromAxisAngle(axisOfRotation, rotationAmount):GetNormalized())
finalTM:SetPosition(translation)
finalTM:MultiplyByScale(scale)
TransformBus.Event.SetWorldTM(self.entityId, finalTM)
end

function RotateEntity:OnEventBegin(floatValue)
self:ApplyRotation(floatValue)
end

function RotateEntity:OnEventUpdating(floatValue)
self:ApplyRotation(floatValue)
end

function RotateEntity:OnEventEnd(floatValue)
self:ApplyRotation(floatValue)
end

function RotateEntity:OnDeactivate()
self.gameplayBus:Disconnect()
end

return RotateEntity


Offline Naughty Alien

  • Hero Member
  • *****
  • Posts: 590
Re: What 3D Engine are people using now?
« Reply #67 on: November 14, 2018, 01:32:39 AM »
...i mean..i just dont get this hype over this visual tools...it does allow you to create scene rather fast and visually very pleasing, no doubt about that, but soon as you start doing some coding work, things are a bit different..i mean..look at this AiSpawn trigger code, which really could be scaled down to not more than 5 lines of code, if coded directly..

Code: [Select]
local utilities = require "scripts/common/utilities"

local aispawntrigger = {
Properties = {
AISpawnGroup = { default = "", description = "The spawn group to be triggered when the player enters the trigger." },
Switch =
{
On = { default = "", description = "The event name when switched on." },
Off = { default = "", description = "The event name when switched off." },
},
},
}

function aispawntrigger:OnActivate()
self.triggerHandler = TriggerAreaNotificationBus.Connect(self, self.entityId);
self.enteredAreaId = GameplayNotificationId(EntityId(), "EnteredAITrigger", "float");
self.exitedAreaId = GameplayNotificationId(EntityId(),"ExitedAITrigger", "float");
self.somethingDeepInside = false;

-- Initialise the values with defaults first and then set them up for listening, if necessary.
self.switchedOn = true;
self.switchedOnEventId = nil;
self.switchedOnHandler = nil;
self.switchedOffEventId = nil;
self.switchedOffHandler = nil;
local validOn = self:IsValidString(self.Properties.Switch.On);
local validOff = self:IsValidString(self.Properties.Switch.Off);
if (validOn and validOff) then
self.switchedOn = false;
self.switchedOnEventId = GameplayNotificationId(self.entityId, self.Properties.Switch.On, "float");
self.switchedOnHandler = GameplayNotificationBus.Connect(self, self.switchedOnEventId);
self.switchedOffEventId = GameplayNotificationId(self.entityId, self.Properties.Switch.Off, "float");
self.switchedOffHandler = GameplayNotificationBus.Connect(self, self.switchedOffEventId);
elseif (validOn or validOff) then
-- Output a warning that something was set but it'll be ignored.
Debug.Log("[LuaWarning] AISpawnTrigger '" .. tostring(StarterGameEntityUtility.GetEntityName(self.entityId)) .. "': one of the switches has an event name but the other doesn't. The switch will not be active.");
end
end

function aispawntrigger:OnDeactivate()
if (self.switchedOffHandler ~= nil) then
self.switchedOffHandler:Disconnect();
self.switchedOffHandler = nil;
end
if (self.switchedOnHandler ~= nil) then
self.switchedOnHandler:Disconnect();
self.switchedOnHandler = nil;
end
if (self.triggerHandler ~= nil) then
self.triggerHandler:Disconnect();
self.triggerHandler = nil;
end
end

function aispawntrigger:IsValidString(str)
return str ~= "" and str ~= nil;
end

function aispawntrigger:OnTriggerAreaEntered(entityId)
--Debug.Log("A.I. Trigger Volume entered");
if (entityId ~= nil) then
self.somethingDeepInside = true;
end
if (not utilities.GetDebugManagerBool("PreventAIDisabling", false) and self.switchedOn) then
GameplayNotificationBus.Event.OnEventBegin(self.enteredAreaId, self.Properties.AISpawnGroup);
end
end

function aispawntrigger:OnTriggerAreaExited(entityId)
--Debug.Log("A.I. Trigger Volume exited");
if (entityId ~= nil) then
self.somethingDeepInside = false;
end
if (not utilities.GetDebugManagerBool("PreventAIDisabling", false)) then
GameplayNotificationBus.Event.OnEventBegin(self.exitedAreaId, self.Properties.AISpawnGroup);
end
end

function aispawntrigger:OnEventBegin(value)
if (self.switchedOnEventId ~= nil and self.switchedOffEventId ~= nil) then
if (GameplayNotificationBus.GetCurrentBusId() == self.switchedOnEventId) then
if (not self.switchedOn) then
self.switchedOn = true;
if (self.somethingDeepInside) then
self:OnTriggerAreaEntered(nil);
end
end
elseif (GameplayNotificationBus.GetCurrentBusId() == self.switchedOffEventId) then
if (self.switchedOn) then
self.switchedOn = false;
if (self.somethingDeepInside) then
self:OnTriggerAreaExited(nil);
end
end
end
end
end

return aispawntrigger;

..it must be just me as many folks enjoying this sort of tools..

Offline GaborD

  • Sr. Member
  • ****
  • Posts: 281
Re: What 3D Engine are people using now?
« Reply #68 on: November 14, 2018, 01:46:09 AM »
I am with you on that NA, I never liked these kinds of engines.
I did use Unity back in the day for work projects a lot. But I never enjoyed it and always used other engines for own fun stuff. It's just not my cup of tea.
You spend more time in Wikis trying to figure out how their devs think and work than actually making your own game. And then it runs slow as heck. (Which is not meant as attack, it just comes with the territory. They are bloated because they try to support everything and everyone. A streamlined own renderchain will always be much faster)
I do however see how these tools are great for new people or when you need to export to toasters. They have the edge in that area.

Offline Naughty Alien

  • Hero Member
  • *****
  • Posts: 590
Re: What 3D Engine are people using now?
« Reply #69 on: November 14, 2018, 02:23:48 AM »
..exactly what i feel all the time..no doubt these visual tools are productive, but they rub me on wrong way for some reason..anyway, i think i have found what i was looking for, in form of Urho3D, as suggested before..it seems to be well documented and supported with modern features and quite friendly..and it does come with editor, where you put your scene in order and just load and access trough code to do whatever you want, directly..nice so far..

..simple scene with 2 dynamic lights set on scene..



..loaded scene and lights and all parts of scene/entity, easy to access and modify directly...yay..

Offline Qube

  • Administrator
  • Hero Member
  • *****
  • Posts: 1901
Re: What 3D Engine are people using now?
« Reply #70 on: November 14, 2018, 02:56:12 AM »
...i mean..i just dont get this hype over this visual tools...it does allow you to create scene rather fast and visually very pleasing, no doubt about that, but soon as you start doing some coding work, things are a bit different..i mean..look at this AiSpawn trigger code, which really could be scaled down to not more than 5 lines of code, if coded directly..

Code: [Select]
local utilities = require "scripts/common/utilities"

local aispawntrigger = {
Properties = {
AISpawnGroup = { default = "", description = "The spawn group to be triggered when the player enters the trigger." },
Switch =
{
On = { default = "", description = "The event name when switched on." },
Off = { default = "", description = "The event name when switched off." },
},
},
}

function aispawntrigger:OnActivate()
self.triggerHandler = TriggerAreaNotificationBus.Connect(self, self.entityId);
self.enteredAreaId = GameplayNotificationId(EntityId(), "EnteredAITrigger", "float");
self.exitedAreaId = GameplayNotificationId(EntityId(),"ExitedAITrigger", "float");
self.somethingDeepInside = false;

-- Initialise the values with defaults first and then set them up for listening, if necessary.
self.switchedOn = true;
self.switchedOnEventId = nil;
self.switchedOnHandler = nil;
self.switchedOffEventId = nil;
self.switchedOffHandler = nil;
local validOn = self:IsValidString(self.Properties.Switch.On);
local validOff = self:IsValidString(self.Properties.Switch.Off);
if (validOn and validOff) then
self.switchedOn = false;
self.switchedOnEventId = GameplayNotificationId(self.entityId, self.Properties.Switch.On, "float");
self.switchedOnHandler = GameplayNotificationBus.Connect(self, self.switchedOnEventId);
self.switchedOffEventId = GameplayNotificationId(self.entityId, self.Properties.Switch.Off, "float");
self.switchedOffHandler = GameplayNotificationBus.Connect(self, self.switchedOffEventId);
elseif (validOn or validOff) then
-- Output a warning that something was set but it'll be ignored.
Debug.Log("[LuaWarning] AISpawnTrigger '" .. tostring(StarterGameEntityUtility.GetEntityName(self.entityId)) .. "': one of the switches has an event name but the other doesn't. The switch will not be active.");
end
end

function aispawntrigger:OnDeactivate()
if (self.switchedOffHandler ~= nil) then
self.switchedOffHandler:Disconnect();
self.switchedOffHandler = nil;
end
if (self.switchedOnHandler ~= nil) then
self.switchedOnHandler:Disconnect();
self.switchedOnHandler = nil;
end
if (self.triggerHandler ~= nil) then
self.triggerHandler:Disconnect();
self.triggerHandler = nil;
end
end

function aispawntrigger:IsValidString(str)
return str ~= "" and str ~= nil;
end

function aispawntrigger:OnTriggerAreaEntered(entityId)
--Debug.Log("A.I. Trigger Volume entered");
if (entityId ~= nil) then
self.somethingDeepInside = true;
end
if (not utilities.GetDebugManagerBool("PreventAIDisabling", false) and self.switchedOn) then
GameplayNotificationBus.Event.OnEventBegin(self.enteredAreaId, self.Properties.AISpawnGroup);
end
end

function aispawntrigger:OnTriggerAreaExited(entityId)
--Debug.Log("A.I. Trigger Volume exited");
if (entityId ~= nil) then
self.somethingDeepInside = false;
end
if (not utilities.GetDebugManagerBool("PreventAIDisabling", false)) then
GameplayNotificationBus.Event.OnEventBegin(self.exitedAreaId, self.Properties.AISpawnGroup);
end
end

function aispawntrigger:OnEventBegin(value)
if (self.switchedOnEventId ~= nil and self.switchedOffEventId ~= nil) then
if (GameplayNotificationBus.GetCurrentBusId() == self.switchedOnEventId) then
if (not self.switchedOn) then
self.switchedOn = true;
if (self.somethingDeepInside) then
self:OnTriggerAreaEntered(nil);
end
end
elseif (GameplayNotificationBus.GetCurrentBusId() == self.switchedOffEventId) then
if (self.switchedOn) then
self.switchedOn = false;
if (self.somethingDeepInside) then
self:OnTriggerAreaExited(nil);
end
end
end
end
end

return aispawntrigger;

..it must be just me as many folks enjoying this sort of tools..
What the frack is all that for?. It looks like a load of code to make up for something the engine should be handling by itself in the background. Remind me never to use LumberTurd ;D

Quote
..exactly what i feel all the time..no doubt these visual tools are productive, but they rub me on wrong way for some reason
Me too, I've been coding since I was 10 years old and that's just how my brain works. Then I changed my approach to Unity. Rather than fight with it I thought hang on, I like things like VB.NET and Delphi and those have visual editors?!?!?, what's the difference?. So now I just treat Unity as a visual level designer and I'm happy that you have to code a lot more than some make out. Sure, it's a lot more than just that but that was the best starting point I was happy with.
Until the next time...

Offline Naughty Alien

  • Hero Member
  • *****
  • Posts: 590
Re: What 3D Engine are people using now?
« Reply #71 on: November 14, 2018, 10:40:32 AM »
..ehhmm..soo..i have installed Unity and playing with it now...script seems to be very straightforward and it does feel 'natural' to given environment..lets see how it goes..

Offline c0d3r9

  • Full Member
  • ***
  • Posts: 114
Re: What 3D Engine are people using now?
« Reply #72 on: November 14, 2018, 12:09:13 PM »
we are horrified.  :o   ;D
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD

Offline Qube

  • Administrator
  • Hero Member
  • *****
  • Posts: 1901
Re: What 3D Engine are people using now?
« Reply #73 on: November 14, 2018, 12:15:08 PM »
..ehhmm..soo..i have installed Unity and playing with it now...script seems to be very straightforward and it does feel 'natural' to given environment..lets see how it goes..
Have fun ;D

Oh and that mountain of code you posted about rotating an object on the Z axis in Lumberyard.. Here's the full Unity version :P

Code: [Select]
using UnityEngine;

public class RotateAGoGo : MonoBehaviour {
void Update () {
        transform.Rotate( 0, 0, 10.0f * Time.deltaTime, Space.Self );
}
}
Until the next time...

Offline Steve Elliott

  • Hero Member
  • *****
  • Posts: 1802
Re: What 3D Engine are people using now?
« Reply #74 on: November 14, 2018, 12:20:12 PM »
Quote
I have installed Unity

We are horrified.  :o   ;D

Yes we are  :P
Windows 10, 64-bit, 16Gb RAM, CPU Intel i5, 3.2 GHz, Nvidia GeForce GTX 1050 (2Gb).
MacOS Mojave, 64-bit, 8Gb RAM, CPU Intel i5, 2.3 Ghz, Intel Iris Plus Graphics 640 1536 MB.
Linux Mint 19.1, 64-bit, 16Gb RAM, CPU Intel i5, 3.2 GHz, Nvidia GeForce GTX 1050 (2Gb).