A development blog for our mobile adventure game

Latest

Designing Adventure (pt. 2)

Hey guys it’s Mark again.

We’re nearing the end of sprint 2 now, so that entails yet another blog post.

Good news, the BSP algorithm is finally operational.   There were definitely quite a few rough spots but we powered through them well enough with assistance.   Part of the algorithm needed tweaking as the rooms generated at first tended to the side of extreme proportions. Rooms would look like corridors or almost appear non-existant.

Michael Mateas here at UCSC is teaching a Game AI course that everyone on the team is taking, including myself.  Part of the class involves us taking up a final project involving artificial intelligence in games.  For our level generation team we’ve decided to do an extension of our current workload with a bit of help from some of the other guys.  Chris, our engine guy, and Clement, an upstanding resident of the game lab are with us on this.

Long story short our group is planning on incorporating a third algorithm and doing work towards having multiple algorithms used within the same level.  Rather than having a level purely generated using digging or BSP, we can instead have two or potentially three different algorithms operating in the same area.  So an outdoor clearing could be a made with the digging algorithm connected to an indoor section made with the conventional BSP algorithm.  We have plans on refactoring  BSP code to operate in this context, seeing as it does a good job of dividing an area into reasonable chunks.

The third algorithm we haven’t really ironed out yet.  My suggestion was using a pre-established maze generation algorithm then simply filling in dead ends to make it appear less sparse.  Maze generation algorithms are easy to come by, the logic for filling in gaps is a little less defined.  Alternatively Chris suggested we do something with particle systems that connected particles together to form a level.  It bears similarity to a cellular automata building algorithm, but it sounds interesting nevertheless.  I’m excited to see where it all goes.

-Mark “I really can’t find time for pictures” Zablan

Advertisements

MegaVenture

This post was supposed to be made quite a while ago, but smartphones are a cunning beast to extract media from.

A couple of weeks ago, the team decided to take a break and go to the boardwalk until it was time for dinner at Woodstocks. The journey was perilous, and sadly, we lost Mark and Clement along the way. We did not grieve for them though, for they would have wanted us to have fun regardless of their mortal well being.

This slideshow requires JavaScript.

Much fun was had. We left some advertising on the beach, had a 4v4 minigolf game (my team inadvertently had the worst scores), and then we played a bunch of old arcade games, about half of which were broken. Then, to cap off the completion of the first sprint, we went to Woodstocks for dinner with James’ friend Peter, who also happens to be a member of SyzEG, a UCSC project form last year. Much fun was had.

Ignore the fact that most of these are pictures of us standing on the beach together. Don’t question us.

-Kyle “last person you should give a camera” Huey

It’s been a good week for MicroVentures! We’ve just completed the first week of our second sprint and we are moving right along.

Like last sprint, we decided to bite off a big chunk of work to compete. Thankfully, this time we took some advice from our parents and cut up the work into small bite-sized pieces before chowing down! Our tasks this sprint have been much more thought out and we can complete most of them within a couple hours. This means we have no excuse for not completing a bunch of tasks each day! Damn….

We’ve completed a bunch of back-end components like the camera and sound system  and the level generator is working better than ever! I’ve been mostly working on getting the story generation framework done so we can integrate it with the level generator. It’s pretty much going to be amazing.

Speaking of amazing, check this screenshot of our game:

Ok, maybe it doesn’t look that amazing, but it is pretty amazing! This is a zoomed in look at what you saw in previous posts and how the game will look. Well, the game will have pretty sprites and buttons and such, but you get the idea. I hope…

 

 

Not only have we been making the game more awesome, we’ve also been making the team more awesome! We spent Friday afternoon playing around at the Boardwalk arcade before our dinner at Woodstock’s. Since we had been getting along so well, we decided to introduce some competition! After a round of minigolf (in which we realized we aren’t great at minigolf) we headed to the arcade proper to play some classic games.

 

A good time and a nice break from coding. Speaking of, I should probably get back to work…

Week 4: Real Talk

This slideshow requires JavaScript.

Let’s see, coming into this week we were almost eighty hours off our burndown chart. Not exactly something you want to tell Jim at the end of the Sprint. On top of that since our whole group was in Game AI, we all had Pacman due Thursday. The plan was to finish Pacman Wednesday night and reserve Thursday’s all nighter for Microventures. That was the plan anyway.

Tuesday was our presentation day for Microventures at the Business Design Competition. We had a good reception so hopefully we’ll get some interesting prospects to work with. At this point though we’re a little doubtful someone will come in and match their business with our programming. We’ll have to wait until next week though.

Wednesday night comes around and the “good kids” are all pretty much done. The other half of us are kind of lagging behind. Thursday night comes and we’re still working on Pacman. Oh well. That’s why we are having an all nighter right? Chris and I finished Pacman a couple hours before midnight.

The all nighter was another success. We actually have a procedurally  generated level with spawned monsters and chests. We can even move our player around. There was a lot of debate over pathfinding. At first we wanted to make a placeholder pathfinding for this Sprint, but realized we shouldn’t attempt pathfinding at all if we’re going to replace it later with A*. So in the end the player can only move to adjacent squares.

