Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Josh McMillan

155
Posts
8
Topics
30
Followers
21
Following
A member registered Jul 09, 2018 · View creator page →

Creator of

Recent community posts

No worries, that's okay! I'm on a Mac, so I totally get it! Thanks for at the least feedback on the pictures! :D

This is great advice! Thanks!

(1 edit)

I understand there’s many controversies over this subject matter, particularly in the world of asset creation. Is it acceptable to use AI tools in the creation of the games, or should all assets be custom?

Typically, I utilize the free Chat-GPT when trying to break apart and understand complex mechanics and story concepting, while very rarely using AI for asset creation.

I see both up and downsides to AI usage and wanted to clarify per the “attribution” rule on premade assets.


Thanks!

Here's the corrected code ;P

using UnityEngine;class M:MonoBehaviour{}using UnityEngine;class H:M{public bool h;public Rigidbody R;public Transform T;public Animator A;void OnTriggerEnter(Collider c){if(c.tag!="p")return;if(h){R.velocity=Vector3.zero;R.position=T.position;}else{A.SetTrigger("r");}}}using UnityEngine;class G:M{public Rigidbody R;public float S;public Transform C;void FixedUpdate(){R.AddForce(new Vector3(Input.GetAxis("h"),0.0f,Input.GetAxis("v"))*S);C.position=transform.position;}}

I've done it. Here's the code for my game now!

using UnityEngine;class M:MonoBehaviour{}using UnityEngine;class H:M{public bool h;public Rigidbody R;public Transform T;public Animator A;void OnTriggerEnter(Collider c){if(c.tag!="p")return;if(h){R.velocity=Vector3.zero;R.position=T.position;}else{A.SetTrigger("r");}}}using UnityEngine;class G:M{float i(string a)=>Input.GetAxis(a);public Rigidbody R;public float S;public Transform C;void FixedUpdate(){R.AddForce(new Vector3(i("h"),0.0f,i("v"))*S);C.position=transform.position;}}

And here's each individual script broken out:

// MonoBehaviour wrapper (to avoid repeating such a long inheritence)

using UnityEngine;

class M:MonoBehaviour

{

}

// Hole/Story Object (This is a two-object script. One handles entering a trigger and teleporting the player which is the hole, the other shows an animation whenever a trigger is entered.)

using UnityEngine;

class H : M{

public bool h;

public Rigidbody R;

public Transform T;

public Animator A;


void OnTriggerEnter(Collider c) {

if (c.tag != "p") return;

if (h) {

R.velocity = Vector3.zero;

R.position=T.position;

}

else

{

A.SetTrigger("r");

}

}

}

// And this is the player controller, which captures input using a small macro optimization

using UnityEngine;

class G : M {

public Rigidbody R;

public float S;

public Transform C;

void FixedUpdate() {

R.AddForce(new Vector3(Input.GetAxis("h"),0.0f,Input.GetAxis("v"))*S);

C.position=transform.position;

}

}

... I just did the math. I was wrong. I did my input wrong, complicated it, and added characters. The NEW character count is now 473, down from 488. Still, super excited to finally have mechanics! Now to build a game :P

