top of page

The Game Assembly asks its students to create a showcase project. To showcase ones interest and strengths. I chose to do something not so flashy for my showcase project. I went through my entire code base to set up tests and debugging aids. I used Premake, precompiled headers, and jumbo to decrease compilation time. I set up Pix to do better diagnostics. I also ended up using some Lua coding to help make some UMLs, comments, and documentation aids.

I love the idea to create modules one can click in and out of any engine, like Lego pieces clicking together. I want to iteratively become a better programmer and actively try to create better & cleaner code. 

Showcase Project: Refactoring
img43.png
What is this website about?

Part of the programming course at The Game Assembly, (=TGA) is to find an internship position as a game programmer. TGA assigns its students to create a showcase project, a CV, and a website. This website was created during this program. Let’s connect if you think I could be a good fit for your team. christopher.dan.walter@gmail.com
https://www.linkedin.com/in/christopher-walter-a36200248/


“I am part of The Game Assembly’s internship program. As per the agreement between the games industry and The Game Assembly, neither student nor company may be in contact with one another regarding internships before April 23rd. Any internship offers can be made on May 5th, at the earliest.”

one35.png
Who am I?

My name is Christopher Walter, and I am 24 years old.
I was born in Bern, Switzerland, and live in Stockholm, Sweden. 
I'm a programming student at TGA. I spend my free time tinkering on small board games and short stories.

Layout information

I expect you as a reader to skip any segment based on your values.
The titles try to be indicative of what the segments are about.

Below I will present 6 group projects along with 6 solo Projects where the former were assignments from TGA with each of them averaging 15 students in a constellation of 6 programmers, 3 level designers, 4 graphical artists, and 2 procedural artists, and the latter being self assigned projects I used to get better at programming.
The former tries to showcase my soft skills, the latter my hard skills.

I will follow this layout loosely: (1) Description of the project. (2) My contribution. (3) My focus. Which always came as a result of reflecting on the previous projects. & reflects what I wanted to improve in myself. (4) My shortcomings. (5) A lesson I won from failing.

Why this Web design?

I want the design to represent how I approach problems. 

I believe no single thing has value alone. It only gains value in working together with other things. Even the best-written book only works by using a language it has not created. Hence I care to show many projects here on one page together for a holistic perspective.

I believe in separating concerns, to never try to accomplish two goals at once. Even if the goals are very similar, it is, to me, better to think of them as two checkpoints. And one might find a checkpoint that is between them where one can get first. Hence I separate here each project into a small, bite-sized segment, honing in on one idea each.

Group Project : Lady of the mine

A project in the groups own game engine. A game inspired by Amnesia, for which I designed an AI system. My focus during this project was to push my work from "behind the scenes" to "in the open". I previously had worked a lot without direct instruction or consultation with my group. So before I started work on something, I wanted to make sure that it was something that aligned with the team's values. I offered people help and tried to be available for any ideas. But I didn't take any initiative if the answer was no. I delivered well on the workload assigned to me and was happy that the users of the systems got the systems in good time and were happy. I feel I would have liked to have spent more time on more active management, communication, and planning. I feel I want to find a way to establish these as values my group can agree on and account time for.  

imagecave2.webp
Solo Project: Reflection

I rather simply wanted to group components by types. To have better dynamic objects. I especially wanted to guarantee that our object had an invoker function to do obj->Do("something"). Which I believed would be useful for an AI commanding system. I learned a lot from colleagues about different ECS systems and designs. POTs & raw data. To learn, I also reached out online to more senior programmers. & received a lot of advice that humbled me. My biggest goal was to "save types" to have a type-id that gives you a 'type name' an runtime to use for template functions. & I was able to achieve it. I learned so much about macro programming & variants. & would love to dive deeper into variadic programming in the future. 

Bild1.png
Group Project : Arinn Engine

A project about designing our own game engine. It is something very unique to this course and the biggest reason I chose to travel to Sweden to attend TGA. I designed our data structures and a component-object system. My focus was on maintainability. Since we had such a big, long-term project. I felt it was important to take time on fundamental structures. Bug prevention, in a way, to reduce the debugging workload that was ahead of us. So I showed up with UML's arguments and diagrams. Yet failed to motivating my worries. Prevention is very difficult to sell. Because you sell something without someone having an urgent problem. We as a group failed to finish this project. And my work grew into a debugging monster. I feel I sacrificed face, time, and effort to push for refactoring ideals. By the end I bend a leg and stopped pushing more initiative on something that wasn't going to happen. I felt like a car mechanic who started working on a car without establishing with the customer any prices. The lesson being to not report my work after it is done. But to ask before about its values.

