Archive for February, 2013

Codefest @ UIST–An Observer’s Perspective

After nearly 2 months of planning, sponsor hunting and hard decisions, a team of 3 people (Jasna Trengoska, Aleksandar Mitrevski, and William Asiama Nyako), with the help of several volunteers, including myself, managed to successfully host the first student organized 24-hour app development competition in Macedonia – at the University for Information Science and Technology ‘St. Paul the Apostle’ Ohrid. So yay for us :).

Since I was part of the organization of this event, I was not competing, but I still had a great time observing the competitors during the event. In this post, I will share my experience and observations before, during and after the event.

Planning the Event

In the beginning of December, my friend Aleksandar asked me whether I liked the idea of organizing a mini hackathon (24 hour event) for our fellow student mates at UIST. Him, Jasna and William came up with the idea of doing this (inspired by WOWZAPP) during a normal meeting for the project they are working on and they were now asking around to see if there would be any interest. I was quite excited about this and fully supported the idea.

Since I am one of the leaders of the SITE Microsoft Student Tech club at UIST, I had the ability to send a survey to all the students to check whether they would be interested in attending such an event. After few days, we had the results and we had about 50 students that seemed excited about such an event. Because the main idea was to organize a mini-event, 50 was more than enough to accomplish our goal, so we started with the preparations.

At first, there were ideas about doing it around 15th of December, but because the time was short to prepare and the week that followed 15th of December was an exam week, we scrapped the idea and changed the date to sometime in February, right after the winter break and final exam session, when everyone should be fresh and ready for action.

Several people decided to volunteer and help with the organization (huge thanks for this to them), so after our first meeting where we defined the rules and other details of the competition we created a Facebook event for the competition.

Sponsor Hunt

A month had passed since WOWZAPP so we had a pretty great example of how an event like this should be organized. Our event was going to be smaller, and only for UIST students, but we still needed to find few sponsors for the food and for some small prizes. I saw a tweet by Pluralsight where they said they are sponsoring IT related events so I decided to send a sponsorship application. After 2 weeks, I got a response from them saying they are happy to sponsor Codefest and they gave a 1 year Pluralsight subscription (worth $299) to be awarded in a raffle to one lucky participant and 8x 1 month subscriptions. This started a chain reaction and here is the event poster where all the sponsors are listed:

So, as you can see, with this number of sponsors, this was not a mini event anymore and the organizers decided to go nationwide.

On 10th February, all the available tickets were gone and registrations were closed.

Media

Thanks to Krste Kostoski, a volunteer, we made contact with Super Radio a local radio station in Ohrid. After their short announcement of Codefest, the event was in all of the major Macedonian news portals. The three leaders even got invited to a major national TV station for an interview. The media coverage gave a huge boost to the registrations at Eventbrite. Then a local TV station also invited the leaders to a morning program and announced the event during their daily news. Aleksandra Dudik, UIST’s PR specialist, also helped with the media and other issues we had with the organization so massive thanks to her too.

One Day to Codefest

After our classes in Friday we had a Pre-Codefest meeting for the UIST students. The plan at this meeting was to answer any questions the students had and provide them with the necessary software for the event. Before this meeting we carried… OK not me, I was too busy munching, but my friends carried most of the sponsor materials and equipment to UIST’s amphitheater. After the Pre-Codefest event we started preparing the puzzles for a challenge that we had for the teams at Codefest. Everything seemed ready for the upcoming big day.

Codefest.Begin();

I was at UIST about one hour before the event. As soon as I entered the amphitheater I was greeted by a pleasant surprise. The three leaders had arranged hoodies for the organizers and mentors. That was unexpected, so thank you leaders, /hug . FYI, I love hoodies, hence the happiness below :). FYI #2, the dudes that are sitting on this image are working on Sparrow.

Right before the event started, I was one of the four volunteers in charge at the registration table. 

Codefest started at 12:30pm on Saturday 16th February 2013 with over 60 competitors divided into 13 teams. After the short presentation by the organizers where the welcomed the participants, introduced the mentors and the volunteers, the teams had to introduce themselves and present their initial app ideas. During the event, the participants were allowed to ask the mentors and volunteers questions about certain technologies, ideas on how to implement things etc. However, the mentors and volunteers were not allowed to code. I was helping the teams with questions related to game development.

Here’s a picture of the two teams that came from Skopje.

After the project presentations, we all knew what the competitors were going to work on. There were a few games, Windows 8 apps, a Windows Phone 8 app, Windows Desktop apps, and some web apps. Now, it was time for the first mentor presentation. PhD Jane Bakreski is a lecturer at UIST and he spoke about some graphics design principles.

