Posts

Showing posts from 2021

Unity Using Events and Building Effective UI Systems

September 7, 2021 Unity Events UI Systems Title: C# Events in Unity! - Intermediate Scripting Tutorial By: Unity Youtube Link - Tutorial #1 Description: Brief introduction to using Events in Unity. Title: How To Build An Event System in Unity By: Game Dev Guide Youtube Link - Tutorial #2 Description: Quick showing of implementing a basic Event system in Unity for gameplay reasons. Title: Delegates, Events, Actions and Funcs - The Observer Pattern (Unity & C#) By: One Wheel Studio Youtube Link - Tutorial #3 Description: Covers Events, as well as Delegates, Actions, and Funcs specifically through the Observer Pattern in Unity. Title: Game Architecture Tips - Event Driven UI - Unity By: Dapper Dino Youtube Link - Tutorial #4 Description: An Event system built in Unity specifically with a focus on UI. Title: Building Unity UI that scales for a real game - Prefabs/Scenes? By: Jason Weimann Youtu

Pokemon Randomizers - Universal Pokemon Randomizer, UPR ZX, and pk3ds - Github Links and Intros

August 23, 2021 Pokemon Randomizers Resources Title: Universal Pokemon Randomizer By: Dabomstew Github - Repo #1 Description: Original top level pokemon randomizer for generations 1 through 5. Title: Universal Pokemon Randomizer ZX By: Ajarmar Github - Repo #2 Description: Extended work from original universal pokemon randomizer that works for all original handheld generations 1 through 7. Title: pk3ds By: kwsch Github - Repo #3 Description: Randomizer for the 3DS pokemon games, which were generations 6 and 7. Overview I have always been a huge fan of pokemon randomizers for their ability to add replayability to games I am always looking to replay with different variations. I wanted to collect and archive some of the best current tools for doing so in one place to make them easy to reference, especially through their github repos since I am interested in seeing if I can make any contributions to add fun and exciting r

Adobe Photoshop - Introductory Tutorials - Game Art Focus - Part 1

August 12, 2021 Adobe Photoshop Game Art Tutorial List Title: Total BEGINNERS guide to drawing in photoshop 2021 By: Trent Kaniuga Youtube - Tutorial #1 Description: Quicker coverage of just a lot of general tools and what they do in Photoshop. Title: Learning the basics of drawing in Photoshop By: Michael Clarida Arts Youtube - Tutorial #2 Description: Shows a drawing example within Photoshop to show some of the tools at work to create a piece. Title: HOW TO PAINT 2D GAME ART IN PS - STEP BY STEP TUTORIAL By: Blackthornprod Youtube - Tutorial #3 Description: Very quick example on some tips for drawing 2D game assets. Title: How To BLEND COLORS Like A Pro (For Beginners) | Photoshop Digital Painting Tutorial By: The Geek Artist Youtube - Tutorial #4 Description: Quick example of how to blend colors in Photoshop. Title: Lava Potion Game Asset Tutorial in Photoshop - full game design tutorial By:

Unity Shader Graph - Energy Shader - by Casey Farina

Image
August 9, 2021 Shader Graph Unity Title: ART 200: Creating an energy Shader in Shader Graph in Unity By: Casey Farina Youtube - Tutorial Description: Tutorial on creating an energy effect on a surface with Unity's Shader Graph. Introduction This tutorial covers the creation of a shader in Unity's Shader Graph which covers the surface of an object with a glowy, plasma-like effect. Further in the tutorial they cover how to make the less pronounced parts of the effect actually completely transparent, which gives a cool effect on its own, or allows for this to be placed over other effects or surfaces to apply the effect with gaps showing the surface below. Fig. 1: My Results of the Energy Shader Along with Shader Graph View Quick Notes HDR Color and Emission It starts with HDR color with significant intensity into Emission to create glowing, radiant effective. Voronoi Noise in Layers Use Voronoi noise to create moving globules effect wit

Modding Monster Train - Patch to Allow for Adding Custom Units with Custom Syntheses

July 28, 2021 Modding with Harmony Monster Train Title: My Monster Train Custom Unit Synthesis Patch By: Steven lilley (Me) Github - Link Description: Link to my github page leading to my patch for adding custom units and syntheses to Monster Train. Overview Monster Train modding suffered from a lot of issues when the latest large DLC was made, the Last Divinity. Trainworks, a modding API created to help with modding Monster Train, was created before this DLC, and its addition broke many of its features. One of the large additions from the DLC itself was unit synthesis, which let you break a character down into a unique upgrade for another character. This however was impossible to implement with Trainworks since it encountered new bugs because of unforeseen interactions with the new content. Originally, it would not even run if using new content, but a few updates to Trainworks at least made using them possible. However, unit syntheses continued to be

