Steel Pinion is a tabletop inspired steampunk airship tactical strategy game. Deep ship/fleet customization, multiplayer, and open-source balance collaboration are built in from the ground up. Many technologies and techniques are implemented here to bring together the full game experience. This has been my greatest cross-discipline project to date. There is a blog in the site going into more detail, but if you ever ask me about how the development is going, I can talk about it for hours on end.
I talk about "Cursed Problems in Tactics Games" during article #8. Approaching that problem is hard, yet I want to build a system that can overcome typical strategy game balancing issues. We can't make everyone happy, however, we can give some power to users to fix their own problems. For the time being, I've created this tool which allows us to deeply inspect each turn and decision made by a player. We can walk through the event-sourced state changes backwards or forwards in time. Visualizing the match data this way lets us slow down and understand each explosion, side effect, crew position, and more.
A fun phaserJS 2.0 project with a playable demo for all DBZ fans. Play as the villians and crush the weak and pathetic Krillin.
Houdini has become my goto 3d modelling program for game asset processing. With it, I've been able to use a combination of wrangle nodes, and it's built in nodes to optimize models and compress intelligent shader features into the verts. I've established multiple workflows such as player customizable vertex coloring or complex destruction animation sequence templates for any future ship design. I've been able to compress features into verts, removing the need for textures (which works well for some stylized graphics). Although I've also developed a way to store the same data into textures utilizing COPS to flatten geometry, and interpolate vert positions into a 2D plane (aka texture).
Turns out making unique steampunk vehicles the world has never seen before isn't easy. There are tons of premade assets for humans, and well known vehicles, even many animals have models which could be used as a base. SteelPinion has animalistic airships with various interchangeable parts that must be conceptualized and created from scratch. I started uploading tutorial videos covering the 20 steps from concept art to game engine ready assets. A high level overview sample can be seen here. Training people outside of software engineering and in a more artist friendly workflow is satisfying. The results have dramatically improved our project's pace, since we need about 200-300 part/vehicle models before we are ready.
The advent of generative artwork has been interesting and controversial in video game usage. I've dabbled with A1111 (automatic eleven eleven) and managed to create a set of weapon designs which fit into our specific cannon dimensions required for our niche ship mod attachments. Each weapon needs to be attachable to a variety of ships and needs a specific circular base size as well as limited cannon length. This process is documented on SteelPinion discord server, which still includes our artists converting the flat concept into a 3d model; not replacing our artists, but saving them time.
biography.adviserly.com is an excellent timesaving tool to manage the onboarding of large dealership staff. It can be difficult to break down preconcieved stereotypes about dealership sales. No one wants to deal with an oily salesman! These generated biographies help quickly represent each staff member accurately by walking each user through a small digital interview; concluding with a generated biography.
There is another project which I began for my children which teaches the importance of emotional maturity; the criticality of understanding oneself. It started out as a specification document, which is rather dry and unreachable for children, so I began converting it into a narrative. Since I wanted to visualize the characters and possibly convert them into playable characters some day, this workflow was created. Utilizing a combination of tools to specifically generate clean consistent concept art for the front, back, side of a person is as fun as it is addicting.
An epic tale told over pixels, we spent 8 years working on it. The project's hand crafted pixel assets are one of a kind, beauitiful, and difficult to replace. The primary artist landed a job at Blizzard and this project ceased. This was good for us all because we gained so much experience working together, and we all proceeded in different directions professionally. The closed alpha testing site is here. Regal Arbor was originally built in Unity 3D version 2 before sprite layers were supported. Logic was written in unityscript, then converted to C# back in those days. Before totally closing up shop, a more modernized approach with terraform handling IaC (infrastructure as code) gels together a Vue website. PhaserJs 3.0 was the last game engine we used with some new advantages and disadvantages. With the main advantage being project orginization and modern vanilla javascript.
Being deeply inspired by XCOM2 map generation, I allowed myself to get distracted amidst the SteelPinion programming tasks. We now have a deterministic seedable map generator which is player modable, and compatible with all the features of the SteelPinion game. What is more is the ability to debug the generation of these maps with noise layer image files as well as a 3D web visualizer. The key to successful procedural generation is found in understanding random numbers, a most crucial mastery.
My exploration of swiftUI turned into a deep disgust with the ecosystem, ultimately causing me to convert the entire project to NativeScript. I spent 6 months learning swiftUI and building a management portal which included some moderately complex photo editing capabilities and A.I. adjustments. After getting fed up with swiftUI, I converted the project to NativeScript and rebuilt to parity in less than one month.
A whitelabel app making service for tax preparers. I used phonegap to build an app template which was then rebranded many times for each tax preparer. Back when I was working downtown in office, I rode the train for 15 hours a week. During that time, I slowly worked on this concept and partnered with a tax preparer to sell it to other companies around the country.
My attempt to save the subprime lending world. Once I understood how difficult it is to payback high interest loans, I made a prototype app which explained how interest capitalizes with automotive loans and how one may lifehack the system to gain an advantage. Half the organization loved the idea, while other half thought it would be detrimental to our business model. Ultimately, this app was worked into the primary website for lenders, but removed the core advice for how to reduce the percentage utilizing the laws.
Taking the S.A.T.? Sending your perfect results to a prestigious (or not so prestigious) college? Then there is a good chance you will be using this tool and workflow. A great number of people and talent behind the scenes that made such a tool possible. Choosing what you want to send to prospective universities is easier now with the score sending workflow
An evolution in how we've handled historical dms data in house. After a new data source is discovered; that data from N unknown sources runs through a series of rules. Failure to meet specification places individual rows to the side. We have at least five dms providers with changing schema (some of which include manual entry). This allows alerts to be precise whilst continuing to deliver on the n% good data that always exists in a setting where users hand type information.
Look, reports aren't fun. Fancy numbers are needed to prove a business is functioning as expected. The right numbers communicated at the right time can mean the difference between a churn or a continued B2B (business to business) relationship. This reporting pipeline was designed to flexibly fragment and chunk portions of our lambda fleet to work through customer segments piece by piece. Processing can be replayed for better devEx and troubleshooting. A scheduler controls when reports are delivered, and our internal email-api handles delivery integrity. Finally the reports are published as fixed static sites for greatest portability.
Anyone whom has worked with the dms provider cdk knows just how much of a snowflake (unique server) cluster they have in the backend. I stood up a fault tolerant API interface in front of the CDK API so that our data driven products could be reliably powered by current dealership data. Datasets are not prejoined; we have to aqquire auxillary data whilst avoiding race conditions introduced by cdk's server overload and retries. Our service translates the xml structure into a more modern json while abstracting the taxing time sensative join complexities. Finishing touches included a chat bot named CDKen.
An equity data mining solution. Participating dealerships have their dms data feeds monitored realtime for near immediate notification of a customer on premise. This allows sales persons to head into a conversation with a list of opportunities, and ice breakers that match the profiled personality to boot!