some recent screenshots
Xuebing Du
taylor price

JVL

JBB: An Artblog!
ojovivo
Game of Thrones Daily
cherry valley forever
dirt enthusiast
NASA

shark vs the universe

PR's Tumblrdome
we're not kids anymore.

Love Begins

oozey mess
Lint Roller? I Barely Know Her
Sade Olutola
h
Sweet Seals For You, Always
art blog(derogatory)
YOU ARE THE REASON
seen from United States

seen from Germany

seen from United Kingdom
seen from United States
seen from Argentina
seen from United States

seen from Malaysia
seen from United States
seen from United States

seen from Italy

seen from United States

seen from Germany
seen from Italy
seen from Philippines

seen from United States

seen from China
seen from China

seen from Türkiye
seen from Vietnam

seen from Germany
@postmastergeneraldevblog
some recent screenshots
Worldbuilding
Time for some worldbuilding! Not the history/back-story kind, but the let-us-make-the-terrain-on-which-we-will-be-standing kind. But Adam, you may be saying, should this not be called level building? And I will say, my game doesn't have levels! It has a world! In response you will only look at me askance, one eyebrow raised, as if to say: well okay, have it your way, go ahead and CONFUSE EVERYONE.
PART 1: Building the world
Fig 1. An area of the game being designed in my worldbuilder program
This is my worldbuilding program, which I've made in java. As you can see, there's a 9 by 6 grid of square buttons, matching the 9 * 6 tile format I'm using in my game. On the right we have a scrolling window with different types tiles. Select the tile you want, and click on the button representing the location you want, and BAM the image on the button changes. When you're happy with the design you click export level and you can save the resulting map as a text file.
Fig 2. the text file representing a single screen of the game
Basically, it's just a list of tile types with their x and y locations. Each object is contained within the curly braces. Anything outside of that doesn't count - so we can use that for comments (as we'll see momentarily).
What's cool is that I use the same sort of file to determine what types of tiles are available in the world builder.
Fig 3. Tile type index (remember that the text outside the curly braces has no effect, it's just for my own reference)
If I want to have more than just two tile types, all I have to do is draw a new one, name it, and put its name into the text file.
So this is all pretty cool, but how does this translate into actual stuff in the game?
PART 2: Loading the world
So now we need to get these maps into the game somehow. This was actually the trickiest part to accomplish, only because I'm not an expert with the Android filesystem. Basically, there are multiple ways to store files in android apps:
In resources: Files stored in resources are very easy to get to since they have a special built in way to refer to them in the code (R.fileType.fileName). However, you can't change files in resources, and you can't use text files. So that's out.
In a local file: You can make files that can only be read and edited by the app that makes them. However, these have to be made by the program after it starts, so that's no good for these files, which I'm making in advance. Might be useful for save games later on, though.
Use a SQL database: This might actually be a good way to do this (if you have thoughts on this, say so in the comments), but I don't know anything about SQL and I don't want to spend too much time trying to learn it right now.
In the SD Card: Files in external memory can be read and edited, but they can also be easily found by the user (which would be a problem if the delete or edit the world files and now suddenly the game can't play). Another problem is you'd have to remember a system address for your files. No go.
In assets: This is what I used. You can store any file you want in the assets folder, you can read and edit them, and ONLY your app can modify them. Great! There is one downside though, which is that you have to read each file in byte by byte.
So here's how I organized my data. Every android app comes with an "assets" folder. Inside assets I made a "world" folder. And inside world I made a "zone" folder.
Fig 4. My file system.
In the world folder I have a text file called "argil.wld" (Argil is the current name of the setting, but that's another post). This serves as a directory for all the zones of the world (the individual screens which I made in the level builder). It tells the game engine how big the world is, what zones are in it, and at what location (in relation to each other) each zone is.
Fig 5. The world file. Once again, only the information inside the curly braces is used by the computer. Also, notice my "IMPORTANT NOTES" to myself at the bottom. This is how much I trust my future self to have any idea of what my past self intended.
When the game starts up, it reads the world file. For each zone mentioned in the world file it creates a new Zone object. For each Zone object, it reads in the appropriately named .zne file (stored in "assets->world->zones"), which is the file made by the worldbuilder program. Reading through the .zne file it makes Tile objects for every tile in the file, and stores those inside the Zone object. Got all that?
Here's some code from the actual file-loading section:
InputStream file = context.getAssets().open(fileName);
boolean readingData = false; //true when it's reading relevant data
String data = ""; //the string of the data being read
int curByte = file.read(); //start with the first byte
while (curByte != -1){
char curChar = ((char)curByte);
etc...
curByte = file.read();
}
So, you can see that context.getAssets().open(fileName) is how you actually open a file from assets - note that fileName is a String and that you need a reference the "context" of the app.
More important is how you can tell when there's still data in the file - basically, if file.read() returns -1 then that means you've run out of bytes. This seems simple, but at first I was trying to use an ill-documented method called isAvailable() which I thought was telling me how many bites are available in the file, but NOPE, actually it was telling me something else and cutting off the file at about four letters in. So, this is me telling you DON'T DO THAT.
So, in conclusion, we start with a world builder
which saves as a .zne file
which goes through some code, and becomes
part of the game! I'm super excited about this.
(Note to self. How to take screenshots of game: Under Eclipse, go to DDMS, click on the camera icon.)
PART 3: Stuff you can download
The level builder
The source code for the level builder
The current build of the game (for the morbidly curious)
Cause and Effect: OR How the story will work.
So, I've been working on the story system for Postmaster General, and I think I've got a pretty good idea of how I want it to work. Therefore, I'm posting it here - partially for the EDUCATION OF THE MASSES, but mostly so I don't forget anything before I get to the actual coding.
Here are my goals: I don't want a simple linear story, instead I want events to be effected by the actions of the player (in this case, often, the way you deliver or don't deliver letters). HOWEVER, I don't want it to be your standard "good choice, bad choice" system, where you do something and it's immediately obvious what its effects are, one way or the other (or worse: obvious what they will be, BEFORE you even make a decision). Instead, while I want your decisions to have effects, I don't want them to be simple, isolated binaries - I want them to interact with the effects of OTHER decisions you made earlier, or be dependent on timing of other events, etc...
Alright then, let's break this down. The game's story will primarily consist of objects called events.
EVENTS
As you can see from the diagram, an event has several attributes. These are:
Cause(s): An event needs at least one of these, but can have multiple. Any single possible cause is enough to create the event, but once the event has occurred, that's it, it's other possible causes will not make a new version of the event.
Prerequisites: An event can have as few or as many prerequisites as are needed (or even none). These are a lot like causes, in that they are necessary for the event to occur. HOWEVER, they are not sufficient unto themselves to cause the event. Not only that, but all possible causes share the same set of prereqs. Once the prereqs have been satisfied, then any cause can create the event.
Time: This is simply the time at which the event occurred (ex: Day 3). This will be necessary for time-based causes and prereqs. For example: Event 21 may have a prereq that says "I cannot occur until at least 3 days after <Time of Event 14>."
Effect(s): These are what really make the event an event - they're what happens. Effects of an event can be new dialogue for characters, change of character positions, change of the terrain of a region, the writing of a letter, the death of a character, creation of a new item, or any whatever else I can think of. In turn, effects of an event can become the causes of future events.
TIMELINE EXAMPLE
Alright, now let's look for a moment at how I imagine these events functioning. Say you have a line of events (the red line) whose causes are the events prior to them, and whose prereqs are a certain amount of time after the previous event in the line (this way, say, each event occurs one day after the other).
Then we get to the forking path. There are two possible events here, both of which have the previous red event as a prereq. HOWEVER, they also have causes which emanate from other event lines (the purple and green lines, respectively). Now, there are two possible ways to handle this: either the forks are mutually exclusive (in which case, once the green event causes the right-hand fork, the purple event can no longer cause the left-hand fork, and vice versa), or not (in which case both forks can occur, but their timing is based on when the player activates the appropriate purple or green event). Whoo... okay, take a moment to relax after all those parentheses.
As a side note, the mutually exclusive events could be caused by making a prereq in, say, the left-hand fork that says "The right-hand fork must NOT have been created."
Now, imagine, that the two forks are exclusive. That would mean that if you follow the left-hand fork, the blue event line now becomes impossible to start, since it requires events from both the green and red (right-hand) to begin.
Finally, look at the purple line. One of its events is a cause for the red left-hand fork. In turn, one of the left-hand events, is a prereq for one of the purple line's events. In this way, actions taking place in different storylines will be able to effect each other.
You could also imagine (in the mutually exclusive scenario) that instead of the left-hand event being a prereq for a further purple event, a right-hand event was the prereq. In that case, to continue the purple line to its end the player would have to get to the red fork, then get to the green event trigger BEFORE the purple one (this way the right-hand fork is taken), and then go down the right-hand fork until the correct event allows the purple line to keep going.
Of course, the player won't get a map of events that looks like this... so the challenge will be to both a) keep this structure hidden, and b) still have the flow of events make sense to the player.
Alright, I hope that makes sense, because otherwise I'll be coming back to this later and just confuse myself...
Experimenting with Graphics
Another post! Hallelujah!
So, as I mentioned in the previous post, I'm not particularly satisfied with the way the graphics are looking right now. But more than that, I'm not all that excited about the style.
I think it's too stereotypically cartoony. Now, I like cartoons and cartoon styles of art, but there's a certain type of cartoon art in games (call it "flash game cartoon") that has been done to death, and just feels kind of boring, which I'm afraid I was edging close to.
Instead, I think I want to try something closer to a woodblock print. It would be either monochromatic, or have few colors, and have a white base underneath. Here's an concept drawing of what it might look like:
OR
I'm not sure if monochromatic or colored is better... if you have an opinion, post a comment! I've just added comments - an exciting development.
The other thing I want to work on, besides style, is visibility. I need the characters to be easy to read on a small screen. It should be obvious which part is the head, the hands, the feet, the eyes. A basic picture of the character (weight, hair, gender, clothing, etc.) should be able to be obtained from a fairly small amount of pixels. Some exaggerated facial expressions might also need to be readable. For inspiration in this department, I'm looking at old Gameboy sprites (particularly Pokemon). They were able to do amazing things with much less than what I'm working with.
One thing, clearly, is to allow the head to be much bigger than the rest of the body. Exaggerated hands and body movements are also used, but I'll analyze it more later, once I've done some more drawings.
Graphics / End of Hiatus
Hello internet, it's been a while since I've posted here! That is, I'm afraid, because I haven't been doing much on this project for a while. I know this is sad news for the anonymous millions who watch my every move (quit that! it's creepy!), but, joy of joys, I'm back to work. Here's what's up:
This is a screenshot of the latest build of the game. Look, a postman! And grass!
I have to say, I don't really like the way it looks right now. One problem is that the grass is obviously tiled. Another is that the postman himself is a little too hard to see. He looked fine about 10 times bigger on my computer screen, but not so much on the tiny Android screen.
Here's how he looks full-size.
However! Not all is misery and woe in this cold, hard world. These are just test graphics, and what they're testing did work. What I've really been working on is a solution to a tricky problem with android game development: screen size.
If you make a game for an iPhone or a Gameboy or even a PC, there's generally a set screen size you're working with (with a PC there're a set of standard ratios, but that's close enough). For android, though, there are a ton and a half of different devices and there's a wide range of ratios and resolutions. You don't know what device someone downloading your game will use - all you know is that it probably won't be the same as the one you tested it on.
The way I've set it up right now works like this:
The images the game uses are significantly larger than they need to be.
On starting the game, the game figures out the screen size of the device.
Then it resizes the images according to the ratio of 6x8 tiles per screen that I've decided to use.
Of course, there could still be some problems with this setup. First of all, if I have too many big image files, the size of my game could get unwieldy. Secondly, things still might get a little squashed or distorted when they move from device to device. And most important - I've still only tested this on my own phone. But, we'll see what happens.
State of the Game - Screenshots and Current Build
It may not be much to look at, but here's the "game" as it currently stands:
The Main Menu
The About Screen
The Game Screen
Right now, the only game play is this: touch the screen to the right of the flying letter, it flies right. Touch to the left of the letter, it goes left. Etc. This is essentially how the controls of the game will work, only there will be a pacman-esque maze, and you know, you won't be a flying letter. Not that the flying letter isn't cool.
The Current Build
If for some insane reason you actually want to play it, you can download it here. Then all you have to do is move the apk onto your android device via a USB cable, find it on your phone, install it, and run it like any other app.
Android Crash Course No. 2 - Anatomy of an App, Drawing Images, the Game Loop, Touch Controls
Last post I started covering all the stuff I've learned about android in the past couple of days. In this post I'm going to try and finish it up. It's a lot of stuff to cover in one blog post, and I tend to be pretty wordy, but I'll try to reign myself in. So we've done the easy part, setting up everything on our computer that's necessary to start app programming. Now let's see what we need to do to get the basics of a game going: that is, drawing images on the screen, having a consistent "game loop," and getting input from the user (in this case, touch control). Let us begin.
Anatomy of an App
Applications on Android have some unique features to them that are both cool and, at first, a little bewildering. I'm going to do a rundown here of the key components I've learned about, which I think would be useful to know for anyone attempting to make an app for the first time.
Activities - An android app is broken up into distinct activities, each of which is in its own java file, and is its own class (extending the Activity class, naturally). Essentially each activity represents a "screen." In my case, I have a main one, with buttons leading to subscreens (New Game, Continue, About, etc.) each of which are also activities.
Intents - An intent is basically a message that you can send from one activity to another, saying that you want to open the other activity, or send it information. So far, I've just used them to open up other screens (for ex. you click on the "About" button, it creates an intent that you use to open the "About" screen).
Views - A view is a GUI element that is displayed by an activity. If the activity represents a "screen," then views are the things you put on the screen - these can include anything from pictures, to text, to buttons, to search bars. Android comes with many pre-made views (like the ones I just mentioned), but if you're making a game you'll probably need to create your own custom view, extending the basic View class or its SurfaceView subclass.
The Application Manifest - This is an XML file that sets some of the basic parameters of your program including its name, icon, and which activities are part of it. In Eclipse you can conveniently edit most of its properties through some built in forms. Basically, it organizes the "metadata" for your app.
Layouts (and other xml files) - Every activity needs a view. You set this through the method setContentView( view ). If you want, you can use an XML file to create a layout separately from the actual activity and then load it using setContentView( R.layout.layoutName ). This is pretty cool for two reasons: one, you get to define the GUI of the activity separately from the activity which keeps things from getting messy, and two, in Eclipse you are actually given a visual editor for layout files which makes it really easy to place buttons, text, etc. All you have to do is make a new XML file in the folder "res/layout" which is automatically made with your project if you use Eclipse.
Resources - Layouts are the only types of things which can be stored in the "res" folder. There are also subfolders for "drawable" (pictures) and "values" (strings, ints, arrays, or any other constants). These let you store all your resources in one convenient place and reference them in this fashion "R.resourceType.resourceName" which is just really organized and cool (as a very disorganized person, I am impressed by organization). Keep in mind that you'll have to use a method (like setContentView for layouts) to actually access those resources.
Alright, that covers the basic parts of an android app. For a good step by step look (with code) at how to make activities, add buttons, and use intents to make those buttons link to other activities, take a look at the first part of this tutorial for Conway's Game of Life on Android. The tutorial is unfinished but the first section is really useful.
Drawing Images
If you simply wish to display an image on Android, its actually extraordinarily simple. All you have to do is this: 1) make an activity 2) create a xml layout for the activity 3) use the visual layout editor to add an ImageView 4) right click the image view and edit the image it uses 5) select your image from the "res/drawable" folder 6) go back into your activity and make sure it has setContentView(R.layout.myLayout) in its onCreate method. Simple!
Unfortunately, we want to make a game, and in a game, its not enough to just display a pretty picture. We need to be able to move the pretty picture around, animate it, make it disappear, know exactly where it is, and be able to specify its position down to the exact pixel location. Now, it turns out that the layout editor and standard views that come pre-made with Android aren't very good at this kind of thing. What they're good at is being easy to create, and being adaptable for different size devices or different screen orientations. They achieve this by having relative layouts - GUI elements are located on the screen in relation to other GUI elements rather than at specific coordinates, which makes it easy for the OS to adapt it to different situations, but impossible for us to know exactly where we're putting things, which is a necessity for most games.
To get around this problem is actually fairly simple. All we have to do is make a custom view. We do this by making a new class that extends the View class (or a subclass of the View class). Then we can edit what goes in the "onDraw" method. The onDraw method takes in a Canvas object which we can draw to. If we've loaded a Bitmap object from our resources folder we can then draw the image to the screen like this:
onDraw(Canvas canvas){
canvas.drawBitmap( imageName, x, y);
}
Now we can specify exactly where we want images to appear. The only thing left to do is to make an activity display our view, using setContentView. For a more detailed example of creating a custom view, check out this tutorial.
The Game Loop
Unfortunately, not all our problems have been solved. Yes, now we can draw an image on the screen in any position that we want. However, what if we want to move it around? To animate it?
Game Design 101: Most any game will have something called the "Main Loop." This is just a basic while loop that keeps on going until the player quits the game. Inside the loop are methods that update the state of the game (take in player input for example, or calculate what the AI is going to do) and then draw an updated version of the game to the screen. Each run through of the loop is essentially one frame of the game.
The problem: Android only redraws the screen when it feels like it. For most android apps, the images and buttons on the screen stay static most of the time, so by default android only redraws the screen when it knows something major is happening (like a button push). It doesn't waste time and energy constantly redrawing the screen. So we have to force it to. This is pretty tricky, and there are a couple of ways to do it. This page has a good explanation of the three main methods.
I went with the third way, creating a custom SurfaceView, because it runs the fastest. Truthfully, I only partially understand how it works, but in essence it's like this: with a custom SurfaceView you can create an object called a SurfaceHolder that contains a reference to the screen (I believe), using that reference you can "lock" the screen and force it to redraw. You then create a Thread (another type of class), which you launch whenever your SurfaceView is called to the screen. Threads have a method called "run()" which starts whenever they run (wow!). Inside of this you put a while loop - that's your game loop. Since the thread is inside of the SurfaceView, you can pass down to it a reference to the SurfaceHolder. Therefore, inside the game loop, after you update the game's state, you can lock the screen and draw to it, before starting the loop over again. This code contains everything you need to make this method work. When I finished I had these classes:
An activity - All this does is serve as the "board" that everything is placed on. It uses setContentView() to hold my custom view.
A customized SurfaceView - The view creates a SurfaceHolder with a reference to the screen, creates the Thread that holds the game loop, and starts and stops the Thread when the view opens and closes.
A Thread - the thread holds the actual game loop inside of its run() method. Inside of the run method is a loop that calls the update() from the game engine, then locks the screen, then calls the render() method from the game engine, then starts over.
A Game Engine - This is just an ordinary java class with an update() method that updates the state of all objects in the game, and a render() method that draws everything in the game to the screen.
Alright! Making a main loop in Android is a trick, but I feel like it's probably the hardest hurdle to cross in getting a game started. At least so far.
Touch Controls
Now that we can draw things on the screen, and we can update them and redraw them regularly, we need a way for the player to actually control the action. Since we're using Android and Android phones have touch screens and touch screens are cool - we'll use a touch screen! This is actually pretty simple.
Views are capable of collecting information about user input. All you have to do is implement an interface that gives it the correct methods. In this case we'll use an interface called OnTouchListener, which adds the onTouch method. If you've ever used a ButtonListener in java, it's basically the same deal.
Whenever the user touches the screen, the onTouch method will be passed a MotionEvent object. The object will contain information about the touch - most usefully, the x and y position of the touch. All I did then was save that position as a variable, and give the information to the game engine. To see how to implement an OnTouchListener look at this code.
Conclusion
At this point I have an opening menu screen with a title, a little flying letter emblem, and some buttons. If you press the "new game" button you are taken to the game screen. It has a little icon that you can control by touching the touch screen. Touch to the left of the icon and it moves left, to its right and it moves right, etc. It's not much, but at least now we have the beginnings of a game!
Other Useful Links
1. Replica Island - This side scrolling game for Android is really fun. Also, it's open source and has a blog, so you can go look at its code to see how it works!
2. Google Example Projects - These projects are all open source examples created by Google to help show what you can do in Android and how to do it. I think the snake one looks particularly useful.
Android Crash Course No. 1 - Setting up for Android Development
Long time no see, my imaginary, bespectacled, betentacled* webizens! Never fear, I, your diligent guide and ludomancer, have been hard at work delving into the deep mines and ancient musty halls of the Android OS. Well... perhaps ancient and musty are not the best adjectives for an operating system that is only 3 years old, but then again, this is technology we are talking about...
So! Android. This is what I said to myself going in, "Oh, ok, Adam, you can do this. No problem. Java experience. Check! Game design experience. Check! Oh yeah, this'll be great. Just a nice walk in the park. Piece of cake, really. Not even a lie." And this is what I said going out - "Glibble."
This is a slight exaggeration, but the truth of the matter is that game programming on android has a fairly steep learning curve. I wouldn't recommend it as the first thing you do. Go look at Python. Seriously, go look at it. Python is great, really. We won't even laugh at you. Still here? Well, your loss. On we go.
Having got my (very) basic game ideas in place, I wanted to get my hands dirty with some actual programming. These were my goals:
Set up the Android development environment
Display images to the screen
Move said images with touch screen controls
It's taken several hours to achieve those goals, as well as many trawls through tutorials, blogs, source code, and the Android API. As such, I'm breaking this process into several easily digestible, nutritious, delicious blog posts. This first one will cover bullet number one, aka The Easy Part.
It's true, as much as I was saying android was difficult all of two paragraphs ago, Google really has done a lot to make getting your toes wet fairly easy**. Here's the breakdown:
1. Get the Java Development Kit (JDK). If you don't already have this you haven't been programming in Java, which probably also means you need to go learn Java. However, that's your own lookout. In any case, you need this development kit in order to properly program and compile java programs.
2. Get the Eclipse IDE (Integrated Development Environment). Technically, you could write all your android programs in notepad. Technically, you could fight the entire U.S. Marine Corp with a staple gun. The preceding two sentences are in all meaningful ways identical. For those who don't know, Eclipse is a nifty program that helps you write, run, and organize your java programs all in one place. It will literally complete your sentences. And find errors before you even run your programs. It will not get you coffee.
3. Download Google's Android Development Plugin (ADT). This is why Eclipse is especially useful for Android programming. Google has created a plugin for it that makes writing android programs and creating android projects a lot easier. It's great - there's a wizard for setting up projects, easy ways to test your programs, and even a WYSIWYG editor for basic GUI. Follow the instructions on the link to set it up.
4. Get the Android SDK. Yes, you already have a Java SDK. Yes, you still need this one. The instructions in the link will guide you through the process of downloading it. Basically it gets you the basic stuff you need to program for the Android platform as well as a downloader (the Android SDK and AVD manager) which you can use to update that stuff and/or get more stuff for more specific parts of Android.
5. Almost there. Now it's time for a Hello World program. Google has provided a nice one that gets you through the process of setting up an Android project in Eclipse for the first time. Once you've gotten through that you'll have a basic idea of what Android programming is all about.
6. One last thing. If you have an Android phone you'll want to set it up so you can connect your phone to your computer by USB in order to test your apps. You can do all your test with the AVD (Android Virtual Device), but that won't give you nearly as good idea of how the game will run on an actual phone. Also, there's just something satisfying about seeing something you made appear directly on your phone's screen. Luckily, Google has made this pretty easy for you. Eclipse basically handles it automatically if you have their plugin installed. All you need to do is enable your phone's debugging mode and plug it in.
Whew. Alright, that's part one. There are definitely some cool things about android programming: they've got an eclipse plugin that automates a lot of things for you, and it's also really well organized. On the other hand, as you can see, there are still quite a few steps you need to take before you get up and running. Hope this helps.
*If you are not betentacled you are not part of my intended audience.
**There just happen to be sharks in the water...
Concept Art
Okay boys, girls and robots. It's concept art time!
This is the Postmaster General himself, the player character. Currently I am calling him "Franklin." I want him to have an old-style postman uniform. Here are some reference pics I used:
I may need to steal this guy's moustache...
Next we have a mock-up of what a screen of the actual game would look like:
As you can see, this is a rural town area. There would be different environments (grassland, mountain, forest, city, etc...), but this shows all the basic elements I want to include. We have maze-like paths, the houses you have to get letters to, and the enemies, which, as you can see, are dogs. I'm imagining the dogs will behave more or less like pacman ghosts, and if they catch you, you lose a "heart" from your health meter. A screen like this would just be one small part of the overall Republic, which you would essentially be a gigantic maze that you can explore at will.
And finally, a logo sketch:
I want to use the little wings because they remind me of Hermes.
Game Brief (brainstorming)
Since this is the first post of this blog, I feel like I should make some kind of introduction. Hello, unknown internet reader, this is blog. Blog, this is reader. Blog, why don't you tell reader a little about yourself before we begin?
The point of this blog is to keep me on task. I, as a personal exercise and summer project, am attempting to program a game for android phones. I'll be posting here to keep a record of what I've done and what I need to do, as well as offload any brainstorming, images, and random stuff I think would be good to put here. I've never programmed for android before so there will probably be a bunch of stuff about learning that as well. Okay. Cool? Cool.
To get started, I'm going to post the brief description of the game, "Postmaster General," that I came up with when I was brainstorming for game ideas. (Sadly, the other games will remain shrouded in mystery. This is partially for your benefit, but mostly for mine.) Here it is:
You are a postman tasked with delivering the letters of a small Medieval Republic (what is this?). It is a maze/pacman-esque game. If you choose you may read / tamper with the delivery of the letters, possibly altering the course of history.
Well, that was a lot of lead up for three sentences, but (if anyone read this) thank you for reading. If no one has read this and a tree falls in a forest, does the many worlds interpretation of quantum mechanics mean there is no free will?
(Note to facebook friends: feel free to ignore this blog. I was just unable to pass up the option of spamming your news feeds with each post. For that I am sorry. Sort of. It's still better than a FarmVille invite, isn't it?)