The teams could work on their projects until 4pm. I got the first question during this working session. Team Hex was working on a turn based game where one player had to block the other from reaching their goal but also try to reach their own goal. With some nice graphics, animations and few other gameplay features, this could be a fun touch-based game. I hope the team continues with the development of their prototype.

One of the advantages of being part of the organization is that you get to be one of the first to greet the food when it arrives. For lunch, we had delicious pasta *munch munch*.

Now the teams were well fed and it was time for the first challenge. There were several rounds where three teams had to solve a puzzle that we provided. The fastest team won the round and advanced to the next round. But, there was a catch. The team members were not allowed to talk to each other. Talking resulted in time penalties or if done again, disqualification.

When the clock hit 5pm, the next working session started. Team Foreigners was working on an ice-hockey game for the Windows Phone, but they had no previous experience developing games. I suggested them to check out my Pong tutorial and use XNA. And no, I was not breaking the rules and coding, I was just entering my blog URL here :).

At the end, Team Foreigners were one of the few teams to win the Zero to Pro award. That award was awarded to the teams that did not have any experience on the technology before Codefest, but still managed to develop a working prototype of their idea. Here is a screenshot of their game.

While I was not assisting anyone, I decided to work on Sparrow. For some reason I couldn’t concentrate that much and I did not manage to complete a boss battle I was working on. Actually I should be doing that right now, so better wrap this up soon.

At 10pm our sandwiches arrived. Remember when I mentioned the advantage of being an organizer earlier and the food? Forget it. While I was discussing with Team Foreigners about how they should fix a bug, dinner had arrived. Looks like the developers were uber hungry and I was lucky that my brother grabbed a sandwich for me. They were all gone within minutes.

It was time for another team challenge. This time, the teams had to form a circle (5 people), cross their hands and hold the persons to their left and right. They were given 1 minute to talk and come up with a strategy to untie the knot that formed. After the 1 minute expired they were not allowed to talk. This challenge was pretty funny. Here are some shots:

 

The winners of this challenge managed to untie the knot in 5 seconds which was pretty impressive.

Hajan Selmani, a Microsoft MVP who was a mentor and judge at Codefest held a 33 minute presentation about the difference between code quality and product quality. This presentation was more about the business part of creating software, rather than the development part which he usually holds presentations for.