Art Software Resources for Wacom One

July 20, 2021 Software Options Digital Art Title: What’s the best software for a Wacom drawing tablet? By: Bruno Brasil - Drawing Tablet World Drawing Tablet World - Link Description: Gives a list of softwares to use with Wacom tablets, with descriptions of what they offer. Overview I recently received a Wacom One tablet, and wanted to look into which art softwares work with it and work with it best. As far as I can tell it seems that most general digital art tools will translate decently to greatly when working with a tablet in this day and age, so it doesn't seem limited in that aspect at all. Now I just need to figure out which one(s) make the most sense for what I want to use it for, and this resource seems like a decent starting point. After this, I want to work it down to one or two softwares and start to round up some tutorials to get my footing with them. Most likely I will look to start with Adobe Photoshop since I have a little experienc

Modding Monster Train - Harmony Reverse Patches

July 14, 2021 Modding with Harmony Monster Train Title: Harmony ParDeike - Reverse Patch By: Harmony Harmony - Documentation Description: Harmony documentation on patching with the Reverse Patch. Overview I was investigating ways to use Harmony to access private methods and fields from classes within the Unity target game itself, Monster Train in this case. One of the first direct options I came across was using reverse patches. Basics of the Reverse Patch "A reverse patch is a stub method in your own code that 'becomes' the original or part of the original method so you can use that yourself." Typical use cases: easily call private methods no reflection, no delegate, native performance you can cherry-pick part of the original method by using a transpiler can give you the unmodified original will freeze the implementation to the time you reverse patch Implementation After seeing its first use case being calling private

Unity Shader Graph - Black Hole VFX - by Gabriel Prod.

Image
July 7, 2021 Shader Graph Unity Title: Unity VFX & Shader Graph - Black Hole Effect Tutorial By: Gabriel Aguiar Prod. Youtube - Tutorial #1 Description: Tutorial for a black hole VFX using Unity's Shader Graph, particle systems, and Visual Effect graph. Title: { How to CHANGE the SKYBOX in Unity } - HDR Textures in the description By: GameDevTraum Youtube - Tutorial #2 Description: Quick tutorial to use texture as Skybox in Unity. General Notes Fixing Errors I immediately ran into an issue with the Scene Color node. The fix for this was going to the Main Camera and setting the "Opaque Texture" to ON (found under the Rendering section of the Camera). This made the shader and material match the scene color appropriately, giving that transparent look. I found a generic space texture to use for my background to emulate the one used in the tutorial. I turned it into a Cube texture to create a Cubemap material to use a

Modding Monster Train - Using Harmony to Track Methods and Log

Image
July 1, 2021 Modding with Harmony Monster Train Title: Getting Started with Trainworks Modding Tools By: KittenAqua Github - Wiki Description: More detailed and in-depth documentation on properly setting up a C# project for modding Monster Train as well as examples for modding various content. Title: Harmony Patching Article By: Harmony Harmony - Article Description: General documentation on Harmony. Overview As of the writing of this blog, the state of the Trainworks modding API with Monster Train after its DLC release is a bit rough. Creating custom cards was a core feature of Trainworks, but the DLC update has broken a lot of the original system. I have been investigating these issues to see if I can identify the problem(s) and potentially fix them. This has led me to learning a lot about using Harmony, a tool for modding Unity games, especially in a way to create logs to help me track bugs and problems when integrated with BepInEx.

Doppler Effect in Mario Kart - Game Audio - by Scruffy

Image
July 1, 2021 Doppler Effect and Audio Controller Game Audio Title: Mario Kart and the Doppler Effect By: Scruffy Youtube - Information Description: Explanation of how Mario Kart creates the doppler effect and efficiently distributes audio to multiple players. Overview This video covers how Mario Kart Wii specifically uses the doppler effect, as well as just how some of their audio systems work in general. It is decent coverage of how to implement a basic doppler effect system into a game in general. Fig. 1: Image from "Mario Kart and the Doppler Effect" Video Above by Scruffy Setup of Doppler Effect System The key is the relationship between sound frequency and relative velocity of objects. Their approach to measure this is just by measuring the distance from the audio source to the audio listener each frame, and if there is a difference, that is used for a relative velocity term. This relative velocity term is bound to some negative and

