A development blog for our mobile adventure game

Latest

From the Executive Side-Table: 900 Revisions Later

So as you may have noticed, we haven’t been updating this blog too much. Sometimes when there’s a lot of work to get done, things go on the back-burner. Sometimes, those things on the back-burner are actually really important things that should be routinely getting done rather than shoving them on the back-burner.

But I digress.

One of the biggest news is that we will be coming into beta in several more days! We’ve definitely come a long way since our last posts. Here is a brief overview of some development accomplishments/features/whatever that has happened:

  • We will have SIX areas: Dungeon, Forest, Snow, Cave, Swamp (graveyard), and Desert
  • The Story Generator now includes SAGAS! Basically, a Saga in a story that you continuously play over several adventures. So rather than having little tid-bits of stories, Sagas have a good story build-up and ending. This is especially good when major things happen in the story world, such as a Boss’ defeat.
  • We will be implementing Shops/Special Rooms in the levels, as well as random shrines that will have some sort of cool (possibly meta) functionality.
  • The three heroes all have different fighting styles: The Knight is a melee-based fighter with combo attacks and blocking, the Wizard picks up spell runes that give him special abilities, and the Rogue is equipped with a Crossbow and has extra sight for stealthy distanced attacks.
  • A whole ton of fun, wacky items that help you build strategy as you play.
  • An amazingly solid Marmalade game engine that houses our awesome game.
  • Awesome art, music and writing that give MicroVentures it’s own whimsical style.

There’s many more, but you’ll just have to wait and see. The next steps, as we reach our feature freeze, is to hammer out all the bugs, get in every art/sound asset we can, and give the final product a pristine polish.

We will be creating a demo video soon after the beta, so stay tuned!

A Few Sneak Peek Screenshots

Here’s some screenshots of our game. We’re still in the process of replacing all the programmer art, but that should be relatively soon.

This slideshow requires JavaScript.

Week 5-8: Growth

This slideshow requires JavaScript.

I wanted to post the pictures up for now. I’ll come back to blog a little later. =)

Sprint II

Sam here,

Phew. We just finished up our 2nd sprint today and ended it with another late night coding session. I have to say, I am incredibly impressed with what our team accomplished this sprint. There are a ton of new things since the end of our last sprint including: phone deployment, item usage, HUD screen, item spawning, boss spawning, pathfinding, menu screens and much more. Needless to say this was quite a successful sprint.

This sprint, the gameplay team worked on a number of key features that needed to be done in order to complete our MVP. At first, Clement and I started on item mapping. This was very technical and forced us to learn new coding techniques like function pointers and we also had to learn how Marmalade implements text file parsing. After many tries we got this kind of working. We still had no way to test because HUD hadn’t been implemented. In the mean time, Gerrit and Dan worked on pathfinding. They implemented an A* pathfinding technique, that basically checks the cost of each potential path to the target and chooses the one with the smallest cost. After a little polishing, they got this working great.

After items, I moved on to bosses. Bosses proved to be a lot harder than anyone could have imagined. Basically, all the regular enemy code was implemented on the idea that every enemy is only 1 square. Unfortunately for us, bosses are 4 squares. This led to problems of adjacency checking, attacking and moving. Dan really saved the day on this and had an idea in his head of what he wanted to do. 20 work hours later, after testing and checking all possible cases we got bosses partially functioning, but they don’t currently move. Just shows how hard it was getting this to work.

Like I mentioned earlier, we had another late night coding party equipped with a Costco run and Rockstar energy drink a’plenty. (Just as a side note, Lemonade Rockstar Recovery is really not good. First it only contains 3% lemon juice, which should be a red flag already for a “Lemonade” flavored drink. Also, it contains something called Milk Thistle, which does not sound like something that you want to be in your energy drinks.)

Anyway, I managed to start my sugar crash literally minutes after consuming my first Rockstar and struggled to stay focused for most of the night. I ended up staying until about 3:30AM, drove home, got a couple hours of sleep and then came back for our final scrum of this sprint. Clement and I were the scrum masters this sprint and this was our last scrum with that title ūüė¶ Seems like only yesterday I was just a naive little kid learning how to master a scrum. Boy, how the days fly by…

Overall, this sprint was an amazing success. I am incredibly proud of the team and really am looking forward to implemented all of these cool features we thought of for future sprints. Until next time, I am signing off.

-Sam “I hope Rockstar isn’t one of our sponsors” Jenkins

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

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!