In the end, I gutted the whole "golf controller" style for directly controlling the golf ball rolling (which is oddly similar to Unity's primary tutorial, Roll-a-Ball), which yielded a lot more fun ideas and results.

You can also use a wrapper for the MonoBehaviour class like this : using UnityEngine;public class M:MonoBehaviour{}, and that helps greatly cut down the number of characters used from 50 to merely 19 per script, doubling the theoretical number of scripts with only a 37 character penalty in doing so. For multiple scripts, this is the way to go.

If anyone is curious about the code for the Simon Says game, here it was (it literally ran everything from animations to logic and input):

using System.Collections;using System.Collections.Generic;using UnityEngine;class G:MonoBehaviour{[SerializeField]Animator a;List<int> s=new List<int>();bool p;void Start(){StartCoroutine("l");}bool k(string i)=>Input.GetButtonDown(i);void q(int c){a.SetTrigger(c);}IEnumerator l(){while (!p){yield return new WaitForSeconds(0.5f);int val=Random.Range(1,5);s.Add(val);q(val);foreach (var i in s){int c=0;while (c==0){if (k("R")) c=1;if (k("G")) c=2;if (k("Y")) c=3;if (k("B")) c=4;yield return null;}q(c);if (i!=c){p = true;break;}}}}

So far, I've made two attempts at this challenge with Unity. The main issues you run into are:

  • Every MonoBehaviour you create costs an immediate 50 characters for boilerplate alone. This includes the class definition and referencing the through "using UnityEngine;"
  • Storing components using GetComponent are very expensive character-wise. Direct references or using SerializedFields are much cheaper by comparison.
  • Your most expensive code calls will be to the engine. Best practice would be to create a single character wrapper method for the engine call if it is used more than once (just once can be left as that's the minimum characters you can make - a wrapper would be more expensive in that case.

The two games I attempted were:

  1.  An overly ambitious tank game (very impractical, didn't get far), and
  2. A nearly complete Simon Says game, complete with animations (boilerplate code brought the codebase to 530 characters, a massively strong attempt!)

So the last attempt I'll make is a mini-golf game, that 1) a single script that 2) uses a wrapper method for input, no calls to System.Collections.Generic (what killed my Simon Says game), and 3) heavily utilize physics and animations (native to engine, need few calls if any)

I'm currently working on a game in Unity, not an easy task. I did employ the use of ChatGPT to help prototype the core structure of my game (Simon Says, because why not?)

The results are incredible. It made every change I wanted, and even removed whitespace when asked. It complained about the code not being readable, but I guess that's not the point of this jam ;)

using System;using System.Linq;namespace SimonSaysGame{class P{static void Main(string[] a){Console.WriteLine("Welcome to Simon Says!");int[] s = new int[1];s[0] = R();Console.WriteLine("Simon says: " + string.Join(", ", s));Console.WriteLine("Repeat the sequence one color at a time (1 = red, 2 = green, 3 = blue, 4 = yellow):");for (int i = 0; i < s.Length; i++){Console.Write($"Color #{i+1}: ");int p = int.Parse(Console.ReadLine());if (p != s[i]){Console.WriteLine("Game over!");return;}}Console.WriteLine("You win!");}static int R(){Random r = new Random();int n = r.Next(1, 5);return n;}}}

Overall, not bad stuff. It did every request I ask, and it came out to 572 characters long (probably long due to the Console.Writelines and strings associated with them). Overall, I'm impressed, still needs a massive amount of engineering in order to get it into Unity and then cut the code down in size.

Just as an experiment, I asked it to fit the code into 500 characters, and it pulls this off:

using System;namespace S{class P{static void Main(string[]a){Console.WriteLine("Simon Says!");int[]s=new int[1];s[0]=R();Console.WriteLine("Simon says: "+string.Join(", ",s));Console.WriteLine("Repeat the sequence (1=red,2=green,3=blue,4=yellow):");for(int i=0;i<s.Length;i++){Console.Write($"Color #{i+1}:");int p=int.Parse(Console.ReadLine());if(p!=s[i]){Console.WriteLine("Game over!");return;}}Console.WriteLine("You win!");}static int R(){Random r=new Random();int n=r.Next(1,5);return n;}}}

Verified it with a character counter: 496 characters total.

The question now becomes, is constructive use of Chat-GPT allowed? I don't plan on copy-pasting it to actually build the game, I'd rather take a much more thoughtful approach, but this at least gave me a feasibility look at whether it could be built or not. 

Funny enough, I didn't really intend to focus on the mood of the game, but the further and further I went, the more of a mood-piece I wanted to create. Thanks for playing!

Yikes! Maybe the game would have benefitted from a pause menu? Thanks for playing!

Thanks for the feedback! All throughout development I was worried about conveying information across, so I'm glad the world and UI came across great with the resolution!

Thanks for playing! :D

It's funny, my childhood I never really got to play on a Gameboy all that often, mainly borrowing from friends on bus rides. The brief moments I did experience were so much fun, and I tried to capture that the best I could with the limited features GBStudio had at the time. Thanks for playing!

So far, I'm starting to get the makings of a game. I've had to scale back making every asset myself, as it was taking too long (writing shaders is the last thing anyone should do in game jams, yet I was trying anyways :P ). Regardless, it's going to be fun no matter how far I get, so I'll probably post it anyways

It's all good! I'm not an administrator, but even if you don't submit anything, you're free to check out the games! Additionally, even if the game isn't 100% done, feel free to submit regardless for feedback and give others a chance to try your game regardless. Who knows? Maybe the game being broken is a chaotic mechanic ;)

Honestly, the simplest and most fun feature to create, test and work on lol

Absolutely enjoyed watching the stream! It was good to see the prototype's design validated, and it would be great to expand upon. Maybe multiplayer support coming soon?

I was using a premade FPS Controller that I have used for a little while now. A fuller game would have the options to help mitigate issues with aiming. I'm glad you enjoyed the core concept! It totally could have used more music and sounds

(1 edit)

The rules seem to lean that external image/texture/sprite/model related items are a no go, and shaders are fine. If it can be made entirely in your engine, you're good.

It seems like materials are fair game (referring to a few other threads.) Even ShaderGraph seems to be okay (in so far as using default Unity texture nodes, such as noise. ) The biggest thing is you can't use custom textures/sprites, so no albedo/UV maps, but solid colors seem to be fine, am I correct?

I found myself laughing all the time in level development! Thanks for playing! :)

Glad you enjoyed the game! If I were a puppy, I totally would want to explore the ever-moving world we live in! :D

I've been thinking the same thing! I'm looking at a few different camera options, and maybe I'll look to add more verticality (and dangers!) into the level designs. Thanks for the feedback! :)

Thanks! It was fun making all the art and sounds :D

It really is! Thanks for playing! :)

Thanks! I had a really short turn-around to get it done, and I wished I had more time to shore up more levels. Glad you liked the concept! :)

Lol, it's amazing what a few simple rules and wacky Unity physics can get you! Thanks for playing! :)

Hopefully, I'll have the fix soon! I'm working on a build and will test to make sure I've resolved the issue. Thanks again!

Thanks! With only 64x64 resolution, I hoped that the game looked cohesive! And thanks for the tip! I'm familiar with audio editing and use Cakewalk, I didn't know that Webgl hates 24-32 bit encoding. I also used default import settings, and that could be a potential source of problems as well.

Thanks! It took a ton of iterations to really get the look right, so I'm glad you noticed! :D

Thanks for playing! The soundtrack was entirely written by me, so if you want to hear more of my original music, you can check out some of my other games. I would recommend my games "Nightfall" and "Financial Getaway" (which I've been told are some of the most fun games to play that I've created). You can also watch the credits in "Wormhole" to hear more or less all of the variations on the game's main theme. 

(1 edit)

Thanks! The game is inspired by Mario Party, so I'm not surprised that the board movement feels second nature (since in those games board movement is completely secondary to getting stars, whereas in this game board movement happens to be the main mechanic.) I'll think about adding some other mechanics, maybe ones that reinforce the idea of moving around the board a bit more. :)

Just curious, would you mind if I featured your YouTube channel by embedding your video on this Itch.io page?

I absolutely enjoyed the gameplay commentary, but I warn you right from the title what you are in for! I'm glad to get user feedback on how the game feels so that I can refine the idea to the point of maybe a polished release. Thank you so much for playing!

Dude, thanks for playing and glad you found that achievement! Like I said, this may be able to be turned into a larger game, only time will tell... :D

Thanks for the compliment! I thought about distance rendering early in development, but never really did anything with it. I could have turned the camera clipping up more, but I also wanted the player to be able to see important objects from far away (those being animated helped a lot!) Thanks for playing!

Glad to hear you like the visual style! One thing I wished I had paid closer attention to is making sure that there was always contrast in whatever you looked at- from the walls and floor contrasting to give a sense of spacial presence to the items rotating and having clearly defined shapes. Unfortunately, I made the texture randomizers have the option to closely match walls and floors. Sorry for that, and thanks for playing!

(1 edit)

Sounds would have made a big difference, from on collecting artifacts and batteries, to when you lose battery/low battery sound. Unfortunately, sound did not make it into the final build. I simply ran out of time. Maybe in the nearby future I'll put sound into the game like I had planned. Thanks for playing!