Fred Brown Althot

Technical game designer


I am a technical game designer with experience delivering published games.

Upcoming games
  • Equinoxe, 2024

    Equinoxe is a third-person, 3D platformer, fantasy action-adventure game produced in 15 weeks by the students of Campus ADN for their end-of studies project.
    • Additionnal programming
      • Created a "dreamworld" post process effect using Unreal Engine's material graph editor: World-aligned distortions give an out-of this world feeling to the surroundings.
      • Set-up a build machine to deliver regular playable executables, using Unreal's own Automation Tool along with Perforce and 7zip in a batchfile called by the Task Manager.
    • Data manager
      • Set up and managed the Perforce version control project.
      • Taught all students the basic daily operations of getting the latest version (checking out their files and submitting their work).
      • Taught more complex manipulations to select students as needed.
    • Technical support
      • Investigated and found solutions for a wide range of technical issues.
      • Collaborated with other technicians to escalate specific issues through the proper channels.
  • Anima, 2024

    Anima is a third-person 3D puzzle-platformer game produced in 15 weeks by the students of Campus ADN for their end-of studies project.
    • Additionnal programming
      • Created the bonus levels' post process effect using Unreal Engine's material graph editor: Color-coded outlines and a screenshot of the shader's own markup code scolling on the walls give a "computer simulation" effect to the bonus levels of this video game.
      • Set-up a build machine to deliver regular playable executables, using Unreal's own Automation Tool along with Perforce and 7zip in a batchfile called by the Task Manager.
    • Data manager
      • Set up and managed the Perforce version control project.
      • Taught all students the basic daily operations of getting the latest version (checking out their files and submitting their work)
      • Taught more complex manipulations to select students as needed.
    • Technical support
      • Investigated and found solutions for a wide range of technical issues.
      • Collaborated with other technicians to escalate specific issues through the proper channels.