arinn3.png
Solo Project: Graphics Engine

I made a graphics engine with DirectX 11. I focused a lot on light, using cascading textures & saving light in cube map probes. One of our teachers is very talented in this field; hence I know there is a lot left for me to learn. But I am very happy I was able to create a "Pipeline" class. That held all kinds of possible configurations; a mesh might have to be drawn. Like which textures, shaders, groups, and rasterizers it should use. I would have loved to work more on it, as graphics programming is very visually rewarding. I have planned to play more with light. I also, through my studies, learned how to use compute shaders, which I believe to be a good skill to have.

Bild2.png
Group Project : Goat To Hell
Solo Project: Physics Engine

I first implemented AABBs then OBBs then SATs then SDFs then the GJK algorithm. I created 6 base classes : ORB (which is an n-dimensional ellipsoid), BOX (which is an n-dimensional quadrilateral), SIMPLEX (an n-dimensional shape with the least corners to be an n-volume, like a triangle or a pyramid),  COMPOSITE (which is a shape that holds other shapes), PLANE (which is a flattened other shape, like a projection), and PRISM (which is a PLANE shape with a LINE, where the line dictates the shape). These have a visitor pattern where one can get a bool for collision, check in an n-quadtree in which box their centre is and ray-cast as well as ray-march over them. The next step for me is to do cube-marching & visualizing a lot of these systems. Including heavier testing and experimenting with new algorithms.

Group Project:  Fallen Star

A 2D platformer made in TGE (TGA's own engine), I developed the movement system, the sound system, and the enemies.
I focused most on management. Distributing work well. I set up Youtrack tickets, even post-its with small tasks to divide work well. Because of that, I communicated a lot and noticed I had a lot to improve in communication skills. I made some people feel frustrated. The lesson I took away was, "Always communicate expectations and inquire about expectations." 

Solo Project: Rotors

I learned geometric algebra (very fun) and interacted with a Youtube community of math teachers. I ended up even making my own little videos I send to classmates. I held a lot of after-class lectures on fundamental concepts of rotations. Trying to make sin, cos, pi ,dot, cross etc., a bit less scary. I found one n-dimensional approach with matrices. But I want to find one where the input is easy for a user to construct. When I really understand rotors, I will make a video on them and perhaps find a good, approachable and visual method. But I am very comfortable with quaternions and have helped every group with their rotation bugs. So much so I know most rotation bugs by heart when I see them.

R.png
Group Project: OutFoxed

A Unity puzzle project where I wrote the buttons, enemies & tiles;
I focused on the "core systems" and being essential to the team. I asked what was needed for the level designers and gave them the features requested. Because of that, I didn't pay too much attention to what others worked on and didn't involve myself with management. Which led to me working alot overtime to complete the code base.
The takeaway lesson is "To actively work on working together."

 

Solo Project: Data Logistics

I created a logistical system that handles inquiries,
separating trigger and conditional inquiries (ON-Event & IF-Checks).
(1) The conditionals (IF-Checks) are wrappers that work like this:
{A,{B,-C}, C} = (A or (B&!C) or C) where A,B,C are integer-id's. One writes: if(Check(Wrapper_Obj)){} (2) The triggers for ON-Event are postmaster registries. One writes: bool Call override{On(Event_Obj){};}
Both work with keyboard and mouse events & have ever expanding additional events such as mouse-up, mouse-left, mouse-over(Obj_ID)

I love card games, and card games often use these "trigger" and "condition" ideas. I am very happy the teams I worked with enjoyed using it, and the different feedback helped me to improve it. But although the interface is clear, it is a bit of a complicated blob inside due to optimization strategies. Hence the lesson is: "Don't prematurely optimize"

braha.jpg
Group Project: Astro Chase

A Unity project were I designed the 3D path system for an auto runner. I focused on impressing with my code. For a multitude of reasons, including no prior experience with Unity,  C++, C# or collaborative work. I felt the best way to work was to impress with code. Though my system wasn't a "core feature", the game would have worked lovely without it. Which was something I took to heart. Lesson: "Don't create extra work for others."

Solo Project: Tensors

One ought to really ask the question: why I work with n-dimensionality instead of case separations for each dimension & dimensional interaction. I really care about having only one place where things can go wrong. & I really care about flexibility. If my vectors would have diverged for every dimension my entire code, all objects and components etc ... would have had to diverge. The Tensors are like n-dimensional glue holding my projects together. But they are frightening due to their complexity. I love Mathematics and Tensors posses some tremendous hidden beauty to me. They have challenged me and have allowed me to grow comfortable with c++ templates.

image_Fjh3JHN-thumbnail_webp-600x300.png
bottom of page