WELCOME

Welcome! my name is John Welter, a professional Technical Artist and Gameplay Programmer. This is my Hobby and Portfolio site where you can find what projects I’ve worked on, my own projects, and keep up with projects to come.

I am currently looking for full-time positions back in the game industry, and if you like what you see, check out the About tab for resume and contact info.

Thanks for visiting!


Published Titles

Life is Strange: True Colors

My first published title I worked on when I started my career at Deck Nine Games in 2020. I was brought on to take ownership of the player locomotion system, working with animation programming in Unreal for the first time. This included working with a proprietary motion matching system and look-at system, maintaining and expanding on a custom animation state machine in C++, and working with animators to make sure we had the assets setup and exported correctly to match technical needs.

Details of work on Life is Strange: True Colors

The Expanse: A Telltale Series

My second title under Deck Nine, and my first that I was able to see from pre-production through post-production and DLC. I designed and programmed the entirety of player control, including animation systems, different locomotion types (walking, mag boots, and zero G flight), the camera rig, custom collisions, and custom IK, for two different characters with drastically different locomotion needs. I also created systems for player VFX, a small DLC puzzlebox, and worked a lot on improving our systems for blending between cinematics and gameplay.

Details of work on The Expanse: A Telltale Series

Life is Strange: Double Exposure

After the Expanse, I was thrust again into a mid production LiS game. This entailed a full refactor of the player’s and NPCs’ animation handling, handled mostly through Unreal’s built in solution of animation state machines and control rigs. There was a new challenge in getting stairs animations to work, as well as stopping Max’s messenger bag from clipping during animation blending. I had a lot more of a hand in finding and squashing cinematics bugs, as well as helping to modify the seamless transition solutions to work in a new architecture.

Details of work on Life is Strange: Double Exposure

Ascent of Ashes

As my first venture in contract work, I was brought on to help bring this game to early access within a tight schedule. I learned how to use Godot on the fly, and learned a lot about XML data driven architecture. I worked on refactoring the animation system to utilize XML and generate animation trees from scratch at runtime, created a wall-cutaway and room ID system, built the foundations for combat handling, and worked on many rendering effects. I learned how to track performance and optimization using tools like dotTrace, dotMemory, and RenderDoc.

Life is Strange: Reunion

My last project at Deck Nine, I worked on bringing some of the cinematics technology I owned on previous projects into our new timeline-based system. I also explored new systems for locomotion handling and real-time conversations. The locomotion, camera, and seamless transition systems in the final release are the cumulative products of my work and legacy at Deck Nine.


Current Projects

PictoPuzzler – NES Homebrew game

A personal project/experiment in NES development, tools/audio programming, and resource restriction. Programmed entirely in 6502 assembly, and playable on original hardware utilizing the MMC1 mapper for memory bank swapping and save files. PictoPuzzler is a nonogram anthology, similar to Picross. Here are links to the development blog, the source code and assets for the game, as well as links to the two tools for content generation, a nonogram creation tool and an NES 2A03 emulator and song writing tool (both works in progress)

QTE RPG – Unreal Experiment

An experiment in implementing some of my favorite RPG mechanics and technology in Unreal Engine 5. The main focus is on making turn-based combat more of an active experience by creating my own version of action commands, QTEs, and dodge/parry systems of games like Paper Mario and Clair Obscur. Follow along for updates with the development blog!


Blog Posts


Nonogram Dev Log #9 : Copy Paste!

For a while, I’ve been stuck on making progress on the music tool because I’ve been wondering if I should switch backends from WPF to something else – ideally, something more robust in terms of making custom widgets. But, all the ones I like looked really complicated to get into, and would require a full rebuild of the engine from the ground up in C++. I was hoping to start moving all personal development to lonely little linux distro, but the sunk cost fallacy wins today – though, I think I got something pretty good out of it! One of…

Keep reading

QTE RPG Devlog #0: Inspiration

Sometimes, it can be hard to find proper inspiration for a project. I have lots of tiny, disparate ideas here and there, but I can never quite create a vision in my head clear enough to act on. Recently though, I had the chance to play a new game, and a couple ideas finally clicked together for me enough to start a small experiment.

Keep reading

Nonogram Dev Log #8: Music Tool

It’s amazing the time you can lose to personal projects when you get like, “employed” or whatever it’s called. Now that that’s out of the way (even if I wish it still was IN the way), I’ve had some time to re-look at the engine – and I’ve got issues. Mainly, I created this game with only a few screens in mind- so few, that I thought I could get away with minimal ROM use by just throwing the full nametables for each game mode plain raw into the ROM. Big mistake, of course. I have ideas to optimize that…

Keep reading

Nonogram Dev Log #7: Puzzle Display

It’s fairly common in Nonogram games to display the image of the puzzles you’ve completed. in Mario Picross, it was the final pixel solution, while in Konami Pixel Puzzle, it’s a the full color image. while I COULD do either one, It’s probably best to keep it simple and go with the former’s solution- I already basically create the CHR data info when parsing out the clue numbers, so just repurposing the data will work just fine!

Keep reading

Something went wrong. Please refresh the page and/or try again.