Games on Steam
  • Chronique, 2023

    Chronique is a third-person 3D fantasy action-adventure game produced in 15 weeks by the students of Campus ADN as part of their end-of studies project, with the help of veterans such as myself.

    Install game
    • Helped students by answering their technical questions and debugging their code in their 15 weeks of production. F.A.Q:
      Can you figure out why this ingredient doesn't work the first time you try?
      Answer: There's a bool that gets turned to true the first time you try but it has to already be true when you try.
    • Programmed some of the less glamorous parts of their game.
      • The core of the save system.
      • The player start positions.
      • The level loader.
      • A system of scriptable objects and unity events to make it easier to access data and to synchronize scripts.
    • Set up and managed the Perforce version control project. Taught all students the basic daily operations of getting the latest version, checking out their files and submitting their work, and as needed more complex manipulations.
    • The core of the multilingual system.
      • A scriptable object that centralizes all game texts and outputs it in human-readable format to make it easy to share in a text file.
      • Each language option is saved as an asset, and referenced in an array in the central data asset with a function to switch which option to use.
    • A universal trigger box.
      • A script that accepts an array of transforms (drag and drop any object in the scene) and a label string (most commonly "Player") to trigger on enter and/or stay and/or exit.
      • Sends a message if it's not sure it has a collider set to trigger, sets itself to ignore raycasts by default.
      • Uses UnityEvent to activate almost anything in the project.
      • Failsafe debug messages and optional messages on activation.
      • Pros: Simple to use. Talks as much as the user needs. Allows the level designers to do anything.
      • Con: Allows the level designers to do almost anything!
  • Forbidden Escape, 2022-23

    Forbidden Escape is a third-person 3D sci-fi action-adventure game produced in 15 weeks by the students of Campus ADN as part of their end-of studies project, with the help of veterans such as myself.

    Install game
    • Helped students by answering their technical questions and debugging their code in their 15 weeks of production. F.A.Q:
      I keep getting an index out of range error but I'm sure the array isn't smaller than that!
      Answer: Are you sure you're looking in the right array?
    • Programmed some of the less glamorous parts of their game.
      • The core of the save system.
      • A pooling manager.
      • The cheat-mode with the super secret code word.
      • The player start positions.
      • Game state changes upon completing objectives.
      • The level loader.
      • Provided support after the students' graduation during the post-production to help get the product on Steam.
      • And other assorted needs.
  • Spirits' Creek, 2022-23

    Spirits' Creek is a third-person survival horror game produced in 15 weeks by the students of Campus ADN as part of their end-of studies project, with the help of veterans such as myself.

    Install game
    • Helped students by answering their technical questions and debugging their code in their 15 weeks of production. F.A.Q:
      OMG! The avatar is broken and won't go where I say!
      Answer: Check if you have an extra camera in your scene and the controller goes by its orientation instead of the avatar's follow camera.
    • Programmed some of the less glamorous parts of their game.
      • The core of the save system.
      • A pooling manager.
      • The cheat-mode with the super secret code word.
      • The player start positions.
      • Game state changes upon completing objectives.
      • The level loader.
      • Provided support after the students' graduation during the post-production to help get the product on Steam.
      • And other assorted needs.
  • DreamWatcher, 2020

    DreamWatcher is a third-person 3D puzzle-platformer that offers about four hours of gameplay to very positive reviews.

    Install game
    • Delivered a game in 14 weeks of remote production.

      A team of scripters taken from the level design students, some with prior programming experience, used the skills we learned in the preceding months to write most of the gameplay code in C#. Some wrote scripts full time like me, others part-time as they also designed a level. Technical artists and animation students made it all look pretty. The covid-19 pandemic broke out while we were in pre-production and with the heroic effort of our teaching staff we adapted to a fully remote work environment with only a week of production time lost to setting things up.

    • Worked on the initial pitch team, then on the narrative bible team and the flow strategy in pre-production.
      • The level design students were divided in six teams tasked with pitching a game design with the following constraints:
        • A 3D game with a third-person avatar.
        • Only one environment (with variations) which could not be a forest or a city.
        • A maximum of four character rigs including the avatar.
        • At least 45 minutes of playtime over several levels.
        • A subject matter based on randomly selected words and pictures, we got "dream" and a close-up of the edges of an uneven stack of paper.
      • Given a budget of four animated rigs, including an obligatory avatar, we delivered a game on time and on budget with seven character types:
        • One avatar.
        • Four types of enemies.
          • Two types of monkeys using the same AI but with different skins and a different effect type (ice and fire) that reacted with specific puzzle-platforming ingredients, which extended our characters budget by overlapping it with the gameplay ingredient budget.
          • Two types of spiders with a variation in skin, scale and AI behavior (one retreats to launch projectiles, the other charges for a melee attack). By varying one behavior the characters budget was extended by overlapping it with the programming budget.
        • Two types of NPCs. The same mesh except for a mask most NPCs wear, the lone maskless character is central to the story and the others liven up the game with distinct narrative personalities and serve as collectibles when they are saved. One type of NPC serving as a collectible allowed us to extend our character budget.
      • Extended our characters budget by making it overlap with other sections of the budget.
        • By combining the characters budget with the models budget to vary skins
        • By varying the size of two enemies using the same rig and movement animations.
        • By combining the characters budget with the gameplay programming budget using half the enemies as puzzle ingredients and most NPCs as collectibles.
    • Worked on the programming team during production and post-production.
      • Programmed enemy AIs.
        • Level designers can define one or more patrol zones by placing a prefab of a basic cube that has isTrigger set to true and that has no mesh renderer, and passing it as a parameter in the enemy's script in the Unity inspector.
          Click here to see the patrol destination code.
          	public bool IsInZone(Vector3 destination)
          		{
          		if (nbZones == 0)
          				return true;
          
          			inZone = false;
          
          			for (int i = 0; i < nbZones; i++)
          			{
          				if (destination == myPatrolColliders[i].ClosestPoint(destination))
          				{
          					inZone = true;
          					break;
          				}
          			}
          
          			return inZone;
          	}
          
          	int cpt = 0;
          		increaseRange = !runAway;
          
          		while (!IsInZone(destination))
          		{
          		cpt++;
          		searchingAngle += searchAngle * leftRight;
          		direction = Quaternion.AngleAxis(searchingAngle, Vector3.up) * direction;
          		destination = tr.position + direction * patrolingRange;
          
          		if (!runAway && searchingAngle % 360 == 0)
          		{
          					if (increaseRange)
          							patrolingRange *= 1.25f;
          					else
          							patrolingRange *= 0.75f;
          				}
          		else if (runAway && (searchingAngle >= 45 || searchingAngle <= -45))
          		{
          					leftRight *= -1;
          
          					if (increaseRange)
          						patrolingRange *= 1.25f;
          					else
          						patrolingRange *= 0.75f;
          			}
          
          		if (patrolingRange > 40f)//40 was the draw range at the time.
          		{
          					patrolingRange = patrolRange;
          					increaseRange = false;		
          		}
          
          		if (patrolingRange < 1f)	
          		{
          					destination = tr.position;
          					break;
          		}
          
          		if (cpt > 9999)//duct tape to ward off infinite loops
          		{
          					if (IsInZone(destination))
          							break;
          					else
          					{
          							destination = startPosition;
          							break;
          					}
          		}
          
          			return destination;
          }
        • The enemy will start patrolling when the avatar gets within draw range, and will get to its attack range when the avatar gets close enough.
          • Monkeys and dream spiders have a projectile attack.
          • When the avatar is too close the monkeys perform a melee attack and the dream spider runs away to range attack distance.
        • Monkeys can be used as ingredients:
          • Ice monkeys make ethereal platforms solid.
          • Fire monkeys burn obstacles.
      • Programmed gameplay ingredients.
        • Platforms with smooth ease-in and ease-out.
        • A safe zone system: The avatar is teleported to the last visited safe zone when touching a damage area. Implemented as cubes the level designers placed where they wanted the player to reset when failing their platforming. Also activated if the fall state has run for five seconds to fix any issues like the avatar getting stuck in a collision or falling through the floor. The longest drop in the game was about three seconds, I gave it a two second buffer to save the player from having to reload from their last save if they find a collision issue anywhere in the levels. I've seen it make itself useful in gameplay videos posted by youtubers.
      • Programmed the save system which has worked flawlessly since launch.
      • Took charge of publishing on Steam.
        • Collected the money from all team members interested in getting the game on Steam.
        • Adapted descriptive texts from the narrative team to fit the Steam formats.
        • Created all achievements.
        • Built and uploaded the launch version and all updates.
      • Fixed game breaking bugs found by the players after publishing.
  • Blank, 2019

    Blank is a third-person 3D puzzle-platformer that offers about an hour and a half of gameplay to mostly positive reviews and was nominated as one of three finalists in the Best Indie Game category of the Numix prize 2020.

    Install game
    • Character animator during the 15 weeks of production.
      • Animated behaviors of two NPCs and one enemy.
Games announced yet unpublished