Jump to content

  • Log In with Google      Sign In   
  • Create Account

mepis

Member Since 16 Mar 2013
Offline Last Active Jan 05 2014 09:07 AM

Topics I've Started

Help me with code ideas please?

17 December 2013 - 09:02 AM

Code is below, but first some background:

 

I'm hoping to make a game via the Construct 2 engine. It intrigues my so I want to play with it. I have an idea for a game that involves dungeon/maze generation. I want it to be random for replayability. It's the first time I've done something like this though (still very much a newb) so I went to prototype the idea of the generation in Java because I can form the logic easier. I figured I could translate it to Construct's events later on. I sat down and thought about doing it and my mind drew a blank. I figured the easiest way would be to use some type of recursive methods, and after looking into the idea of maze generation algorithms, it seems I was right. The problem is though that I can't do anything recursively. It has to be done through loops. I'm also building the maze in a 2D array so I can build the map from that. That means I need empty spaces between paths. The algorithms I was looking at didn't do this. I understand the idea of running through a loop with a structure but structure are a bit non-existent in Construct from what I can tell. I can build a second 2D parallel array to track where the maze has been but I was hoping not to so I could save memory and reduce garbage collection and stuff. I got completely stuck at this point so I just started throwing ideas at the IDE and saw what stuck.

 

Anyway, by a really happy mistake, I came up with the code below. Now, it's not really good to develop mazes. The output results in exactly what I ultimately aim to achieve though. I wanted random tunnels and random large rooms and caverns. I wanted the path to the exit different every time. I was planning on doing some other silly stuff once a maze was created, but this creates the output right away.  I ran through the algorithm a lot of times and adjusted the chokepoint to where it gives me a seemingly good result with a viable path every time (though I still have to write something to double check this each time. The code is very much a prototype but I wanted to get opinions on it, what looks crappy, what I could improve on. I'm still very much a newb so all the criticism I can get is good. Keep in mind I want to translate this to Construct 2 at some point though it doesn't bother me if you give me tips as if I was continuing this project in Java.

 

I thank anyone for their feedback. I really do appreciate it.


import java.util.Random;

public class Main {

	//These variables define the size of the maze.
	//Change only these to change the size of the maze
	private static final int ROWSIZE = 40;
	private static final int COLUMNSIZE = 40;
	
	public static void main(String[] args) {
		
		//variable declarations
		int[][] maze;
		int randX = 0;
		int randY = 0;
		int choke = 0;
		int checkSurroundings = 0;
		Random rand = new Random();
		maze = new int[ROWSIZE][COLUMNSIZE];
		
		//Initialize maze array to all zeros (make every space a non-moveable area)
		for (int x = 0;x < ROWSIZE; x++){
			for (int y = 0; y < COLUMNSIZE; y++){
				maze[x][y] = 0;
			}
		}
		
		//Define outside walls
		//Construct 2 specific:
		//We will use the number two to define all outside walls of maze so the game engine 
		//knows where to put these special tiles
		for (int x = 0; x < ROWSIZE; x++){
			maze[x][0] = 2;
			maze[x][COLUMNSIZE - 1] = 2;
		}
		for (int x = 0; x < COLUMNSIZE; x++){
			maze[0][x] = 2;
			maze[ROWSIZE - 1][x] = 2;
		}
		
		//Maze Generation
		randX = rand.nextInt(ROWSIZE - 10) + 5;
		maze[randX][0] = 1; //Mark beginning
		maze[randX][1] = 1;
		randX = rand.nextInt(ROWSIZE - 10) + 5;
		maze[randX][COLUMNSIZE - 1] = 1; //Mark ending
		maze[randX][COLUMNSIZE - 2] = 1;
		do {
			randX = rand.nextInt(ROWSIZE - 2) + 1;
			randY = rand.nextInt(COLUMNSIZE - 2) + 1;
			checkSurroundings = maze[randX - 1][randY] + maze[randX + 1][randY] + maze[randX][randY - 1] + maze[randX][randY + 1];		
			if (checkSurroundings < 4){
				maze[randX][randY] = 1;
				choke = 0;
			} else {
				choke ++;
			}
			
			
		} while (choke < 4); 
		
		//Print results of the maze array
		System.out.printf("\n");
		for (int x = 0; x < ROWSIZE; x++){
			for (int y = 0; y < COLUMNSIZE; y++){
				if (maze[x][y] == 0 || maze[x][y] == 2)
					System.out.printf("%d ", maze[x][y]);
				if (maze[x][y] == 1)
					System.out.printf("# ");
			}
			System.out.print("\n");
		}
	}
}


