Circuit Crawler is now on the Android market! 100% of all proceeds will go to the Youth for Technology Foundation to help children in Africa and the poorest parts of America get access to the technology that most of us take for granted.
Today, we accomplished quite a bit. Robert worked on finishing off the level editor (its SO near completion) as well as helped Zayd with puzzles. Devin worked on AI and noding while Matt worked on miscellaneous game topics involving physics, such as ice tiles. Michael worked on better cohesion between our group and YTF. We even had Lauren come in and do some of our art (e.g. LASERS!!!). Our biggest challenge today was organizing the actual sale of the game. We want to be able to keep the intellectual rights, but we also want to donate the game to YTF, so we are still looking for a feasible solution. A minor issue was that Mr. Gregory(service learning director) was untraceable, so we still do not know whether we are going to present in the Multimedia Lecture Hall or the Theater in the Arts Building. This is a small, yet pressing issue, because as we approach the 30th, we need to know what kind of projector we are going to be working with so that we can buy the necessary cables to have a live demonstration of the game.
We’ve done a lot more with the game, here’s the update:
Also, we’ve got a video up for our level editor, which we’ll use in the coming weeks to create a lot of levels.
Today was challenging. We had some problems regarding physics, and spent most of the day trying to fix the problems physics poses. We also worked Android activities. But, we did accomplish completing the code for a parser, although we did not implement it. We have pinpointed the physics problems, and we will fix them shortly over mid-winter break because we get more time to devote to our project. We will have a YouTube video up today and we will post it to the blog as soon as it is done.
So we’re now planning on having a weekly video uploaded of our progress. With each week will come new updates and more polished features from previous weeks. Upon release (March 30, 2011), all proceeds from this game will go to the Youth for Technology Foundation. So without further ado, the video:
So we’ve finally got a level done, including many of the features we’ve been working on for a while. Here’s the video.
Today was a productive day. At first we ran into physics problems within our game. Whenever our player object would run into a corner of a wall, it would slide through the wall halfway and then hit the wall, when it was supposed to slide with the wall without phasing through it. But after testing and retesting, we were able to fix the problem and continue working. Devin then set up collision between different shapes of objects. Zayd worked on XML parsing, and is nearly done with the process. Matt worked on circular object collision. Robert helped everyone out and made the sample level out of the code contributed by everyone. We plan to integrate the AI and enemy entities, and also rendering puzzles. Michael plans to set up and create the PayPal accounts to donate towards YTF. By the end of today we will have a YouTube video that will demo our sample level that we will post shortly on this blog and our Facebook page.
Over the past few months, we have been diligently working on this game. Not nearly as much on the specifics of the game as on the graphical and logical programming required. Once we have all the components we need to make a fully working level, we’ll be working on the specifics of an actual game. For now, we have pictures of several stages of game development leading to what will soon be a playable demonstration of our work. We are hoping to complete this demonstration by our next Service Learning day, January 26.
While this image is only showing texturing, by this time, we had many features working in the back end:
- fullscreen mode
- almost completely object oriented (not entirely encapsulated at that point, for testing purposes)
- using OpenGL ES 1.0
- proper cartesian plane, with -y at the bottom
- collision detection by Separating Axis Theorem(working on having them bounce back now)
- movement/rotation/scaling with inerpolation (smooth motion instead of just appearing a far distance away)
- textures (currently 1, and planning on splitting into tileset)
- touch-based camera motion (it’s clamped right now, as in touching the very center of the screen returns camera to (0,0))
- “Programmer art” tileset, complete with hand-drawn numbers
- a hot pink background color. We entered random values for the RGB values, ended up being pink. We looked up what hot pink was, adjusted the values. I don’t know why we kept it.
Within a day from that screenshot, we managed to get a polygon to display only a small segment of the full texture. We also managed to streamline the process a bit and have the polygon display a specific tile based on a single number input. Not much was added between the last update and this, but some code was cleaned up and made to work better.
Again, this was a minor update. While this looks like a single polygon, it’s really 64 polygons aligned next to each other with randomly selected tiles. This introduced a slight change to the organization of the code, and allowed for layered rendering, where the tileset will always be rendered below entities.
This animated gif (click image to view animation) is showing a few things:
- Multiple texture support
- Transparency (some of the blank tiles in the back are actually showing the background and are not colored in)
- Spriting abilities, from a tileset
Also note that the animated .gif format is limited in colors, which is why some of the smooth transitioning colors are represented by harsh changes in the image.
This is the last recording we were able to make because the Android emulator was starting to slow down quite a bit, and we wanted to try out actual speeds with a real phone, so we started debugging on an actual phone. Again, the gif format has inaccuracies in color, and recording it only slows down the emulator.
Anyways, this last animated gif shows a lot of things going on:
- UI Layering. Instead of having the entire user interface move with the world every single frame, we simply render it onto a layer which never moves outside of the screen.
- A progress bar. What’s special about THIS progress bar is that it doesn’t just take the red to green gradient and shrink the size of the polygon, it adjusts the color to make it seem as though the gradient were solid and the polygon were only showing a small segment of it.
- A slightly improved spriting method which runs a lot more efficiently
- Collision detection and reaction, the two sprites stop
In the last 4 days, we’ve switched to debugging on an actual phone, which is saving us a significant amount of time where we would wait for the emulator to boot up, and nothing worked as smoothly as it should have in the emulator, making us test it more than we do on the phone.
Since then, we’ve expanded the things the UI can do, such as adding buttons and a joypad to control camera and player movement, gradients that work not just right to left, but in every direction, and we’ve been filling out some of the details for some of the entities within the game. Throughout all these updates, we have constantly been cleaning up previously written code, refactoring variables with strange names, and trying to work out a good development process to increase our efficiency. Over this last week and a half, we moved from using subversion to git for handling code management. Both subversion and git are designed to help teams of programmers organize their code and merge changes with each other, but git does a far better job at it, letting us spend more time coding and less time figuring out what lines of code we need to keep or remove in order to merge successfully and without the loss of any new features.
We’ll be working hard for the next 3 weeks to turn a series of features into a cohesive level demonstration. We may make a few posts leading up to then, though.
We have made progress in our coding. Devin and Robert have successfully programmed an entire circuit puzzle for the game. The circuit puzzle comes complete with what is called a sanity check. The sanity check makes sure the puzzle in the game is solvable so the player will not have to waste his or her time trying to solve an unsolvable puzzle. The puzzle does not have graphics yet as we want to get all of the logic down for the game before adding graphics. Pictures will be up shortly of our work.
Today was a productive day. We got eclipse working on our computers, and began our framework for our code. Michael started the concept art. Robert drew up a specific class layout for our game and coded a high level layout of the classes. Zayd learned XML code and has begun learning how to parse with it. Devin began coding one of the puzzles for the game. Matt helped Michael with the concept art design. We plan to continue what we were doing today and develop our game, and answer any questions YTF may have for our group. A picture of the game layout will be up shortly.