3D Math - Always a Single Plane to Cut Three 3D Objects in Half with Borsuk-Ulam Theorem - by Zach Star

June 28, 2021 Borsuk-Ulam Theorem 3D Math Title: A surprising topological proof - Why you can always cut three objects in half with a single plane By: Zach Star Youtube - Information Description: Proving that any set of n n-dimensional objects can be cut in half by n-1 dimensional object (i.e. 3 3D objects can be cut in half by a 2D plane). Overview This was just a fun and interesting mathematical proof I came across. Using the Borsuk-Ulam Theorem at its core, it proves how any set of 3 3D objects can be cut in half (by volume) by some 2D plane. It then expands that to show that this works for any n amount of n-dimensional objects, which are then divided by an object with n-1 dimensions. Borsuk-Ulam Theorem This can be read up on here at the corresponding wikipedia page: Wikipedia - Borsuk-Ulam Theorem This states: "every continuous function from an n-sphere into Euclidean n-space maps some pair of antipodal points to the same point".

Unity Shader Graph - Signed Distance Fields - Update with Subgraph Fix

June 24, 2021 Shader Graph Unity Title: Drawing Boxes and Rectangles in URP Shader Graph with 2D SDFs! 2021.1 | Unity Game Dev Tutorial By: Ned Makes Games Youtube - Tutorial Description: Exploration into calculating signed distance fields and using them with Unity's Shader Graph. Title: Rectangle SDFs and Procedural Bricks! Video Production Stream | Unity Game Dev Livestream By: Ned Makes Games 2 Youtube - Tutorial Description: The full stream which most of the previous tutorial is pulled from. Useful for any more in depth questions of previous tutorial. Overview When I visited this tutorial yesterday I ran into an issue with Unity 2021.1.3 that working with subgraphs was extremely bugged and error prone. I had seen online that later versions potentially fixed the issue, so I download the latest version, 2021.1.12, and this did indeed fix the issue for me, making this tutorial much easier to follow along with. This tutorial was m

Unity Shader Graph - Signed Distance Fields and Subgraph Errors

June 23, 2021 Shader Graph Unity Title: Drawing Boxes and Rectangles in URP Shader Graph with 2D SDFs! 2021.1 | Unity Game Dev Tutorial By: Ned Makes Games Youtube - Tutorial Description: Exploration into calculating signed distance fields and using them with Unity's Shader Graph. Overview This shader tutorial quickly explores calculating signed distance fields and using that for interesting effects. These effects were built in HLSL in the tutorial video originally, but they also show how these can be implemented with Unity's Shader Graph system. I wanted to use the Shader Graph approach, but unfortunately I found that Unity's Shader Graph Subgraphs have some major issues. Signed Distance Fields (SDFs) Signed Distance Fields (SDFs): calculate the distance from any arbitrary point to a specific shape Principles of Calculating To start, they look at an example using a rectangle whose center is at the origin (0, 0). First, they find t

Modding Monster Train - Editing Name of Champion Tutorial

Image
June 22, 2021 Modding Monster Train Title: Monster Train - Shiny Mark mades mods By: Good Shepherd Entertainment Youtube - Tutorial #1 Description: Extremely basic introduction to setting up a C# project for modding Monster Train (slightly outdated). Overview This was an introductory tutorial mostly meant to help you learn how to setup a C# project to mod Monster Train. It has however become slightly deprecated since the DLC was launched, however it did lead to me gaining a better grasp on the logging system for debugging. Following Tutorial This tutorial is rather straight forward, but even this had its fair share of issues. One of the first major blocks I ran into and resolved was how strict Harmony is with some of the ways it interacts with the base game code. Specifically, the __result parameters used in the Postfix() methods specifically require EXACTLY 2 underscores before 'result'. This is actually just part of their system of naming c

Modding Monster Train - Basics and Introduction

June 21, 2021 Modding Monster Train Title: Monster Train - Shiny Mark mades mods By: Good Shepherd Entertainment Youtube - Tutorial #1 Description: Extremely basic introduction to setting up a C# project for modding Monster Train (slightly outdated). Title: Monster Train Modding Card Creation Tutorial Mod By: Good Shepherd Entertainment Youtube - Tutorial #2 Description: Introduction to using the Trainworks API, a modding tool for Monster Train geared towards adding new content. Title: Getting Started with Trainworks Modding Tools By: KittenAqua Github - Wiki Description: More detailed and indepth documentation on properly setting up a C# project for modding Monster Train as well as examples for modding various content. Overview Monster Train is a game I have played a lot and really enjoyed, and it recently put out some modding support in the last year. Being a Unity-based game, I figured I could use some of my Unity a