Should games be considered art?

01 December 2013 - 02:23 PM

I started writing an article a couple of weeks back considering whether games should be considered art. Ultimately I came to the conclusion that games are indeed a form of art. It wasn’t an easy decision though. I hit road blocks at every turn. Every argument I started to reason, I thought of a counter argument. I found a lot of reasons why some games should be considered art and some games shouldn’t be. I found a lot of reasons why some pieces of art should be considered art and some shouldn’t be.

Let me try and explain.

 

I originally argued that all art can be classified as art because it delivers a message. That’s what separates the arts and crafts, the message from the utilitarian use. That definition didn’t always hold up though. The best example I can think of is listed below in my original piece – Tony Smith’s “Die”. It’s supposed to mean many different things. Its six foot by six foot in size so it represents death. I personally don’t see it. I don’t understand it. I see a large box.

 

I have other examples. Salvador dali, for instance, creates some very interesting work. I like it. I’ll admit, I am a fan. It has no common message though. The same goes for the countless pictures of Christian art created through the renaissance. They typically tell a story and warn people of not offending the church. They are basically period propaganda pieces. Would the propaganda posters of WW2 or today be considered art?

 

What about architecture? Why is that considered art while pottery is not? Both are utilitarian in nature. Both serve a purpose and neither (usually) share any message.

 

So what is art then? I still firmly believe that the difference between art and crafts is that art shares a message of some kind. Art will often deliver an emotional message. That is what separates literature from art; art delivers its message through emotions and images while literature delivers it through reason and words. Crafts don’t deliver a message but are merely aesthetically pleasing and help accomplish a task. Because of that definition, art may not mean the same to all people. It also encompasses my biggest conflict; why are films considered art and not video games?

Certainly, not all films are art nor are all games. Like film though, games can make a person feel. They can transmit a state of being, a sense of urgency, and transplant the thoughts or a person in some other time or universe. They can deliver a message. They can provoke players to feel and to respond in the same way that traditional art would.

 

If one would think that games can’t make audiences feel then I would remind people of the death of Aerith. The death of Aerith at Sephiroth’s hands (Final Fantasy 7) sparked massive fan fair and rumors. Players couldn’t handle her death. Rumors spread all over the internet that Aerith was coming back and that she wasn’t really dead. (I should remind readers that these rumors spread during the early days of the computer boom and internet adoption, back during the hay days of AOL to put it into perspective. Internet use wasn’t the same then as it is now which only furthers the proof of impact of Aeirth’s death) Players actually mourned her death. They wanted to seek redemption. Her death made players feel. The Battlefield series, as much as I wouldn’t want to admit it, force players to realize the angst and destruction of war. “I Have No Mouth and I Must Scream” generally make people feel despair.

 

Games do provoke an emotion and response. They deliver a message in a way that neither film, nor traditional art, nor literature can. It’s a new media that is still very much in its infancy. The level of detail and creativity required to provoke such response have only come about in the last 20 years, a short time in the world of art. I think that’s why many critiques don’t consider games to be art. It’s to new. I assure everyone though that games are both a form of art and entertainment. They liven the soul and speak to people. They make players react and think in ways that other media can’t.


Gauging Customer and Player Input

24 November 2013 - 02:50 PM

I originally posted this on my personal blog. I thought this information might be useful to others though, or at the minimum engage people in conversation and offer interesting ideas to gauge app response for devs. I haven't seen that many conversations about applying metrics to apps after the fact. Let me know what you think of this idea and how/if it would effect anyone at all. 

 

I take no claims for the idea of NPS. It's a metric that is growing in popularity, especially with customer service at major companies (Rack Space, GoDaddy, AT&T, T-Mobile, etc...). I'm very familiar with NPS though and twisted the thought process a bit to work better for apps by using existing information.

 

NPS is a powerful tool that can be converted to very powerful metrics to measure a game’s performance. That’s a bit of a broad statement. It’s true though. The best part is we already have the tools to do this. We already have star reviews on mobile markets to gather information for us. That seems like a very ‘duh’ thing to say, that star ratings mean something, but I would argue they aren’t really being utilized properly.

 

First, let me start by explaining NPS.

 

Net Promoter Score” is a customer loyalty metric developed by (and a registered trademark of) Fred ReichheldBain & Company, and Satmetrix. It was introduced by Reichheld in his 2003 Harvard Business Review article “One Number You Need to Grow”.[2] NPS can be as low as −100 (everybody is a detractor) or as high as +100 (everybody is a promoter). An NPS that is positive (i.e., higher than zero) is felt to be good, and an NPS of +50 is excellent (Wikipedia, 2013).

 

 

