clyde

Amateur Game Making Night

Recommended Posts

God damnit, stop making me want to try out UE4! That's gorgeous!

EDIT: Quoted your post, because I felt like an ass that my post was on a new page AWAY from your gorgeous menu screen.

Have you tried Unity 5? Does the new central shader and lighting work with the free one? The new unity lighting model is really pretty, and easy to use.

Share this post


Link to post
Share on other sites

Is Unity 5 out?! :o EDIT: Hrmph! It is not. :(

 

I have no idea which features are in the free version, but I just assumed the basic physical-based shading would at least be included, which looked neat and easy to use.

Share this post


Link to post
Share on other sites

I would imagine any shaders that involve post processing would still be pro only, and in the same vein the new lighting model will probably work with the free version minus soft shadows and other non critical features.

Share this post


Link to post
Share on other sites

My goal for 2015 is to experiment with character- driven episodic narratives with an emphasis on romance. I'll still allow myself to digress into programming odd mechanics, fractals, and procedural textures; but I feel the need to use the new year as a reason to refocus on what I want to accomplish. I enjoy digressing into increasing my technical knowledge and ability, but at the end of the year I would rather have written a good romance game with memorable characters than have made a procedural world with glitch-aesthetic.

Share this post


Link to post
Share on other sites
today I've been doing a procedural ladder blueprint. you just give it the meshes you want to use (or use mine), a little bit of info, and pull a bunch of sliders around to change basically everything about the ladder. my mate donhonk is doing some art and we're gonna see if the ue4 marketplace wants it

 




 

this is a particularly useful thing for level designers because the alternatives are:

-bullshit some ladders with brushes

-make bespoke ladder meshes for the particular spot where you need one

-have a few ladder meshes of various lengths and throw them together end-to-end hoping for the best (actually works better than you'd think when you're able to put part of the bottom section underground)

 

anyway, this is better

Share this post


Link to post
Share on other sites
today I've been doing a procedural ladder blueprint. you just give it the meshes you want to use (or use mine), a little bit of info, and pull a bunch of sliders around to change basically everything about the ladder. my mate donhonk is doing some art and we're gonna see if the ue4 marketplace wants it
 
 
this is a particularly useful thing for level designers because the alternatives are:
-bullshit some ladders with brushes
-make bespoke ladder meshes for the particular spot where you need one
-have a few ladder meshes of various lengths and throw them together end-to-end hoping for the best (actually works better than you'd think when you're able to put part of the bottom section underground)
 
anyway, this is better

Neat!

Share this post


Link to post
Share on other sites
Today I started trying to make a Far Cry 2 style fire propagation system based on this awesome post from Jean-Francois Levesque. This was all done in Blueprint over a few hours. I feel a bit unduly clever about it, because I don’t usually think of this stuff as being in my wheelhouse

 


Share this post


Link to post
Share on other sites

I've been working on this problem for a few days and I can't tell if I'm blind to something or if I just lack a vital piece of foundational information. 

 

The way this script is supposed to work is that when it runs, it checks for a string and then populates a bunch of a custom class called "Page" based on the commands in the script.  So all of this happens during the loading. Then later another script accesses pages individually in turn. It's basically a visual novel. 

 

After days of debugging, I can confidently say that the problem is that the array of pictures which each page is supposed to have is getting overwritten by the array of pictures that the next page is supposed to have. Here is the code, I used comments to highlight the area where the debug.log()s are placed. 

 

using UnityEngine;
using System.Collections;
using System;

public class StoryData : MonoBehaviour {

	int pageIndex_initializing;
	
	
	public class Page
	{
		string pageName;
		string message;
		string choiceMade;

		GameObject[] pictures_show=new GameObject[25];
	
		GameObject[] pictures_hide=new GameObject[25];
		

		string buttonLeft_message;
		string buttonLeft_targetPage;
		string buttonRight_message;
		string buttonRight_targetpage;
	
	
	
	//Get,Sets
		public void SetPageName(string pageName)
		{
			this.pageName=pageName;
		}
		public string GetPageName()
		{
			return pageName;
		}

		public void SetMessage(string message)
		{
			this.message=message;
		}
		public string GetMessage()
		{
			return message;
		}
		
		public void SetChoiceMade(string choiceMade)
		{
			this.choiceMade=choiceMade;
		}
		public string GetChoiceMade()
		{
			return choiceMade;
		}

		public void SetButtonLeft_message(string buttonLeft_message)
		{
			this.buttonLeft_message=buttonLeft_message;
		}
		public string GetButtonLeft_message()
		{
			return buttonLeft_message;
		}

		public void SetButtonRight_message(string buttonRight_message)
		{
			this.buttonRight_message=buttonRight_message;
		}
		public string GetButtonRight_message()
		{
			return buttonRight_message;
		}

		public void SetButtonLeft_targetPage(string targetPage_name)
		{
			this.buttonLeft_targetPage=targetPage_name;
		}
		public string GetButtonLeft_targetPage()
		{
			return buttonLeft_targetPage;
		}

		public void SetButtonRight_targetPage(string targetPage_name)
		{
			this.buttonRight_targetpage=targetPage_name;
		}
		public string GetButtonRight_targetPage()
		{
			return this.buttonRight_targetpage;
		}

		public void SetPicturesShow(GameObject[] _pictures)
		{
			this.pictures_show=_pictures;
		}
		public GameObject[] GetPicturesShow()
		{
			return this.pictures_show;
		}

		public void SetPicturesHide(GameObject[] _pictures)
		{
			this.pictures_hide=_pictures;
		}
		public GameObject[] GetPicturesHide()
		{
			return this.pictures_hide;
		}
	}

	//The Array of all Pages
	public Page[] chapter=new Page[1000];
	

	//Constructor Method
	//the command string at the end is for an optional method to be called when the page is active.
	public void Say(string message, string pageName="noName", string buttonLeft_message = "noLeft", string buttonLeft_targetPage = "noPage", string buttonRight_message="noRight", string buttonRight_targetPage="noPage")
	{	
		Debug.Log ("Say()");
		Page tempPage=new Page();
		tempPage.SetMessage(message);
		if (pageName=="noName")
		{
			tempPage.SetPageName(message);
		}
		
		else
		{
			tempPage.SetPageName(pageName);
		}
		tempPage.SetButtonLeft_message(buttonLeft_message);
		tempPage.SetButtonLeft_targetPage(buttonLeft_targetPage);
		tempPage.SetButtonRight_message(buttonRight_message);
		tempPage.SetButtonRight_targetPage(buttonRight_targetPage);

		
		tempPage.SetPicturesShow(tempPictures_show);
		tempPictures_show_index=0;
		
		tempPage.SetPicturesHide(tempPictures_hide);
		tempPictures_hide_index=0;

		chapter[pageIndex_initializing]=tempPage;
///////
//DEBUG
		//debug
		GameObject[] dga=tempPage.GetPicturesShow();
		foreach(GameObject pic in dga)
		if(pic!=null)
		{
			{
				Debug.Log ("chapter["+pageIndex_initializing+"]...pic"+pic);
			}
		}
		GameObject[] chapZeroPage=chapter[0].GetPicturesShow();
		foreach(GameObject pic in chapZeroPage)
		if(pic!=null)
		{
			{
				Debug.Log ("chapter[0]...pic"+pic);
			}
		}
//So it is replacing the pictures array of the old pages with the new one. Why?
////////		///end debug

		pageIndex_initializing=pageIndex_initializing+1;	
	}
	
	//Array of pictures.

	GameObject[] tempPictures_show=new GameObject[25];
	int tempPictures_show_index;
	GameObject[] tempPictures_hide=new GameObject[25];
	int tempPictures_hide_index;


	public void Show(GameObject pictureObject)
	{
		tempPictures_show[tempPictures_show_index]=pictureObject;
		
		tempPictures_show_index=tempPictures_show_index+1;
	}
	
	public void Hide(GameObject pictureObject)
	{
		tempPictures_hide[tempPictures_hide_index]=pictureObject;
		
		tempPictures_hide_index=tempPictures_hide_index+1;
	}

	public void ClearTempPics()
	{
		Array.Clear(tempPictures_show, 0, tempPictures_show.Length);
		Array.Clear(tempPictures_hide, 0, tempPictures_hide.Length);
	}

	// This has to be on Awake or it won't be there when ManagingStoryteller tries to access it.
	public void Awake () 
	{
		//So here is how it works:
		// Say ("the message on the screen", "this pageName", "text on LeftButton", "pageName where LeftButton will take us", "text on RightButton", "pageName where rightButton will take us");
		// Everything but the first message is optional. To make it blank, type in a default value if you want to write on for a later parameter.
		//EXAMPLES
		//Say ("Message", "thisPageName", "LeftButton_Text", "LeftButton_pageName", "RightButton_text", "RightButton_pageName");
		//Say ("Message", "thisPageName");

		//Backgrounds need to be depicted after the first line of dialogue
		//Say("scene", "newScene"); takes you back to current world.
		//Say("[sceneName]", "newWorld"); changes worldview scene.
		
		String page_destination=Persistence.page_destination;
		String scene=Persistence.worldScene_current;
		

		//Begin	

		//Hub World
		
		if (page_destination==("hub1"))
		{	
			Show(bottle_pic);
			Say ("Let me show you what this game used to look like when I first got the system working.");
			//ClearTempPics();
			Show (background1);
			Say ("Okay.");
			//ClearTempPics();
			Show(player_pic);
			Show (box_pic);
			Say ("What's up?");
			Say ("NOthin much");
			
			//Typing "newWorld" instead of "newScene" will also reset playerPos
			Say ("RangerWorld", "newWorld");
		}
		

		//Ranger World
		if(page_destination==("bottle1"))
		{
			Show(bottle_pic);
			Say("Yo, I'm a bottle");
			Show(player_pic);
			Say ("What's up bottle?");
			
			Say ("Chillin");
			
			Say("Cool, Cool.");
			
			Say ("...");
			Say ("Alright, I best be goin.");
			Say ("See ya.");
			
			Say (scene, "newScene");
			Persistence.PageHasBeenVisited(page_destination);
		}

		if (page_destination==("box1"))
		{
			Show (box_pic);
			Say ("Bet you wanna know what is in me.");
			Show (player_pic);
			Say ("Yeah, kinda.");
			
			Say ("Too bad, so sad.");
			
			Say (scene, "newScene");
		}

		if(page_destination==("bottle2"))
		{
			if(Persistence.CheckForPageVisited("bottle1")==true)
			{
				Show (bottle_pic);
				Say ("Hello.");
				
				Say("Oh sorry, I didn't mean to talk to you again.");
				Show (player_pic);
				Say ("We haven't spoken.");
				Show(bottle_pic);
				Say ("You must have spoken to another bottle.");
				Say("Oh, sorry.");
				Show (player_pic);
				Say ("Do you drink soda?", "sodaQuestion", "Who doesn't drink soda?", "sodaYes", "No, not really.", "sodaNo");
				Show (bottle_pic);
	
				Say ("Some don't", "sodaYes");
				Say ("Takes all types you know?");
				Say (scene, "newScene");
	
				Say ("Are you some sort of hippy?", "sodaNo");
				Say ("I wouldn't say that, exactly.");
				Show (player_pic);
				Say("I would.");
				Show(bottle_pic);
				Say (scene, "newScene");
			}
			else 
			{
				Say("Howdy");
				Show (bottle_pic);
				
				Say (scene, "newScene");
			}
		}
	}
	//I'll put the images here.
	
	//These are actual pictures
	public GameObject background1;
	
	public GameObject bottle_pic;
	
	public GameObject player_pic;
	
	public GameObject box_pic;
}

 

Here is the console when the "hub1" string is selected.

 

6NbESkr.jpg

 

Chapter[0]'s pictures_show GameObject[] should not be overwritten like it is for the first time where I highlighted. 

 

What am I missing here?

Share this post


Link to post
Share on other sites

Arrays are passed by reference in C#. You only initialize tempPictures_show once, in the line GameObject[] tempPictures_show=new GameObject[25], which only runs when StoryData is first instantiated. So your code is passing a reference to the same Gameobject array to the current Page every time you call Say().

Share this post


Link to post
Share on other sites

Thanks Noyb, I wouldn't have known how to figure that out.

I still don't completely understand why this is the case, but I'm reading this long explanation about references and values and I'll eventually get it.

http://www.yoda.arachsys.com/csharp/parameters.html

I feel like this was a problem I had before, I wonder why it hadn't come up again.

Share this post


Link to post
Share on other sites

Too bad it's not C/C++ and you won't be learning about pointers. ):

