C++ course update?

Hi, I was considering taking your course on udemy: Unreal Engine 5 C++ Developer: Learn C++ & Make Video Games | Udemy, but a lot of the reviews mention the course hasn’t been updated for the new enhanced input system in UE5. Has it been updated yet?

Do you have any more up to date course covering creating games for quest 3 with Unreal 5.3.2 or above, with a focus on C++

This currently does not cover the New enhanced input system, I do recommend Stephen Ullibari’s Youtube Videos on this, He is one of the original lectures in the course and goes into great detail over it.

It can be found here : https://www.youtube.com/watch?v=bIo97TLsXkY

As for quest 3 courses, they currently do not have any and probably not high enough requests for the quest to deem viable to create, Im sure there is other courses out there that focus on that.

That being said a lot can still be learned from the c++ course that can translate over to any game you want to make with the new enhanced Input System, and even if developing for the quest 3.

1 Like

Sold :+1:

Stephen’s videos are comprehensive but in fact, if you follow the Unreal Stealth course for example, it shows a great way to use the enhanced input. It’s actually very simple to use once you see it being used once. I remember the first time I tried following the videos on YouTube I got completely lost.

One thing you need to do for gamepad input over keyboard is add a deadzone modifier. This will take care of the drift when the inputs are close to zero as most gamepads don’t exactly zero out.

I even went on to use touch input with the enhanced input with little effort.

Steps:

  1. create your Input Action components. There’s a few ways to do this and I much prefer using 1D axis over the 2D axis inputs for up-down/left-right. These are for analog inputs but you can use them for keypresses for forward/back or gamepad d-pad. For actions like a jump key/button on gamepad you use a boolean.

So, for button input, something like this:

And for movement, this is going to be left/right, you can do this

  1. Create an input mapping context and then for each input, you set up your bindings. For keys, you need to add modifiers to negate the input for left and right for example. This is an example of the kind of input you’d define.

  1. Next, you need to tell your game which Input Mapping Context you are going to use. It’s easier done in blueprint and typically in your player character but can be done equally as easy with C++. To handle in C++, you need to have a reference to the Input mapping context and add this. It’s a lot simpler with Blueprint.

For C++, you would have something like the following and note this has also the movement bindings. The inputs and context are set in the class via UPROPERTY entries in the header.

void APlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);

	const auto PlayerController{Cast<APlayerController>(Controller)};
	if (!PlayerController) return;

	PlayerController->SetShowMouseCursor(true);
	auto const Subsystem{
		ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController->GetLocalPlayer())
	};
	if (!Subsystem) return;

	Subsystem->AddMappingContext(InputMappingContext, 0);

	const auto EnhancedInputComponent{Cast<UEnhancedInputComponent>(PlayerInputComponent)};
	if (!EnhancedInputComponent) return;

	if (MoveAction)
	{
		EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this,
		                                   &APlayerCharacter::Move);
	}

	if (JumpAction)
	{
		EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Started, this,
		                                   &APlayerCharacter::JumpStarted);
		EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Completed, this,
		                                   &APlayerCharacter::JumpEnded);
		EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Canceled, this,
		                                   &APlayerCharacter::JumpEnded);
	}

	if (AttackAction)
	{
		EnhancedInputComponent->BindAction(AttackAction, ETriggerEvent::Started, this, &APlayerCharacter::Attack);
	}
}
  1. Setting up bindings

As the above C++ shows, it’s not that different from the old input system but you do this via Input actions. The use of the calls are a little different. Note that even boolean calls have the same signature which is actually good. Pay attention to the InputActionValue and how you get the value from it

void APlayerCharacter::Move(const FInputActionValue& InputActionValue)
{
	if (IsAlive && CanMove)
	{
		const float MoveActionValue{InputActionValue.Get<float>()};
		AddMovementInput(FVector(1.f, 0.f, 0.f), MoveActionValue);
		UpdateDirection(MoveActionValue);
	}
}

Blueprint is similar to the old system as well. For movement you’d typically use the triggered which will fire every frame.

For the buttons/boolean like jump and in this case crouch you can use the started which is like pressed, and completed which is like unpressed

image

So, that’s pretty much it. There’s way more to it than this but for the courses, this will let you cover absolutely everything.

For mouse input, such as using it in a third person game, the Input Action is a 2D Axis. I’ve taken this from the stealth course as an example but as you can see, it is actually relatively simple.


1 Like

Second reply regarding the quest course. There was a VR course going back a number of years that worked quite nicely but the issue was it was designed with an older version of Unreal (4.22 I think) and the issue is hardware has changed so much and so has VR input, especially via Steam, that it was decided the course was to be retired and taken down except for those with the course.

The course was tough. I tried it 3 times myself before I finally got through and basically you need pretty advanced maths and C++ skills. There may be a new course in future but will not be for Quest 3 specifically. More likely it will target OpenXR in general and probablly work via Steam or Oculus but not target oculus builds specifically - you could probably just write a whole course for Android builds alone.

I hope this answers your question.

1 Like

Thanks, that’s great. I’ll keep searching for a decent quest 3/openXR unreal course. They all seem to be out of date unreal 4 quest 2 courses currently.

Once I’ve mastered it myself I’ll release my own Udemy course. I have a few Blender courses on there so far.

There is plans to create a new one but vr is not popular as far courses are concerned.

As the the link above, I’m going to have to ask you to remove it. It’s against the rules of the community to link to paid for content here. Sorry. I appreciate it is for example purposes only but it is better to be safe.

1 Like

By the way, before I purchase, do you have your own affiliate link to the course so I can ensure you get 95% of the profit?

I am not sure. It’s a it late to check as the community manager is based in the UK.

If you purchase through the site here we get 100% if that helps.

I’m in the UK too. Let me know your udemy referal link tomorrow and I’ll purchase from there :+1:

I’ve posted a request about this to our team but still waiting to hear. Sorry for the delay in answering.

Here you go: https://www.udemy.com/course/unrealcourse/?referralCode=4BCCDCEC99403756C211

Also, if you purchase here on gamedev.tv website, you can email support@GameDev.tv and they will send you a udemy code which, if I understand correctly means we retain 100% of the purchase amount.
Here’s the list of Unreal courses from our site and if you purchase the bundle, the same applies - you can get the udemy codes. These bundles are incredible value for money.
Products | GameDev.tv

1 Like

Privacy & Terms