My name is Arnaud d'Orchymont, former researcher in structural biology, C/C++ programmer (SDL2 and The Unreal Engine) and Artificial Intelligence (AI) designer specialized in behavior tree design mimicking human behavior. Author of an AI extension used by more than 1 million individuals and designed for the video game Skyrim. I am proud to present to you my portfolio and I hope you will enjoy its contents. You can find a copy of my degrees by clicking on the following links: Bachelor, Master, PhD.
AI design & The Creation Kit
I worked during 3 years on an AI extension for the video game “The Elder Scrolls V: Skyrim”. The purpose of this extension is to increase player in-game immersion by greatly improving Artificial Intelligence (AI) of friendly NPCs (citizens) in order to make them act and react like true humans in relation to their environment or to an aggressor. Specifically, combat AI is revamped, with citizens using a new “Survival Instinct” feature that gives them the ability to evaluate danger from an aggressor and respond to it more realistically while under attack. Their non-combat behavior has also been expanded, with new and realistic behaviors including improved schedules, occasional travel, and better use and response to the world around them. Whether fighting or living their lives, NPCs will respond to things like the weather, or an individual’s profession and relationships.
Despite being unknown in the modding scene and my lack of formal training in AI design, this extension has became quickly very popular (more than 1 million users). This experience allowed me to become a skilled AI game designer and to learn how to use The Creation Kit (a modding tool for Creation Engine games). Read more.
C++ programming and Unreal Engine
I'm working on 3 Unreal projects: a building escape game, a battle tank game and an action-adventure stealth game.
Battle Tank is an open-world head-to-head tank combat game. The player takes control of a single armored vehicle and is placed into a battle on a random map. The player has control over the vehicle's movement and firing. Player can move anywhere in the terrain, which is surrounded by mountains. The terrain can be used to gain tactical advantage. Player and AI start with finite amount of health and ammo and each direct hit takes away health. The controller of the last tank standing wins. Read more.
Building escape is an adventure game in which players solve a series of puzzles using elemental clues and hints such as light and sound in order to determine what to do next. Players must trigger pressure plates and solves puzzles to progress towards the exit. Players are given a set time limit to unveil the secret plot which is hidden within the rooms. The code source of most of my C++ classes for this project is available here.
- Create a C++ class (called Grabber) allowing the player to grab a moveable static mesh in front of him and then to release it.
- Create C++ classes allowing the player to trigger events when interacting with trigger boxes. For example, I created a C++ class (OpenDoorActorRef) whose purpose is to rotate a static mesh (a door in this case) when the player positions a specific object at a specific place.
- Create a C++ class allowing the player to play a Bull & Cow game. The code source of the console application is available here.
C programming and SDL (Simple DirectMedia Layer)
I created my first video games by using the Simple DirectMedia Layer (SDL) library as well as the SDL_Image and SDL_ttf libraries. More precisely, I created a clone of Pong and a clone of Breakout.
Pong is a table tennis sports game featuring simple two-dimensional graphics. In pong, a ball travels across the screen, bouncing off the top and bottom walls, the player scores a point when the ball touches the right of the screen. To prevent the AI to score, the player has a movable paddle allowing to bounce the ball to opposite side. The code source of my Pong game is available here.During this experience, I notably learned how to:
- Draw and display 2D objects.
- Handle collision between 2D objects.
- Use external assets (fonts).
- Create a smooth gameplay. By smooth gameplay, I mean that the paddles move progressively (no brutal incrementation).
In Breakout, a layer of bricks lines the top third of the screen. A ball travels across the screen, bouncing off the top and side walls of the screen. When a brick is hit, the ball bounces away and the brick is destroyed. The player loses a try when the ball touches the bottom of the screen. To prevent this from happening, the player has a movable paddle to bounce the ball upward, keeping it in play. The code source of my Breakout game is available here.During this experience, I notably learned how to:
- Use external assets (textures) to display a paddle, bricks and walls.
- Optimise memory (VRAM) use.
Web design and CSS/HTML programming
I needed a website to host the descriptions of my projects and my portfolio, therefore I learned HTML and CSS programming language in order to create a website fiting my specific needs. I also learned how to use the CMS WordPress. The wesite ai-gamer.com as well as all the related pages have been created by myself. The HTML file (containing most of the CSS code) that I created to build this page can be found here.
In order to simplify the installation of my extensions for the video game “The Elder Scrolls V: Skyrim”, I created XML scripts designed to work with extension managers and allowing to automate the unpacking process of my extensions and to create a GUI from which a user can select which options from my extensions he wants to install. The script that I created to display this GUI can be dowloaded here.