So the Sprint has come and gone. We’re still fifty hours off our goal, but considering what we have, I am quite satisfied myself. I promised you last week for a playable game right? And did it happen? Yes it did. Well it’s interactive anyway. The true success here is not the project, but the team itself.

StudioMu

StudioMu

Yeah, that’s the team right there. These are the guys I wish I met three years ago, back when I had little faith that computer science geeks just weren’t my type. Funny thing is I’ve known Chris since middle school, Dan for three years, worked with Kyle last year, and apparently met James and Fletcher back in CS80K. Fletcher actually knocked Reflector (my 80K game) from placing in the finals. James made this hilarious Metal Gear esque game that I still remember giving me smiles until this day. I guess it just goes to show, you don’t really know who you’re going to get along with until you actually give it a good shot.

Then again it’s not fair to say I would just get along with any other 170 group. Fact is I was on Hello World for a short couple of days before I realized the team just wasn’t for me. Being on a team of highly skilled programmers can be intimidating and disheartening. And with different personalities it probably would have led me down the same hole I’ve always fallen into. Yes, their game is looking great these days, but I’ve never looked back since I switched to Microventures. As much as finding a project you believe in is important, it’s equally important that you find a team that you’re willing to fight for. It’s like war right?

When I go home people’ll ask me, “Hey Hoot, why do you do it man? What, you some kinda war junkie?” You know what I’ll say? I won’t say a goddamn word. Why? They won’t understand. They won’t understand why we do it. They won’t understand that it’s about the men next to you, and that’s it. That’s all it is.

– Black Hawk Down

It’s funny that half the year is still here, yet I’m already growing sad thinking about what I’ll be leaving behind. The team, the lab, just the environment is superb here. I really wish college life had started here. It’s so motivating to be working right along side your peers. My middle school teacher told me I’d make my true friends in college, because being friends with people who share the same goals is just powerful. He was very passionate about his work, so maybe “true friends” is a little much, but surely some of the best friends you’ll make is probably right.

Not sure what else to say about the team. Just a real fun bunch with each our own quirky, but similar personalities. Think I’ll dedicate a part of each blog to a different team member. I’ll call it “Meet the Team.” Yeah, that sounds like a plan.

– Clement “I Do Real Talk” Tran

Sprites, Animations, the games eyes

Hey everyone,

Chris here. So I was having trouble with the wordpress and logging in the past few days, hence why my post is a bit late… yeah I can do a lot of programming stuff but when it comes to blogging I’m clueless 😛 So I guess I’ll start this post out with who I am. Lets see, I’m Mexican/American, I think all my ancestors were Mexican so I’m not a mix of things. I’m also a professional juggler and have been teaching/performing juggling for the past 9 years of my life. Last summer I started teaching Game design classes professionally to kids 10-18 years of age, and currently have a job teaching at Mission Hill Middle School in SC each Wednesday right after our scrum meetings. I’m teaching the students game maker so its not a lot of work making a class curriculum or anything. I also teach some students juggling on Fridays a few hours after the scrum meeting, but again that’s not difficult as they’re beginners. I am also still working for Kid Natural porting the Android game I finished last quarter over to the Iphone (using marmalade too!). I kind of feel like I’m the guy on the team who is never really there as I am always busy; I would love to have full dedication to the team and be in the labs way more than I can with everyone, but then I’m faced with the reality that I cant really afford college or food if I don’t do other jobs like how I am right now… not getting scholarships or grants sucks, or not coming from a rich family. I just hope the team isn’t taking it as me not wanting or caring about them and the game, because I do care a lot and am really excited about this project and working with them all; I’ve been trying super hard to be as helpful and available to them all with the game.

So anyway enough about me, lets talk about some Microventures progress :D. We got a decent amount of work done this sprint and are off to a great start with our game. This time around I was responsible for doing engine work with rendering, and I was successfully able to get the Sprite, SpriteManager, and Animation classes working correctly for the rest of the team to use. As I am writing the engine component for this, I tried to make these as abstract as possible so both I and team members can possibly refer back to the code in the future and use for other games. As the sprites/animations are a key component for seeing playable visible progress I worked hard to get it done by this sprint, and am happy that they are functional. There are still some things that need to be done such as fixing memory leaks, and customizing the SpriteManager class so we can more easily control loading/unloading of used/unused images during playing…. but thats efficiency stuff and can probably wait till the end of sprint 2 or 3, or even next quarter.

