Skip to content
View btarg's full-sized avatar

Highlights

  • Pro

Block or report btarg

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
btarg/README.md

btarg

My favourite programming language is C#, and I mostly focus on game development and modding. I code in my spare time to learn as much as I can and to create the best solutions to problems I have with existing software and games.

I also own and operate the 21st portfolio, a student-run literature blog, and I occasionally write poetry and reviews for the site.

Projects

Godot Engine

Project Requiem is a work-in-progress turn-based RPG made in Godot 4 using GDScript. It is heavily story-driven and features an expansive design document with over 6,000 words outlining the game’s intricate narrative and mechanics. You can explore the design doc here.

Design document screenshot

Implementing the gameplay

In this project, I make heavy use of state machines to manage the gameplay flow. For example:

  • Exploration vs. Battle: State machines manage whether the player is in exploration mode or engaged in battle.
  • Character Battle States: During battles, each character has a state machine that determines whether they are attacking, defending, waiting, etc.

These states would then be responsible for updating the appropriate gameplay logic: for example, the ExplorationState updates the third-person player controller, whilst the BattleState updates a top-down player controller. These states are Nodes within the scene, that are children of the State Machine itself.

An example of a simple state in my state machine system

While GDScript was a new language for me, my previous experience with C# in Unity and AngelScript in Unreal Engine allowed me to quickly adapt and implement gameplay systems effectively.

The design of my data structures and gameplay flow is informed by previous attempts at creating similar RPG mechanics in Unity and Unreal Engine, as well as working with others (especially the friendly people in the official Godot Discord server) to collect feedback and improve the visuals and gameplay accordingly.

Early indev screenshot of the player in the "exploration state"

Disclaimer

I do not expect this project to be completed, as I am yet to source art assets. The code portion of this project is simply a way for me to sharpen my skills in Godot, whereas the Game Design Document has had far more time put into it.

ByteReserve (halted for now)

NodeJS Postgres JavaScript Vue.js Vite TailwindCSS

Screenshot of main page Screenshot of pricing page

ByteReserve is a pay-as-you-go, end-to-end encrypted file upload service (similar to DropBox, for example). The current code in the repo does not work, as I stopped developing it mid-rewrite. ByteReserve is my first large-scale full-stack JavaScript application.

It uses Node.js on the backend, and Vue with Tailwind on the frontend. This was my first time making a dynamic and responsible frontend user experience, but I was quickly able to adapt to using Vue from previous experience writing basic HTML pages for other projects.

The site would encrypt all user-uploaded files entirely within the browser, before uploading to BackBlaze B2. This ensured strict user privacy, and the storage was incredibly cheap. For further increased privacy, my PostgreSQL database would not store any sensitive information about users or files.

Users would be charged hourly based on "credits" that they could top up, rather than monthly out of real money on a card. This would ensure that people would not be charged when forgetting to renew a subscription: an annoyance I have with many other alternative services like Google Drive which I believe to be solved by ByteReserve.

Why I stopped working on this

Currently, the project's development is halted. The credits and billing systems are not yet implemented. At the moment, this project is too large in scope for me to test and deploy properly by myself. Also, a single point of failure in a privacy-focused application like this could lead to compromised user privacy (e.g. if my accounts are hacked, then the site could go down as there is no corporate entity backing it.)

Origami (Abandoned)

Java Gradle

Origami is a Minecraft server plugin for the Paper platform, which allows for server owners to create more a customised experience closer to that of modded Minecraft, regardless of the players' clients.

I used many tricks and hacks present in vanilla Minecraft code to create custom blocks and items, implementing a system which allowed the server owner to write simple YAML files to define custom properties for each item or block.

The plugin also featured extensive, easy-to-follow documentation, marking my first time writing proper docs for a programming project. I believe they turned out helpful and well-organised.

Why I stopped working on this

Other, more feature-complete alternatives exist now for server-side modding, but I learned a lot about backend and server development for games while working on Origami.

CraftGPT (Proof of concept)

Java Gradle

CraftGPT was an experiment with Langchain4J and PaperMC. The plugin allows a player on a Minecraft server to speak to a GPT-powered LLM, which could execute commands in the game. For instance, the player could ask for "something useful for mining," and be given a pickaxe by the LLM.

The plugin also **observed more general information about the players **in the server: for instance, if that player had asked more generally for "something useful," and they were low on health, they might recieve food or a healing potion to restore it.

Why I stopped working on this

Other, better alternatives for this idea exist, however I was one of the first to implement this particular idea in code, and I learned a lot about implementing "Tools" for large language models like GPT-4.

UnityC#

This unnamed 3D first-person exploration game was heavily dialogue-centric. It featured a Quake level importer so I could make levels with Trenchbroom, which while adapted from existing open-source code, was highly customised to allow me to place Invisible walls, triggers and Unity prefabs within the Trenchbroom editor.

This was also my first experience creating UI for a game, which I believe turned out very well: the game features an Undertale-inspired and DOS-like main menu, pause menu, and functioning dialogue boxes using the Ink scripting language. The UI looked great and was easy to navigate with multiple control methods.

Why I stopped working on this

I abandoned work on this game after I decided that the gameplay was lacking. I had not created a Game Design Document for this project like I later did for Project Requiem, which severely hindered my ability to craft a fun experience. I have used this as a valuable lesson for projects since, and have been creating more detailed documentation for both systems and narratives in current projects.

Java Gradle

Twitch vs Minecraft is a Minecraft Forge mod which allows a player's Twitch chat to directly interact with their game through commands.

It was heavily inspired by other existing projects like CrowdControl, but offered the easiest setup out of all available livestream interactivity mods, with pre-defined commands that I programmed myself.

Twitch Vs Minecraft was the project I used for learning Java, and served as a testbed for my Java development skills for a few years while I maintained it. These days there are again more feature-complete and up-to-date alternatives available, but I believe that my mod was the best in the category in terms of user experience (especially its unparalleled ease of use) while I actively worked on it.

Skills

My Skills

Contact

You can contact me on LinkedIn if you are interested in hiring a developer with any of these skills!

Pinned Loading

  1. Origami Origami Public

    (WIP) A Minecraft Paper plugin that allows for adding new blocks and items in YAML, using resource packs

    Java 4 1

  2. CraftGPT CraftGPT Public

    A Minecraft (Paper) server plugin which lets ChatGPT become God

    Java 1

  3. TwitchVsMinecraft2 TwitchVsMinecraft2 Public

    A Minecraft Forge mod that lets viewers on Twitch or members of a Discord server interact with your game.

    Java 3 3

  4. vuejava vuejava Public

    VueJS (Vite) app using Javalin as a backend with Gradle

    CSS

  5. UnityInkGame UnityInkGame Public archive

    Game made with Unity and Ink

    C#

  6. discord-openai-bot discord-openai-bot Public

    A Discord chatbot that uses OpenAI's API to generate conversation.

    Python 13 12