Share this post


Link to post
Share on other sites

So it took me all of 5 minutes to use Array.Copy() for the first time and solve all the problems I've been trying to fix for days. Knowledge is power.

I'm relieved that it was because of something I just Did Not Know, but it's hard to feel like I didn't waste a lot of time. I'm getting better at not getting frustrated when this type of thing happens. If nothing else, I ended up with what I wanted and I probably got better at using Debug.Log() to zero in on problems. 

 

public void SetPicturesShow(GameObject[] _pictures)
		{
			Array.Copy (_pictures,this.pictures_show,25);
		}

Share this post


Link to post
Share on other sites

I finally started messing with Koreographer (same tool that Disco Dodgeball uses to do audio reactive stuff) the other night. And also brushed up on my Maya by spending an hour or so clicking buttons until the cube I wanted came out the other end.

 

http://www.maximum-extreme.com/white-room/

 

On the 1st/3rd beat of every measure it's firing an event to spawn a cube. Nothin' too crazy yet, but I'm reaaaal excited to play more with this. By the time I finished the cube it was getting late so...more to come.

 

edit: and also the properly functioning version of the thing I posted in the playables thread http://maximum-extreme.com/high-moon-sp/

Share this post


Link to post
Share on other sites

I made a small game a few days ago, you keep your loved one safe by holding up the sun :http://graysoneevans.itch.io/15012015

 