To go more in depth about sprites, what I’ve done for this sprint has been very similar for some previous projects I’ve done before (making the rendering system for kid natural). Marmalade is OpenGL based, thank god, as I’ve used OpenGL ES with my previous project to create the rendering system… actually Marmalade makes it a bit easier to use OpenGL, and claims to have one of the fastest rendering system possible on mobile devices today. I’m trying to stick more to using Marmalade’s Iw2D and IwGX rendering functions as they make the game more portable and accesible, as not all phones (when you get into androids) have an accelerated and dedicated graphics card. So far this has been a success and I’ve only used Marmalade rendering classes. In the process of my development of the rendering system I always run a few tests to allow my sprites and animations to have a number of controllable parameters including: scale, position, alpha, rotation, origin offseting, animation speed, forward/reverse animation, and looping animation. When I run these tests I hook the sprite system up to the input system and run the game, changing each paramater according to the clicked x,y value. Here are some screenshots from tests in case you wanted a visual.

 
Here are some images of me testing alpha, rotation, scale, position. I used some filler gfx for now, the question mark is utilizing the sprite clsas, while the number box is utilizing the animation class… yeah yeah the pictures are grey and boring, but its a start.

At the end of the sprint during the night code-a-thon Zak and I started working on the camera and rendermanager. We mostly got rendermanager done and camera setup however got too tired to make the camera actually work. I feel like it shouldnt take too long getting camera to work, however we will have to use a cheat method for now, instead of what I have planned using the OpenGL matrix method which is super efficient. For the future sprint coming up I’m super eager to have that work, and then start working on menu system stuff and possibly even metricsmanager stuff to get the game playtest ready. I like working on engine components, and hopefully by the end of this sprint and release will have an good engine for the game to run on that is easy to use.

-Chris aka “DracoTheJuggler” as I’m known as a juggler (and trying to get know as an indie game designer)

Whew!

We made it! Our first sprint is over!

A sprint!? I thought we gamer types didn’t run… Can you imagine mass of software engineers sprinting? It’s a scary thought, but that’s just what we did! Well … we didn’t run, but we did just finish our Scrum sprint! Instead of pushing our bodies into motion, we pushed our brains and computers to the limit over the last few weeks working on our game.

In just three weeks we planned out everything we wanted to accomplish over the next couple months, made a huge diagram of every little detail we needed to program, and finished an amazing chunk of work. While we aren’t quite done with the entire game, we now have the under-the-hood framework for the game finished, a procedurally generated level with actual game objects scattered throughout it, and a system set up to make touching a phone screen actually control a character! Pretty darn exciting if I do say so.

For the rest of the quarter we can focus on taking this foundation and turning it into an amazing experience for anyone who checks it out. I’m personally really looking forward to working on the story generation portion of our game. I really love the idea of a program generating for itself whatever it needs to keep working and a game that can create its own stories, scenarios, and levels is sooo cool! I can’t wait to hear people playing our game talking about the stories they play though.

Keep in touch! This is going to be a fun development!

24

The following takes place between 9am-7am on the final day of Sprint 1. I’m UC Santa Cruz Programmer Sam Jenkins, and this is the longest day of my life.

Okay, I may be exaggerating a little, my day wasn’t quite as hectic as typical Jack Bauer day, but I felt a connection between Microventure’s 24-hour codeathon we experienced today and the long running Fox TV show, 24.

As I just mentioned above, we experienced quite a long day today. We found ourselves a little behind schedule for Sprint 1 and ended up having to cram the last of the code in one day. We started around 7 or 8 because many of us had to finish up the PacMan project in our Game AI class. While everyone was finishing up AI, Zak, James and I went to Costco to stock up on food for the night. The ride home from Costco might have been the toughest part of the night. We took Zak’s truck that could fit three, the ride there was bearable, but the ride back was another story. Trying to fit 4 pizzas, 3 churros, three humans, two drinks and a bin of cinnamon rolls in the front of a pickup truck was certainly not easy. I had “bitch seat” on the way back and I was straddling both halves of the car trying not to let my left foot slip and hit the gas petal, we didn’t want another car accident during one of these all-nighters (Sorry, Clement). Anyway, we got back safe and sound, the trip was worth it because the pizza and cinnamon rolls were delicious and the RockStar energy drink allowed me to stay awake all night. Shockingly, the combination of only pizza and caffeine in your stomach doesn’t sit well.

My goal for the night was to finish up the Gameplay tasks(there were 3 left). We realized that the tasks we created this sprint were much harder because we didn’t have our UML at the time outlining all the functions and classes we would need for the MVP. The second sprint should be much easier to plan. Anyway, Dan, Gerrit, Clement and I all worked on finishing up the Entity class, basic Entity movement and item spawning and interaction. We ended up finishing it all up at 4 or 5am, did a quick wrapup scrum and then I waited an hour or so for the first bus to show up, while some members said “screw it” and crashed on the couches.

I ended up getting home and falling asleep for about 2 and a half hours before I had to get up and go back on campus for the scrum review. The review was successful and we brought up many issues from the previous scrum and suggestions for the next scrum, that will be very helpful.

I am proud of my team for bearing down and grinding through the final parts of the sprint until we got it to work. Overall, it was a successful sprint and very cool experience. The next sprint starts in a few days and lasts another 3 weeks. Until then, I’m signing out and going to sleep.

-Sam “Barely Functional” Jenkins