Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered Sep 07, 2016 · View creator page →

Creator of

Recent community posts

Hi SpaceClick!  I've been working on updates to the game.  I'm on to the hint system right now.  Which do you think you'd prefer:

- Clicking on a revealed square will tell you which of the surrounding squares are positive or negative squares, or

- Clicking on a revealed square will tell you the number of surrounding positive/negative squares, but not which ones are which

Maybe there can be an option for both.  Right not I've added a way to buy Restarts with your winnings, the hints could be another thing to buy

Wow, thanks so much!  I had actually been looking at this game a few weeks ago and was thinking about revisiting it, so this was quite a coincidence!  I really like your suggestions.

Since you're enjoying it, I think I will go back and work on this again.  I am moving to a new game engine for it, still working on learning the ins and outs of the engine, so please bear with me.

Thanks again for your kind words and suggestions!  I'll keep you updated, maybe I'll do a devlog for the game or something like that.  Have a great week :)

Fun game!  I agree that there wasn't much in the way of comments.  But I'd love to see an expanded version of the game!

Thanks :)

Just by the sheer amount of thought, effort and polish that went into this, in such a short stretch of time, I wouldn't be surprised if it would have been hard to get a lot of comments in with the time limit.  The code itself has a layer of complexity to it (not super-complicated, but I think definitely a step or three above beginner level), but from someone who does work with code regularly, I will say I still was pretty much able to follow the code after perusing it for a bit.  So don't get me wrong, I think it is very well done!

I have to say...WOW, this is really great quality for the amount of time. I liked the music, and having never played PvZ that much before (outside of like one of those game tablets they have at some restaurants), I was able to pick it up pretty quickly based on your onscreen instructions.

I do appreciate that the code was grouped very well, but I think maybe sprinkling some comments as well could have added some more insight, particularly for those who are new to game dev or coding (I'm just speculating, as I'm coming at it with lots of coding experience, but I think some of the logic/decisions might be more accessible with some additional comments).

Overall, this was very well done!

Hello!  I've added a source link if you're still interested in how it works.  Thanks for the interest!

Hello!  I've added a source link if you're still interested in how it works.  Thanks for the heads up!

As I mentioned on your game page, great work!  Also a very clean layout, and I like how well you labeled everything on the screen so we could easily understand what was happening even before looking at source.

That's a great point!  I was kind of struggling to find a balance between allowing the player enough time to "digest" the sequence actions and see what happens on each turn, but looks like it could definitely be cut down a bit.

It wasn't a lot of time to complete, but I think you've done a great job...very clean, and simple enough to easily get the concept. Look forward to see if you expand on it!

(1 edit)

Very nicely done!

It's subtle, but what I really like is that for each individual slider, as you make the changes, you can actually hear the difference through the sample...rather than having to wait to play the game first to hear the change.

(2 edits)

Hello!  I thought the source was downloadable.  In the page options I did have a way to download the source as well.  May I have a moment to go back and figure out why it's not showing up?

Oh no...I see now what I did wrong.  Is there anything I can do now or is it too late? 

Well...I can't believe I made this mistake.  Even though it's disqualified, if anyone wants to know how I did it, here's the json file:


(1 edit)

Particularly the platformer:

I just assumed it was ok, but something told me to check.

Real good time to ask I guess lol

Any questions, comments, or suggestions?

Feel free to start another topic too, if you want to discuss anything in-depth.  Or you can email me at

Hope the book is helpful so far!

In this thread, I'll post the latest updates about the book.

* January 22, 2019: First version of the book posted.

* February 1, 2019: Updated version of the book posted.  Changes:

- Added a new study skill section on how to take notes and remember information.

Hey, sorry I missed know you can make JAR files for Java games, right?  They're pretty similar to executables, just click on them to run.  Does that sound useful for what you're trying to do?  Let me know, I can link a tutorial.

I was thinking of a conference call, where people could ask Java questions or general game design questions.  My event will be done this weekend, and then I will be back posting regularly, so I'll have more details/ideas soon.