Cool, man! It reminds me of some of Bracket Games's experimental games, but with snazzy art and music.

 

 

this is more or less my first semi-serious attempt at a pixel art scene. It's not quite finished, but I'm pretty happy with it so far. I'm sure it's full of horrible amateur technique. may try to riff a little noir-y, murakami-y game off of it. 

 

 

 

3H8NyHh.gif

 

edit: oh, and the main room lights are off, by the way. They can be flicked on by the hypothetical player.

Share this post


Link to post
Share on other sites

So, I've been working on some procedural terrain. Unity engine. I had an example project I've been following to write my own code from, unfortunately said example is completely undocumented, so, it's kind of been an uphill battle.

 

 

Here was an early step, Spenny's terrain with a completely random heightmap, ouch!

sZ7NQQSl.png

 

Then I get perlin noise working, meaning proper slopey slopes. This is applying texture based on slope steepness. And in this screenshot the applied texture is binary, either you get the flat green texture or the sloped brown texture.

ddmM8lA.png

 

The idea I'm working on is that my terrain should have different climates, for example desert and snow climates, each having their own texture sets based off steepness. I need to generate a climate map for my terrains. To show my climate map, I gave each climate a single texture, which gave me this:

y8sTZ0q.png

 

Hmmm, not really what I was looking for. So I cheated with some values to give me this:

YpIbelr.png

 

Now I have to investigate if my algorithms that made screenshot 3 are capable of doing what's seen in screenshot 4, and maybe its just a problem with my perlin noise sampling. I ideally want blending between climates, but I'm wondering if that's necessary. I ideally want large patches of a single climate right. Hopefully updates soon!

Share this post


Link to post
Share on other sites

Someone on Twitter asked if the could try the visual novel system I'm attempting to build in Unity. I commented a bunch of it until I felt the need to make a demo and now I don't want to comment anymore (for right now). 

Anyway, if anyone finds this useful or wants to change it and make it their own, have at it. It's sloppy because I don't know what I am doing. RenPy was a big inspiration.

https://db.tt/8rmgJIWm

Share this post


Link to post
Share on other sites

I posted this in the Plug Your Shit thread already but I wanted to come back here and say a little more...

 

Yesterday I released my first solo game, Flapjack Flinger on the Google Play store! https://play.google.com/store/apps/details?id=com.funghost.syruptapper

 

It wouldn't have happened without the the support of the folks in this forum. Over the past year or two I've been jamming and posting stuff here because you all have created a really positive environment for sharing and discussing that stuff. For better or worse, if I hadn't started posting here I'd probably be scrambling to find work at another big studio and never would have had the confidence to try going solo. Even though (or perhaps, because?) this is such a small community, there's a really encouraging, positive, and just weird as hell group of people here and I can't thank you all enough for creating and being a part of this place. So thank you. Keep on making cool stuff and encouraging others to do the same. I also wanna send a special shout out to SpennyDubz, who gave me some really useful specific feedback on this game :)

 

It was a good first outing, I think, and I feel like the game is fun and mostly well put together, but I made a lot of mistakes. So I'm excited to start a bigger project (something that I don't cram into a month, maybe) that I'm a little more invested in, and that I can take some of what I learned from this game into. Thanks again for the support, and look forward to a post-mortem of Flapjack and an announcement of GAME TWO around here soon!

 

(it's gonna have monster trucks in it)

 

Share this post


Link to post
Share on other sites

Congrats! I gave it a quick game this morning and I think it's my new default phone game.

 

Also I hate to be that guy, but there's a bug I found. If you lose during the tutorial messages that explain the game, whatever message is on screen just stays there when you start a new game and doesn't progress at all.

Share this post


Link to post
Share on other sites

Also I hate to be that guy, but there's a bug I found. If you lose during the tutorial messages that explain the game, whatever message is on screen just stays there when you start a new game and doesn't progress at all.

 

I can't repro this; is it the step that wants you to swipe left? PM me. And don't worry about being 'that guy,' Bug reports are good!

 

Well, actually, for a little while my job was reading MMO player bug reports and that was...a mixed bag. Yours was fine though.

Share this post


Link to post
Share on other sites

I can't seem to replicate it either, so uh, it may have been a once off or I might have been mistaken.

 

Also I meant 'that guy' in the sense that my initial response was "Oh I have a bug". Bug reports are, alas, inevitable.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now