Unity Shader Graph - Liquid Effect by Gabriel Aguiar Prod.

June 18, 2021 Shader Graph Unity Title: Unity Shader Graph - Liquid Effect Tutorial By: Gabriel Aguiar Prod. Youtube - Tutorial Description: Quick shader graph tutorial exploring interesting effects of moving shader based on psuedo-physics. Overview This shader tutorial looked like a great way to extend my knowledge on Unity's shader graph since it appears to have some neat and unique mechanics. The fact that the shader is responding to the changes in position and rotation of the object explore ways to have shaders follow physics-like rules to create effects visually that can mimic for physical phenomena. Many of this user's tutorials also include setting up the initial models, but I think this effect can work decently with other simple shapes I can easily make with ProBuilder.

Unity Shader Graph - Grid Shader by UGuruz

Image
June 16, 2021 Shader Graph Unity Title: Grid Shader in Unity LWRP - Shader Graph Tutorial By: UGuruz Youtube - Tutorial #3 Description: Experimenting with tiling and the rectangle node in Unity Shader Graph to create a Tron-like glowing grid pattern. My Final Grid Shader Graph (w/ Color Change Addition) Overview Following my exploration of Unity's shader graph, I did this tutorial by UGuruz on creating a grid shader similar to what you see in Tron. I really liked the effect so I continued it slightly further by adding a color changing effect over time, as can be seen in my examples provided. Learnings from Tutorial Using a Fraction node with a Tiling & Offset node is an effective way to give you standard expected tiling and offset results. I however had some strange effects because of interactions with the UVs of the models. The base UVs of just a standard Unity cube did not tile effectively for me, so I tried using Unity's ProBuilder

Unity Shader Graph Examples and Tutorials

Image
June 10, 2021 Shader Graph Unity Title: FORCE FIELD in Unity - SHADER GRAPH By: Brackeys Youtube - Tutorial #1 Description: A quick introduction to shader graph in Unity making a transparent force field with glowing edges. Title: ART 200: Creating an energy Shader in Shader Graph in Unity By: Casey Farina Youtube - Tutorial #2 Description: An introduction to using noise effects in Unity Shader Graph to create a glowing generic energy effect. Title: Grid Shader in Unity LWRP - Shader Graph Tutorial By: UGuruz Youtube - Tutorial #3 Description: Experimenting with tiling and the rectangle node in Unity Shader Graph to create a Tron-like glowing grid pattern. Title: Unity Shader Graph Tutorials - Youtube Playlist By: Gabriel Aguiar Prod. Youtube - Playlist #1 Description: This user creates tons of VFX tutorials for games, and has delved into Unity's Shader Graph, giving great examples of quick but well done

Game Project: Flying Game - Part 5 - Projectile and Environment Interaction (Part 2)

June 8, 2021 Flying Game Projectile Overview I wanted to have the player projectile add force to objects that it came in contact with. This originally was just to prevent strange occurrences where originally if the player hit obstacles sitting on top of others, nothing would happen since the only force moving them at all was gravity. This additional force adds some extra displacement to make sure that whenever any objects are hit, there is some dramatic impact. Voxelized Environment Obstacles Update IDestructible Interface Update for Voxel Obstacle Element Class This interface is implemented by the individual voxel obstacles. It originally just had a Destroyed() method, but with this update I wanted to add a secondary method to deal with simply being hit at all, so I added a Damaged() method. I then also renamed the Destroyed() method to EndLife() since it may not necessarily be destroyed when its job is done. Internal Hit Cooldown Timer Because the objects were

Game Project: Flying Game: Sonic Boost - Part 4 - Projectile and Environment Interaction

June 2, 2021 Flying Game Projectile Overview I was trying to think of ideas on how to add an extra mechanic to the flying controller that ties in with a fast and agile moving controller, and thought of tying in some type of sonic boom effect. With this, I thought creating an expanding projectile from the player after boosting could be an interesting way to generate these projectiles. I then explored a few ways to have the projectile interact with the environment and came across a relatively simple one that provides some fun feedback. Sonic Boom Projectile Everything about the projectile is rather simple. The projectile is generated when the player performs a fully charged boost. It then expands at some growth rate (dictated by the projectile controller on the player) up until some maximum size (dictated in the same location). As it encounters objects with an IDestructible interface, it will cause them to perform their Destroyed() method. This gives a pretty cool ef