Sure!  Do you think an extra month is good, or more?

Also, my event is in a few weeks, I was thinking maybe afterwards we could do a live Q/A online call or something.  Does that sound like something you guys would be interested in to ask questions and get some feedback about Java and/or game development?

Hello!  I was initially setting text-based guideline because graphics is kind of a more advanced topic, but if you feel you want to go beyond that, then great!  I'm curious to see what you come up with :)

Also my apologies for the lack of posting.  There's a major event I've been putting together and planning for, and I haven't been able to keep up as originally planned. 

Do you guys need more time or anything?

Good evening everyone!  Here's a brief write-up to introduce you to conditionals (if, else, else-if statements) in Java:

Good evening everyone!  Here is an overview of classes in Java:

Hello!  Yes, System.out.println() is good for making text-based games.  

Good morning everyone!  I've got an introductory overview of basic math in Java:  I'll also be discussing more advanced math, and the Java math library, and how it applies to games!  It's a holiday here, so it will be posted probably a bit later in the day.

Have fun, everyone!

Good afternoon!

First off, the theme for this month's jam is very loose, the only guideline is that you make a text-based game in Java.  I will post some ideas that you can build off of in the forum.

Next, I have some questions for all of you.  From some of the forum posts, and from looking at some of your profile pages, I see there's a range of programming ability.  Some of you have some Java experience already or have even made games in other languages.

I'd like to get more information about your experience, and what you'd like to learn.

Also, I'm strongly considering changing the format of the game jam.  Instead of doing 3 separate jams for each summer month, with 2 weeks in each month for the actual game development, I think it might be better to do one jam for the whole summer.  That way, people don't have to miss out on the two week window if they have vacation or other plans, it's a more easy-going pace for everyone, and you can submit multiple games to the jam throughout the summer.

This is meant to be a fun learning experience, and I don't want you guys to get stressed out or feel rushed when you're trying to learn something new.

Do you guys think that format change is a good idea?  

Please let me know either by responding to this post, or by filling out this survey:


- Cloudy Heaven Games

Sorry about that, wrong link!  It should be good now.  Thanks for letting me know!

Sure, I can do that.  Bear with me though, please, it takes me a while to do these write-ups, and it's been a busy week.

(3 edits)

Hello all!  I've uploaded an introduction to Java methods here:

Give it a read, and in the meantime, I'll be posting some example code soon.  I've got more material on the way as well.

As always, questions and feedback are welcome!

Hello, sorry for the confusion!  So the idea is to have a different jam each month, with participants able to do more advanced games as they learn more each month.  The initial thought was that for each month, participants would come up with a new idea to do in 2 weeks.  So three different games that gradually allow you to use the skills you're learning each month.  For example, come July, you can use what you've learned in June AND July to make a more complicated game than you would have in June.  Each month builds on the previous.  It seems like it's kind of combining the two options you mentioned in your post, so you definitely don't have it completely wrong at all :) 

Does that make more sense?  Since this is the first time doing something like this, we can make modifications to the basic idea of the jam as we figure out what works, what doesn't, what needs more explanation, and so on.  So definitely, any questions or feedback that you have is welcome.  It's my job to make sure that I'm being clear and getting you guys the information you need.

(1 edit)

Hello and welcome to the Summer Learn Java Jam!  I hope this jam is fun and that the learning resources help you in your programming and game development journey!  I'll be posting a lot of info, and it might be easy to get a bit lost.  So just in case, here's a suggested order in which you can tackle the various threads:

Getting Set up and Started with Java

If you've never used Java or need help getting set up, these are the threads you'll want to visit:

How to Set Up Java on Your Computer

Running Your First Java Program

Learning Java Basics

An Introduction to Java Data and Variables

Basics of Input and Output in Java and Game Development

An Introduction to Java Methods

Game Design

Developing a Game Concept

I'll add to this post each time I present more information.

@rogue64 I actually believe I have some Swing stuff I used to teach a student.  It would focus on events (button clicks, text box changes, things like that).  If you'd like I can did it up when I get home and start repurposing it for game dev.  Just let me know.

