After completing the two tutorials from Part 2 and playing some third person games, I feel ready to start experimenting with blueprints. Blueprints seem the better modality for free-form experimentation compared to code because they provide visual feedback in both the event graph and the scene itself which will increase my ability to read the results of each iteration. At the end of this part, I will outline the project goals, however, these goals will be further developed in my next article.
Here is an excerpt from Mark Haigh-Hutchinson's book that describes some important decisions that will be made for this camera system today; i.e. when the camera is facing in a direction that is straight forward or to the right of the character,
where does up on the keyboard or analog control stick make the character move? (italics from source text):
"A control reference frame refers to a relationship between changes to the controller input and how it affects movement or other aspects of player control. In a typical first person game, the control reference frame typically corresponds directly to the direction in which the player character is facing (we will refer to this as character-relative), and is usually restricted to a 2D orientation rotated around the world up-axis. In third person games, the control reference frame is often based on the relative position of the camera and the player character (known as camera-relative...), or sometimes the view transform of the camera (screen-relative). On rare occasions, the character-relative scheme can be used in third person games, although this can cause problems when the character is facing the camera. A lesser used control reference frame is world-relative, where the controls are based purely on the world coordinate scheme irrespective of player character or camera position...
The most important part of the control reference frame is that it should always reflect the intended action of the the player. Preserving the intended movement of the character under control reduces the disorientation than many players feel."
Camera-relative schemes take into account both the positions and orientations of the camera and player. A simple camera relative scheme draws a line (or vector) from the camera to the player and considers it the forward vector for character movement. While this does not apply to Journey, the controls do not change when your character turns to faces the side of the screen. This would not work well for an analog control stick because if the player intends to go to the right they must tap right to orient their character in that direction and then immediate hit forward on the control stick with no other directional input to steer them off course. This may work with discrete directional controls like the separate keys on a keyboard, but fails to allow players to complete their intentions with continuous directional analog input. Now, let's start experimenting!
For the second experiment, I kept the same component relationships and changed one boolean that influences camera orientation. The name of the variable is "Use Controller View Rotation" and it is highlighted in the picture below.
I will wrap up this article with one more experiment that led in a promising direction. I started from a fresh Blueprint Third Person project and copied the Camera Boom component, adjusted the x-value for its Camera >> Target Offset to 500 UU, and then made the existing Camera Boom setup a child of this Forward Displacement component. I also disabled "Use Controller View Rotation" on Camera Boom but not Forward Displacement as shown below.
GOALS
1. A faraway camera that trails the character with similar behaviours to the camera in Journey (ground-based camera only)
2. Custom collision avoidance to fit with the ideas expressed in "50 Camera Mistakes" as implemented in Journey
3. A hint system that allows camera movement to create cinematic shots while maintaining persistent input directions
4. To use the textbook cited above to expand on these goals and explain the principles behind my camera design intentions