Project Abby Perception is reality

About the game

Project Abby is a narrative driven exploration game where the player is being interrogated about an unknown crime. They have to find out about the player character’s identity as well as the crime committed. This is done by visiting memory flashbacks to interact with their environment in an effort to acquire information to answer the interrogator's questions.

My role in the project

During this projecet I had my first encounter with C++ programming, I was interested in dabbling into some programming because I did some C# a few years back. These are some of the fuctions I wrote:
  • An ease function that was used for multiple things in the games
  • Part of the UI that showed which items you could interact with
  • Opening and closing doors
  • Opening drawers and their contents
  • Making subtitles appear on screen (scaled to screen size)
  • What did I learn?

  • Some very basic C++ programming
  • Writing clear and understandable code
  • Writing technical specification documentation
  • Extra Information

    Project Abby Trailer

    void AGameHUD::DrawTextFromCenter(FString _TextToCenter, float _VerticalOffset, float _HorizontalOffset, FColor _Color, float _TextScale) {
                                            float TextScale = (Canvas->ClipY / BaseResY)*_TextScale;
                                            float tw, th;
                                            AGameHUD::GetTextSize(_TextToCenter, tw, th, Font, TextScale);
                                            DrawText(_TextToCenter, FVector2D(((tw / 2) / TextScale) - (tw / 4) + (HorizontalOffsetQuestion*TextScale) + _HorizontalOffset, (TextScale*GapBetweenText)*_VerticalOffset + (VerticalOffsetQuestion*TextScale)), Font, FVector2D(TextScale*BaseScaleOfText, TextScale*BaseScaleOfText), _Color);
                                        }
                                                        
    void AOpenable::UpdatePosition() {
                                            
                                                // Smooth the transition and apply it
                                                float smoothedTransition = Tween::Ease(Transition, EaseType);
                                                //float smoothedTransition = 3.0f*Transition*Transition - 2.0f*Transition*Transition*Transition;
                                                FVector lerpedLocation = FMath::Lerp(BeginLocation, TargetLocation, smoothedTransition);
                                                FRotator lerpedRotation = FMath::Lerp(BeginRotation, TargetRotation, smoothedTransition);
                                            
                                                SetActorLocationAndRotation(lerpedLocation, lerpedRotation);
                                            
                                                for (int32 i = 0; i < Contents.Num(); i++) {
                                                    Contents[i].Content->SetActorLocation(lerpedLocation + Contents[i].RelativePosition);
                                                }
                                            }