NPS is such an important metric because it’s one of the first that quantifies the customer experience and, more importantly, the cost of word-of-mouth exposure. Business has always known that word-of-mouth advertising is the best anyone can get. We’ve never been able to easily place a dollar value on it though. We’ve also had very little insight on how negative word-of-mouth advertising can impact a product or business image. In short, NPS allows us to quantify the customer experience and how it affects our bottom line. That seems like a really powerful metric when it’s put into perspective. We really should be paying attention to it.

 

Did you know that it takes 5 good responses to negate a single negative response?

 

 

NPS is typically measured on a 1-10 rating scale, and in some cases (depending on the business) a 1-5 rating scale. On a typical 1-10 rating scale a 9 and 10 are considered promoters, 7 and 8 are considered passives, and anything below is considered a detractor. Promoters will (obviously) promote the product and the business. They tend to not go anywhere. Detractors will bad mouth the product or business and jump ship as quickly as possible. Both promoters and detractors tend to be vocal and can offer great feedback. Passives are harder to gauge. They tend not to be vocal. There is a little bit of an art to raising their allegiance with a product or business. They are also opportunists. They will stick with a product or business because they are comfortable, but if they are offered something better then they will jump ship.

 

As the quote states above, NPS can vary from -100 (all detractors) to +100 (all promoters). The metric isn’t really measured in a percentage although some companies change the metric to display it as such and make it easier to conceptualize. The metric takes the total amount of detractors and subtracts them from the total amount promoters. That will give the total score. So, if a product receives 5 promoters and 3 detractors, the overall score would be 2. Some companies will say 2 out of 8 (or %25 promoters, or happiness rating, of a total of 8 responses) to make the metric easier to grasp. I typically measure the metric in this way as well.

NPS is typically measured with 2 or 3 questions.

  1.  How likely are you to recommend this product to friends/family/colleagues?
  2.  (Optional) How likely are you to recommend this company?
  3.  Why?

The first and third questions are the important ones. The second is typically thrown in for good measure to rate the company as a whole. The first question simplifies and boils down the equation to something easy and intuitive. It measures the whole package of customer happiness. It’s unique because it offers very specific insight and makes the question easy enough to answer to garnish more responses. The more responses, the more accurate the results (which is what NPS is designed to offer). The third question completes the feedback loop and allows the customer a chance to offer insight as to why they are happy or upset. Anything above a 0 score isn’t to shabby. Anything above a 50 is typically considered great. Anything below a 0 needs to be examined closely and fixed.

 

How does that relate to star reviews though?

 

Game developers obviously aren’t going to send customers a questionnaire. Very few games have the system already in place to do this (mostly MMO or social games only). Still, the process has to be friction free for the customer to participate. That’s where we have it easy. App stores already engage the customer and asks that magical question for us. The very act of having a star rating system is basically saying, “Would you recommend this app?” The stars ask the question while the comments close the feedback loop. As application developers, we have the luck of having some of the most vocal and responsive customers. Compare app reviews to just about any other product. The response rate is typically much higher.

 

So how do we boil down those star ratings to the NPS? That’s easy enough. Businesses already use an established system with 1-5 scale ratings. That translates directly to 5 star reviews. 5 is considered a promoter. 4 is considered a passive. 3 and lower are all considered detractors. The comments close the feedback loop and explain why the customer rated the app the way they did.

 

