I’ve moved from using Godot to create games over to Unreal and here is an insight into my plans for the future and some sneak peaks at the game I’m currently focused on. This is the one game that I struggled to create and failed in the process due to my lack of understanding c++ currently!
Check Out Ali Elzoheiry for the best guides:
https://www.youtube.com/@UCrrZx9bh7RMYhXvaN8BrbNg
Stay Connected:
Follow me on BlueSky for real-time updates.
https://bsky.app/profile/auesip.bsky.social
Join our Discord community to chat with other fans
https://discord.gg/p8Aar6P77C
Get Involved:
Participate in polls and Q&A sessions on my YouTube Community Tab.
Tags:
#gamedev #indiegame #devlog #gamedevelopmentjourney #indiedev #spacegames #gamedesign #firstdevlog #indiegamedevelopment #gamingcommunity #earlyaccessgames #developer #release #steam #advance #gamer
source
17 comments
Descent 1995
You bite me, so it's possible just need knowledge Cpp…. Yeah it's impossible 😂
Quaternion rotation is more complex than euler rotation, however it doesn't have gimbal locking. If Unreal supports it in blueprints, I'd recommend implementing it.
I'll preface this by saying I don't have experience with unreal, but I do have a lot with other 3d software and some with C/C++. It seems like the issue isn't related to what you can do in code, but to understanding the math. Gimble lock isn't related to inverting movement, but rather to locking consecutive rotations. For example, if I was applying rotations in XYZ order and I rotated around the Y in a certain way, I could line up my X and Z axes, since my Z axis depends on my Y rotation, thereby locking me out of a degree of freedom. In your case, it'd be looking straight up at the ceiling (not turning 180, but 90), making your roll and yaw be rotations about the same axis (since you're doing the rotation in world space). Like others have suggested it seems like to solve your issue you just want your controller to operate in local space, not world, which I imagine you can do in blueprints! Cool project!
I think the easiest way to move forward and avoid the gimball lock issue is to create a blueprint function library class in C++ that only contain the rotator logic using quaternions. make sure to keep each function as small as possible and to comment your code. As you get better and better in C++, you can break this class into separate UActor classes.
I would very much encourage you to learn some text based coding because it's great. If you're committed to Unreal then C++ is probably the best option (although Nim is also I think quite a nature option now and, in my mind, a nicer easier language, but it doesn't have the same kind of learning resources behind it). If you are going to go full in on learning to code with text based coding there are other engines with easier language to learn that C++ such as Godot's GDScript, Defold's Lua, or even C# with something like Unity (although I have ideological reasons for my skin to crawl mentioning it) Flax or Godot (again). That said, changing engines is obviously a big deal so while I do think it's worth thinking about once you're considering doing more complex text based programming with quaternions that doesn't mean it's necessarily worth actually going ahead and switching, just that now you're considerations have changed is worth looking to see if you're still using the best tool for the job.
I have no game design knowledge and really no idea how I even got to this video or what I'm talking about but maybe if it would be possible to just define "down" as something local to the player and instead lock your camera rotation to that instead.
so instead of down being what we conventionally would consider down in most games, down would be per player and towards the bottom of your ship. If you wanted to mess with your ship's roll for example it would just tilt the relative "down" direction.
Again no clue what I'm talking about but maybe there's merit to these rambling haha
Hey gimbal lock occurs when you play with the euler angles rotating the character – you can switch to quaternions to move your player and it should just go away. Use FQuat and Rotator to Quaternion I think – though its been a while since I used Unreal
It could be easier to keep the ship and camera static in the game world and instead rotate the objects outside the ship around the fixed origin as the ship "turns". This wouldn't effect core game logic but just how you display the end result. This wouldn't be performant in large complex environments but it doesn't seem like you'll have one.
Good luck with it though if you pick this up again!
The best method is to take the FPS template and change the movement to fly… Is it that easy and this problem is fixed? There are also tons of tutorials for flying movement in YouTube, many solutions if you search in UE forums or ask for solutions.The movement itself is your least problem, but I have seen pretty good tutorials for the rest of the ideas.
I've ran into a similar problem once. For me it boiled down to this: how to get a forward vector if the character is looking up or down? It turns out the forward vector could be obtained by cross-producting of right and up vectors. And in my case I just changed my up-vector to the floor normal. Not sure if it would help you in your problem, but I felt the need to share.
Hey, I've been making games for 10+ years and I think the idea is good, great even. However, as someone who has made multiple online games I don't think you understand how complicated it is to have the online elements of the idea implemented, they require a lot of backend handling and needs a server solution that a simple .IO game couldn't handle (I think, never made one)
I think also is that the primary appeal of .IO games is that they are simple, easy to pickup and has most of the information is given to the player right away, a full 3D-axis in-space game could make things not so simple which requires delicate map/game design to not make players become lost.
Finally, I'm commenting this because I think you didn't fail, you just naturally realized your limitations. Play around them, if you are starting your journey now, scale down your game to be a 2D-plane controller ship game, offline, with much simpler mechanics so that you have something done, before moving to a higher dimension (literally)
Hope this helps, cheers
This is incredibly underrated, i wish you well!
Cant you just take the current rotation into account to change the location of the input?
Looking forward to the game once you learn c++! It seems like a really cool idea, and I feel like once you learn c++, it'll probably open up doors to a lot more ideas that you didn't know were possible 🔥🔥
Looks amazing 😊
I’m ur biggest fan!
Comments are closed.