The next working session started after Hajan concluded his presentation. The Fruit Ninja Kinect challenge also commenced at this time and lasted until 7am when the winner was announced. The participant with the highest score on the Arcade mode by 7am was the winner of this challenge. It was fun watching people wave and burn some calories while playing this game. It was funny to hear several people say: “I haven’t exercised like this for a long time.” Unfortunately I have injured my right arm and I was not able to play :(. The winner (or the most lucky person playing this game) was Rahim. Whenever he played, the random generator seemed to spam him with Double Points Bananas.

 

It was great to see all the teams present during the night developing their projects.

After the breakfast it was time for egg drop. Each team had to build a box with the given materials. The boxes were then dropped from a certain height. The last standing egg won the challenge. There were 5 Kinder Chocolate Eggs to be awarded. I was rooting for the teams with 2 people just so I could grab one of the three remaining eggs. The finalists were two teams, both with two persons!

 

Thank you for winning Egg Masters guys! I tried a Kinder Chocolate Egg after 10 years thanks to you. And yes, Kinder still tastes the same… epic.

Before the final app presentations we had two more presentations. First, Orce Petreski, a senior developer from Seavus talked about informal education. Later, PhD Bratislav Stankovik, Vice Rector at UIST and Science and Technology advisor in the cabinet of the President of Macedonia, talked about intellectual property and gave some tips on this field.

Finally it was time for the final presentations. There were pretty interesting prototypes. It was awesome to see that all of the teams were done and were ready to show their working prototypes. I really liked an app called Eventum for Windows Phone developed by two UIST students. The app shows all the events that are happening around you. I also liked Mystery Mansion, a point and click game for Windows 8 developed using HTML5 and JS. This game had the highest chances to win Codefest. It was developed Team Gryffindor from UIST. Big gratz to the ladies on the picture below for being the only 1st year students (only 4 months at UIST)  to attend the event and finish their prototype. That was pretty courageous from them *claps*. In the end they were one of the three teams to win the Zero to Pro prize.

Here are some other shots from the presentations:

The voting began after the final presentations. There were 4 judges + the teams which would count as 1 judge. Each team had to give points to the other teams. At the end, it was very tight. With only +4 points in the front, Team Gryffindor grabbed the victory from Team Agile, who were developing Eventum. Here is a picture from the winning team and a screenshot from Mystery Mansion.

 

Congratulations ladies. I am really looking forward to playing your game.

Congratz to all the other prize winners. I hope you continue developing your apps and release them to the public soon. Well done!

After the prize announcements, there was a huge cake at the university hall. We celebrated SITE’s first birthday.

Codefest.End() – After the Event

After the event we all went home and hit the bed as soon as possible (what did you expect would happen?).

Thanks for reading this long post and I hope Codefest 2 will be a reality in the near future.

 

Sparrow Progress Report #2

Time for another short update on Sparrow. In this post I will briefly write about what I was working on in the last two weeks, and I’ll show you one of the four player aircraft that will be available in the first version.

Levels

As I noted in my last post, I started working on the levels two weeks ago. I am almost done with the fourth level, and I must say I am still not bored from testing and tweaking all those enemy waves. Compared to Aqua Guard, I’m having much more fun creating the levels for Sparrow.

The best part in creating the levels is definitely the boss battles (yes there will be several bosses to blow up!). I was having trouble killing the third boss, but luckily I gave it to a mate, Aleksandar (he worked with me on Aqua Guard, you can check his blog here) who killed it without losing a single life. This proved two things: I suck at my own game 😦 , and I must give early test versions to other people before I come up with any conclusions.

I kinda shot myself in the foot when I was asked in a TV interview (during the crazy local media coverage) about how many levels we planned for the first version. Even though we hadn’t decided yet, I said 10 levels, so now we (read that as I) must create at least 10 levels.

Background Tiles

In the first week of February my brother was working on several enemy aircraft and bosses. I believe we ended up with some nice sprites even though this is the first time he is doing pixelart. Few days ago he started drawing some background tiles, and I like where things are going. I will post a screenshot soon; maybe next week.

In the WOWZAPP build, we were using a full texture for the background which used a lot of resources and you could notice slight FPS drops at times. So now, I had to write some code for tile drawing. First I browsed  the net for open-source level editors where we could quickly use the tiles Alpay created to create backgrounds for the levels. We are now using Tiled which has everything that I needed. It saves the levels in a nice XML file which can easily be parsed.

Alpay is drawing 16×16 tiles and because WP7 has a resolution of 480×800, that means 1500 tiles are drawn on screen at any given time. At first I was stuck with updating the positions of 9000 tiles (6 full screens) which was an OK number and not causing FPS drops. If I increased the number of tiles, I encountered drops in FPS. Then I came up with a simple solution of first loading all the tiles during a loading screen to an array, and then using another array of 1530 tiles (one full screen and one row of 30 tiles just above the top) which was used for drawing the tiles. Now, I only have to update 1530 tiles and check the position of the last row. If the last row is out of the screen I extract the next row from the big array that contains the whole level. Now, I can load a lot of tiles (tested loading 72000, worked without any FPS drops) without the need of updating the ones that are off screen.

Collision Detection

I first decided to go with per-pixel collision on Sparrow, but as soon as I reached Level 3 where I increased the number of objects on screen, I encountered FPS drops. I tried optimizing it by checking every other pixel, but no luck. I narrowed the issue down to a certain Texture2D method, GetData(). Apparently the FPS drops happened when I was extracting the color values from the textures. I was even using collision rectangles (extract only the area covered by the rectangle where the intersection between two sprites happens) rather than extracting the colors of the complete textures.

I was definitely not going to decrease the number of objects on screen, so I decided to return to rectangle collision, but a little more sophisticated one. Now I am using Rectangle arrays for each object that contain several rectangles to cover the objects. For example, I can cover the Su-27’s area with only 3 Rectangles. The performance drastically increased and I can’t notice any visual problems with the collisions.

Are we going to miss another deadline?

Hopefully, we aren’t. There are two more weeks until February ends, and we should have at least 8 levels until then. The menu screens might not be all ready by then, but temporary stuff shouldn’t be a problem when giving the game to several people for testing. If you have a Windows Phone and are interested in testing the game before it is released, let me know.

Rahim is currently working on implementing Scoreoid for achievements and score tracking. In the last two weeks he was also working on save states and menu screens for choosing aircraft, levels and weapons.

The Screenshots

This is a Su-27 Flanker which is a playable aircraft.

OK, I know I said I will only show one aircraft, but I really like how the Su-25 Frogfoot looks, so I must show you that one too. The Su-25 will be an enemy plane.

Thanks for reading!