Accessing Variables in Other Scripts in Unity

May 26, 2021 Accessing Variables Unity Title: How To Access Variables From Another Script In Unity By: Infallible Code Youtube - Tutorial #1 Description: Goes over many programming techniques within Unity to access variables in one script from another. Key Concepts Scripts C# classes that inherit from MonoBehaviour. Collaborators Scripts that require a reference to at least one other script in order to function. Dependencies Objects that collaborators need in order to function. Categories of Resolution Where the burden of dependency resolution lies. External Resolution The responsibility of dependency resolution falls somewhere else. Public Properties Expose dependency of a public field or property Simple and requires no overhead, but can easily make bugs that are also hard to debug. This is because it can be unclear where the dependencies lie. Editor Properties Expose serializable dependencies in the Unity editor. Use SerializeField

Singletons in Unity and Many of Their Downfalls by Infallible Code

May 26, 2021 Singletons Unity Title: Everything You Need to Know About Singletons in Unity By: Infallible Code Youtube - Tutorial #1 Description: Goes over the true properties of singletons in code and why they should be used sparingly in Unity game development. Intro to Singletons Singleton Pattern: class that is both globally accessible and can only be instantiated once Common Example: Audio Manager - because it is something many scripts will want access to, and you specifically want only one in your game at a time Singleton Requirement #1: Global Access Specification Singletons sound promising because they are an easy solution to "how do you access other scripts" or "how do you fill your class dependencies". Using Singletons for access can hide the fact that a class depends on another, which can lead to difficult to track bugs and difficulties. This may lead to using the singleton even more than necessary because of ease of ac

Game Project: Flying Game - Part 3 - Camera Controller and Zoom Control

May 25, 2021 Flying Game Camera Controller Overview After getting the basics of the camera controller down, I wanted to explore ways to make it feel more immersive. One of the ways I've seen racing or other fast moving games handle this was to have a zoom that mimicked the acceleration to make that feel all the more impactful. Following this, I wanted to look into connecting the player's speed with the amount the camera zooms in on the player. Setting the Camera Zoom Suggested by Player Speed Since the game has a speed boost option, I wanted the impact of the speed boost to be larger than any normal speed the player can reach. With this in mind, I was looking at an approach where normally their max speed gets the camera up to around 80% of the maximum zoom, and activating a boost is the only way to hit the 100% zoom mark (creating a significant difference in zoom specifically when boosting). One immediate issue with this approach is that any zoom that is di

Coroutine Fundamentals in Unity

May 20, 2021 Coroutines Unity Title: Introduction to Game Development (E21: coroutines) By: Sebastian Lague Youtube - Tutorial #1 Description: Covers the basics of coroutines in Unity. Title: Coroutines In Unity - What Are Coroutines And How To Use Them - Coroutines Unity Tutorial By: Awesome Tuts Youtube - Tutorial #2 Description: Covers some intermediate complexity uses of coroutines as well as tying them in with Invoke calls. Title: Coroutines - Unity Official Tutorials By: Unity Youtube - Tutorial #3 Description: Old official Unity tutorial on the fundamentals of coroutines in their system. Overview Coroutines appear to be a strong tool within Unity that I still am looking for ways to implement better in my systems. While understanding the basic uses for them with timing related events, I feel like they offer a lot more that I am not utilizing, so I wanted to further my understanding of them by following up on one of

Lerp Fundamentals in Unity

May 10, 2021 Lerp Unity Title: How to Use Lerp (Unity Tutorial) By: Ketra Games Youtube - Tutorial Description: A brief coverage of exactly how Lerp works in Unity with a couple ways to use it. Overview I was recently researching ways to effectively use Lerp in Unity and came across some strange implementations that made me unsure if I understood how it worked. This video however specifically covered that case and explained that it does work, but it's not a particularly ideal solution. The case covered is specifically called the "Incorrect Usage" in this video. It is when Time.deltaTime alone is entered as the time parameter for Lerp. As I thought, this is just entering some tiny number as a time parameter each time it is called, which is then used to just some value between the intial and final values entered into the Lerp. It is not very controlled, and it leads to a strange situation where it keeps getting called and updated but it doe