Hello everyone!  I've put together a short overview of data types and variables in Java.  You can find it here:

I'll be out most of the day, but will be working on another document when I get back.


(1 edit)

Thanks, I'm glad you like the idea!

My original plan was to focus on the plain installation (no additional libraries), and start with text-based games, so that people could really get a good grounding in the basics of Java.  Especially since some people might be expecting to take AP Computer Science in the fall semester.  That course generally doesn't have the most "interesting" material, according to many of my students, so I thought this would be a good way to make the basics more fun.

That being said, I understand there's different skill levels, so if you have some Java experience already, I can make a post with some game libraries you might want to use.  The other thing is if we were to move to graphics (if there's time over the summer series), I was going to look at using Java Swing GUI library (no additional libraries or installations required, it comes with the basic install).

If you or anyone else would like, let me know your skill level and what you'd like to learn about, and I can find ways to work that in.

I'll be posting more material here this week, but in case, you're interested, I started talking about Java and JRPG-style games here:

Thanks, I'm glad it's helpful so far!

Please let me know here if there's any questions, or anything you'd like to see done differently so far.  You can also message me if you want.  Thanks!

How Do You Get Keyboard Input in Java?  

Ok, so for now, I'm assuming you're using a keyboard, we'll talk about how to get keyboard input.  In Java, we need to use something called a Scanner object (we'll talk about what objects are very soon as well).  First, at the top of the program, let's be sure to include this line:  

import java.util.Scanner;  

Next, we need to set up and create the object, which looks something like this:  