Let’s use JetPack Joyride as an example (mostly because it’s one of my favorite games. Specifically, I’m using the Android version though an accurate analysis would use all versions of the app on all ecosystems (though sometimes segmented markets like the Apple App Store, Google Play, and the Microsoft Store require some independent gauging). Currently Jetpack Joyride, at the time of writing, has an average of a four and a half star review (out of five) broken down to (Studios, 13):

  • 321,905 five star reviews: Promoters
  • 40,234 four star reviews: Passives
  • 18,862 three star reviews : Detractors
  • 7,119 two star reviews: Detractors
  • 23,915 one star reviews: Detractors

 

That means JetPack Joyride has 321,905 promoters and 49,896 detractors (you can’t please everyone). That leaves with roughly a 66% NPS rating which is considered to be really great! Keep in mind, anything above %0 is trending in the right direction.

 

Let’s compare that to an app called Flight Track 5. I specifically picked this app because it’s ratings are a bit deceiving. At the time of writing it has a 3 star review with a total of 64 responses. Those responses break down to (Mobiata, 2013):

  • 26 five star reviews: Promoters
  • 3 four star reviews: Passives
  • 3 three star reviews: Detractors
  • 5 two star reviews: Detractors
  • 27 one star reviews: Detractors

 

That means that Flight Track has 26 total promoters and 35 detractors. Yikes! That would give Flight Track a promoter score of% -14. That is a negative fourteen. Remember, NPS scores swing from -100 to +100. The percent sign is kind of added just to make things easier to conceptualize but doesn’t mean much.  Looking at this data, Flight Track has a major reputation problem. I’m sure the developers could read the comments to find out why. Those comments complete the feedback look and offer great insight on what the developers of Flight Track need to improve. While every customer response may not offer specific insight, if a lot of people complain about the same thing I would think that improving on that one thing would drastically change customer perception. The comments are a good place to start.

 

Added Note: I have not used Flight Track 5. I offer no personal opinion about this app. Any data pulled was straight from the Google Play Store and are not opinions of my own. Please know that I am no intending or implying perception of 'bashing' this app. It's ratings merely made it a good example to demonstrate the metrics and how deceiving star reviews by themselves can be.

 

An Added Bonus

 

The cool thing about using NPS is that customer can go back into the app stores and change their responses. Data is dynamic. Developers can look at segmented time scales (perhaps before and after changes were implemented) and the entire life of the app. Think about how powerful that is for a moment. That makes the iterative life of an app, and the potential revenue, offer much greater potential.

During my travels around the interwebs, I haven’t read much of anything relating to gauging and quantifying customer reaction and experience. Perhaps this is an easy and cost efficient (as in the data already exists) way of doing that for developers.

 

Works Cited

Wikipedia. (2013, 8 13). Retrieved from Net Promoter: http://en.wikipedia.org/wiki/Net_Promoter

Mobiata. (2013, 11 21). Flight Track 5. Retrieved from Google Play: https://play.google.com/store/apps/details?id=com.mobiata.flighttrack.five&hl=en

Studios, H. (13, 11 21). JetPack Joyride. Retrieved from Google Play: https://play.google.com/store/apps/details?id=com.halfbrick.jetpackjoyride


Looking for criticism for my game, harsh is okay to

19 November 2013 - 07:33 PM

I was wondering if anyone would mind giving me feedback for a game. If any one has the time anyway (I understand how that is tight). I'm looking for good, honest, constructive feedback. Don't worry about sparing my feelings. I just want to know how I can improve. I'm not looking for feedback for code, but more on the game itself. How does it play? Is it fun? What sucks about it? What could be improved? What would make it fun? I'm specifically looking to the mechanics and the perceived amount of "fun" for the game. Any criticism is welcome please.

 

The game is an HTML 5 game. It's hosted at my domain. I put this as fair warning because some people are iffy about going to other websites. I just don't want to catch anyone by surprise and off guard.

 

This is my first completed game. I'm playing around with varying game engines as a hobby. My academic focus is CS and information systems. I'm still learning a lot here. It's called Attack of the Squares. It's a very simple arcade game. It's primary goal is to accumulate score. It was an exercise in balancing game mechanics. That's pretty much the point of the game.

 

It can be found here: http://www.kurie.us/Games/AttackOfTheSquares/

 

Let me know what you think, both the good and the bad. And please don't worry about being nice. I'd rather people be honest.


Critique my code please

14 August 2013 - 05:31 PM

Good evening everyone,

 

Would anyone mind please critiquing my code? Any help would be very appreciated.

 

Background:

I'm in school for computer science and am casually playing around with various languages coding different things. I decided to program a Pong clone in Java as a learning experience. This experiment has less to do with making an actual game and more to do with designing code really well. I designed my code with a lot of forward thought to make future changes and UI settings very easy to do later on. With that said, my code is probably a lot more complicated than it needs to be. But I did it for practice and learning.

 

I still have to add a point system and UI to change settings later on. I see those as more trivial things at this point though. 

 

I'm putting in two links to the code. One is to my Github account where the files are located. I am also putting a link to my personal blog page (not intending on plugging here) because I put all the code on a single page. I figured it might be easier to follow back and fourth between the various classes that way.

 

So, if anyone wouldn't mind, please tear into my code. I can't learn more if I have no idea what I messed up or what I could be doing better. I appreciate any opinions any person might have.

 

GitHub

 

Personal Blog Page


PARTNERS