Scanner inputReader = new Scanner(;  

Scanner is the type of object we're creating, and we're giving it a name of inputReader in this example.  You can call it something different if you want, and in fact, in the code snippet, we've called it readInput.  Giving it a name allows us to call and use it later in the code.  Note that we need to create and name the object before we can use it, otherwise we'll get an error when the program runs.

The new Scanner part of the line actually creates the new Scanner object, and the part in between the parentheses tells us that the Scanner will read input from, which in this case, represents the user's keyboard.   

So taken all together, in plain English, we can say that this line:

Scanner inputReader = new Scanner(;

is basically saying "We're creating a new Scanner object called inputReader, which will check for input from the player's keyboard."  

After we set up a Scanner object, we need to actually use it to read input from the user.  Let's say that we want to get a line of text that the player enters, such as a player name, for example.  We could do something like this:

String playerName = inputReader.nextLine();  

A String is a type of Java object that represents text.  Remember when we used System.out.println() to output text to the screen?  Everything in between the quotation marks was a String object.

Our example line above, in plain English, means "Create a String object called playerName, and use it to store the next line that the player types on the keyboard."  A line of keyboard input ends when the player presses the Enter key, and at that point the Scanner object will read that line.  

Again, since we named the String object, we can use it later in the program if we want to.  For example, we can print out a welcome message:

System.out.println("Welcome to the game, " + playerName);  

We're using System.out.println() again, but now we see a + sign.  This will print out the first part between the quotation marks, which is a String, and then it will add whatever we entered for playerName.  Everything between the quotation marks is called a "string literal," because the program will print it out exactly as it's shown.  playerName is a variable, that represents a String value that can be changed.  Remember in math how you had variables called x and y, where you didn't necessarily know the value at first, but you knew it had to be a number?  Variables in Java are the same basic principle.  So since both "Welcome to the game, " and playerName are both Strings, we can use the + sign to combine, or concatenate, them together.  If the player had typed in the name "Terra" for playerName, then the output would be "Welcome to the game, Terra".  

We will be talking more about variables soon.  But for now, this is one basic way to work with input and output in Java.   

Now let's look back at the code snippet I posted at  I've put in a few lines of code that wait for the player to press the Enter key.  In the code snippet, on line 9, you can see that I've set up my Scanner object, which I've named readInput.  We then have a String called keyPress, which waits for the player to type something, then press the Enter key.  There's a bit of a trick here on line 12.  In some games, you might want the player to just press Enter, and not worry about any other input.  On line 12, the player didn't enter any text, but just pressed Enter, then the keyPress String should be empty, or "".  Notice that there is NO SPACE or anything in between the quotation marks, it's just an empty String.  Whitespace counts as part of a String, so if there's a space there, let's say that the player hit the space bar before pressing Enter, it's not an empty String.  Line 12 checks to see if the player entered an empty String, and if the String is empty, the program prints a nice intro.  Else, on line 15, the program will let the player know about following instructions :)

In Java, it's pretty easy to get simple input from a keyboard and output to the computer screen.  It might seem simple, but this functionality is a building block for more interesting games and interactions.  Right now, let's focus on output to start.   

Hopefully, you went through the post about running your first Java program.  If you haven't, go back and do that step, and then come back to this post.  From this point, I'm assuming that you have either set up an IDE or have been able to use a text editor and command line to run a program. 

How Do You Output Text in Java?  

To output text, we use a method called System.out.println().  We'll discuss methods very soon.  The usage looks like this:   System.out.println("Your output text here");  

Pay close attention to the case, the System part should always be capitalized.  The case does not matter for the text in between the quotation marks.  

Simply replace the code text in between the parentheses (which says "Your output text here") with whatever text you want.  Make sure that your output text is all between quotation marks and inside the parentheses, and that you end the line with a semicolon after the closing parenthesis.  

So now we can write a very simple program asking the player to press a button.  Let's look at some short example code.  Have a look at the code I posted at  If you want to run it yourself, copy and paste it into an empty file on your computer, and name the file   

You'll notice on lines 7 and 14, we have our System.out.println("…"), and then in between the parentheses, there's quotation marks and text.  If you run the program, you'll see that everything in between those parentheses is output as text to the screen.  It's that simple to output basic text!  Try the following:  

  • Change the text in between the quotation marks, run the program, and see how the output changes.
  • Add another System.out.println() statement, after line 6 but before line 9, and put whatever text you want between the parentheses.  Don't forget to put the text between quotation marks, and don't forget to put a semicolon after the closing parenthesis.

At the heart of every game is user interaction between the player and the game.  The basis of this interaction is an input/output cycle.  Input is when a user provides information to the software.  For example, types of player input could include pressing a directional control pad or using a joystick to move the player character, clicking a button to fire a weapon, selecting dialog choices from a menu, or entering text to name the player character.  In turn, the game or software can produce output in the opposite direction, providing information or game results to the player.  Examples can include displaying non-player dialog, informing the player about battle results, and playing sound effects to alert the player about a nearby enemy.  

You can see that a game is a give-and-take relationship between the software and the player.  We can also think of several types of input devices and methods, which vary depending on the game and the platform (or system).  Some possibilities include:

  • Keyboard: The keyboard is a standard input method for computer games.  In addition to text input, the keyboard can be used to control player actions and other functionality, such as the game camera. 
  • Touch-screen: Touch-screens are a primary input method for games on smartphones and tablets.  The Nintendo DS also has a touch-screen, which is paired with a stylus.  For smart phones and tablets, games might also have an onscreen keyboard to replace the physical ones from computers.
  • Mouse and pointer: If you are using a computer, you will probably use a mouse to point and click or even move, combined with a keyboard.
  • Gamepad/controller: Most game consoles come with some sort of gamepad or controller.  At the least, there are usually some buttons, and there may also be analog sticks (similar to mini-joysticks) and shoulder buttons for additional controls.
  • Joystick: A common sight in arcades, the joystick is the common input device for arcade cabinets, but also some computer games can be controlled by a plug-in joystick.
  • Microphone: Some games, such as several Legend of Zelda games on Nintendo DS, allow the player to use sound and breath to provide input and meet challenges.
  • Motion sensors: Systems such as the Nintendo Wii and Microsoft Kinect use devices that detect player motion and react accordingly.  Smartphones and tablets might also use accelerometers to track changes in device height, angle, and other motion variables.
  • Other specialized devices: Some games have specific special input devices.  For example, the original NES system had a light gun for games such as Duck Hunt.  Popular arcade game Dance Dance Revolution required a foot pad to process players' dance steps, and Guitar Hero provides a special guitar replica device. 

As far as output, there are several common means and devices, such as:

  • Screen: Probably the most common output device for video games.  The game can present text and graphics to the player.  However, some games might not need a screen.  For example, they might be based on audio.
  • Speakers: Game sound effects, and even music, are an important way for the game to convey information to players.  Some visually-impaired players have even been able to enjoy mainstream games using just sound alone (for example:  With devices such as Alexa, as well as screen readers and other software, there are surely plenty of opportunities to make audio-based games.
  • Controllers: Some systems include controllers that implement vibration, based on what's happening in the game.  For example, if there is an in-game explosion, the controller might vibrate, and the vibration intensity could vary, depending on how close the player is to the explosion.

One of the first things you see in many games is an introduction screen and an instruction to press a button to start.  Then there might be some sort of backstory text to introduce you to the game's context.  This approach was particularly true with older games, before technology allowed long, elaborate cut scenes.  For example, have a look at the introduction for the original Legend of Zelda game on the NES:

Once the game jam starts, you will need to come up with an idea for your game.  At the beginning, you won't have all the details worked out, but you can start building the basic concept.

I know that a lot of developers don't really like to do a lot of documentation and writing, but I'm going to suggest you write down your game ideas.  Once you have an idea that sounds promising, you can write short game concept document.

A game concept document is short, usually about 1 to 2 pages.  It's a high-level overview of the game, and much of the information can help potential players decide if they want to play the game.  Some information you will want to put in the document includes:

  • Game title: What is the name of your game?  You can change it later, but if you're not sure at first, you can come up with a working title.
  • Game genre: What genre is the game?  If you're not sure what a genre is, it's the type of game.  For example, some popular genres include puzzle, action, adventure, role-playing game, first-person shooter, and so on.  If you'd like to learn more genres, here's some recommended reading:
  • Platform: What device or platform is the game playable on?  Of course there can be more than one target platform.  Think about mobile devices, different computer operating systems, and consoles.
  • Target audience and rating:  Who is the target demographic for this game?  Think about factors like age, gender, interest groups, and so on.  Basically, what kind of person would want to play this game?  If you were to sell this game in a store or marketplace, what kind of rating would it get?
  • Game objective:  What is the player ultimately trying to achieve?  Is there also a purpose that you want to convey to the player (for example, do you want the player to learn something as part of the game)?
  • Game concept/Elevator pitch:  If you had 30 seconds to describe your game to someone, what would you say? If you look at the description pages for games on the Google Play Store, Steam, and other marketplaces, or on the back of a physical game package, you'll usually see a short paragraph describing the game.  That's a good idea of what the elevator pitch should be like.
  • Unique selling points (USPs): What makes this game stand out from others on the market?  Why should players choose this one over other similar games?
  • Fun factor and features: When you look at the packaging or description page for a game, you'll usually see a bullet-pointed list of the game's highlights and features.  These items show the user what makes the game fun.  You might include some of your unique selling points in this list, and in fact, some people combine the USPs and the features, rather than having two separate lists.

As for most game and software documentation, there is no one set format for game concept documents.  Different developers might include variations on this overall format, with more or less information. 

A Real-Life Example

If you'd like to see an example of a concept document for one of my games, Brain Bouncer, you can view it here:  And of course, you can play Brain Bouncer or view the project page at

So, having said all of that, here's my recommended action steps for you.

  1. Check out the concept document I linked above, to see an example.
  2. Choose a game that you like, or an idea that you have.
  3. Write a game concept document based on the idea or game that you've chosen.  Keep in mind that throughout the game development process, you might make changes to your game, so it's ok to come back and change the initial document later.
  4. If you'd like, you can share the document here, but don't feel pressured to.  I understand that if you have an idea that you want to develop, you might not feel comfortable sharing it with people yet.
  5. Post here if you have any questions.