The Macedonian .NET User Group is run by .NET enthusiasts and professionals in Macedonia, and their main goal is to provide a common channel of communication where .NET developers can find out about local .NET events, news, job opportunities, learning opportunities etc. They annually organize.a Code Camp event where speakers from Macedonia and other countries hold 1 hour sessions about the latest Microsoft technologies.

Last year (2011), for the first time ever, I was very excited to attend a Code Camp event. I started convincing my friends and colleagues to get their free ticket and join the ‘IT event of the year’ the day the registrations opened. Our presence at Code Camp ‘11 began a huge chain reaction in my (and some of my friends’) life, but more on that in another post.

This year, there were a total of 29 speakers, on 25 sessions, divided into 5 tracks. I was lucky enough to be one of the speakers (yay!) and in this post I will talk about my experience at Code Camp ‘12, starting from how I applied, got accepted, prepared the pres *fast forward* , the way back to Struga.

Call for Speakers

It all started with the MS Vizija, a Microsoft Technology Conference in Macedonia. Me and my teammates that created Aqua Guard, applied as speakers for ‘Porting a Windows Phone XNA game to Windows 8’, but we were unfortunately not accepted and were put in the ‘backup’ basket in case an accepted speaker decides not to present. To be honest, I was quite disappointed, especially because there wasn’t a single game development related presentation at the conference. The video game industry is a multi-billion dollar industry now. Macedonia has the talent for this, but the developers lack the support from the business sector. I believe such events should try to promote game development in general.

Nearly 2 months later, the Macedonian .NET User Group announced the Call for Speakers for Code Camp ‘12. I was pretty excited at first, but then I found out that only 4 tracks are planned, and there won’t be a Student track (there was a student track on Code Camp ‘11). This meant that we would be competing with MVPs and other experienced professionals to be accepted.

Judging from last year’s event where there was one Game Development talk that had over 150 attendees, I believed that our topic would be attractive enough to be accepted and I started convincing Rahim Islamoski to be my co-speaker for “Game Development on Windows 8 Using MonoGame’. We sent our application one day before the deadline.

Before the final results (accepted presentations) were out, we found out that there was another game development related talk – a professional team working on a serious 3D game for over 2 years now called Excubitor (looks pretty good, check them out at Because, game development is not that popular in Macedonia, we thought only 1 game dev related presentation would be accepted and it would most likely be a team of professionals and not us. Fortunately, we were wrong. Both our and the presentation by Tesseract Games were accepted!

Purple Track is Born

As I mentioned before, initially, there were only 4 tracks. But, because many students applied, the organizers decided to allow one more track only if the students take care of the organization for that track (projector, microphones, speakers, amplifiers etc.) Some Microsoft Student Partners from Skopje accepted this challenge and Purple track was born.

Sadly, because we are also students, we also had to be in the purple track which was in a smaller venue. But, we were hoping that the MSPs will deliver and get the rest of the equipment. Unfortunately, this did not happen and we only had a projector and possibility to be on the live stream by recording voice through our laptop mic. Still, thanks to the volunteers that helped in creating a new track. It was much better than last year’s student track.

Preparing the Presentation

We are beginners. We (my team) only have 1 complete game that we published in the last year, and now we are working on our second game. Therefore, our presentation shouldn’t be something very complex. We expected our audience to have little or no experience with game development at all, so our presentation should show how easy it is to set up your environment and start developing. Also, XNA is a great framework for beginners, and MonoGame is an open source port of XNA mainly developed to port current XNA games to other platforms (iOS, Android, Windows 8 etc.), so in order to promote MonoGame to non-experienced audience, the best thing to do is show how easy the development is.

The first thing we did with Rahim was to talk about how should we divide our roles. After a small discussion, we decided that he takes the role of presenter (talk about XNA, MonoGame etc.) and I will write our demo sample from scratch. The presentation should not be more than 1  hour, so each of us had 25 minutes + 10 minutes for questions.

Before creating the presentation, I started thinking about the demo. Usually, in such introductory presentations, a bouncing ball demo is created. I did not want to do this because it is pretty boring and if I was in the audience I would be very disappointed. I have never worked on a side-scrolling platformer before so I started thinking if I could come up with some interesting demo. I first defined what I wanted the demo to include:

  • Drawing sprites
  • User input
  • Collision detection
  • Sprite sheet animation
  • Sound effects

I found an interesting Iron Man sprite sheet and I decided to use it for the ‘player’. Jumping is the simplest thing to implement so I started thinking about what should the player jump over. While browsing for ‘enemies’ I found this bull sprite sheet which seemed perfect to demonstrate animations. Add collision detection and sound effects to that and we have a simple game. Fun fact: The idea is not stolen from Real Steel. (great movie, check it out) Fun fact #2: I watched the movie right after I finished coding the demo with this expression on my face when I saw the first scenes.

After I finished creating the demo, we created our PowerPoint presentation for the session. You can check it out here. Later we decided to also show Sparrow, our WOWZAPP Hackathon game, at the end of the presentation (you can read about my WOWZAPP experience here).

I decided to measure the time it takes to write the full demo one day before the event. This was a terrible mistake. Just for the first part, drawing sprites and explaining the environment took over 15 minutes (it should’ take at most 6 minutes). I started panicking that I won’t be able to prepare everything on time. After I managed to shrink the time it took to create the full demo for each part, it still was over 25 minutes. To shrink it further, I decided to hide some repetitive things in #region tags. This included the lines for loading content, creating rectangles for simple collision detection and the declaration of the variables.

I went to bed around midnight and Rahim should’ve arrived at my house at 04:30am (the event is in Skopje, 180km away, remember?)

Code Camp ‘12

4 hours of sleep is clearly more than enough for such a big day… NOT!

We arrived 30 minutes before the start of the event and immediately grabbed our awesome speaker/organizer-only jackets and badges. After I changed, I went to check our venue out and set up my laptop for live streaming. Sofre Garevski, the volunteer for tech support, was pretty helpful and solved the problems that my Windows Phone emulator was causing when picking an IP address for the LAN network to make the live stream work.

We were second on the agenda, so we first decided to go to the other game dev session. They also had two presenters. Their presentation was good, sadly they did not show any source code, but it was interesting to see how they progressed during the last two years prototype –> alpha version.

The clock hit 10:45 and with Rahim we went to our venue. While I was setting up my computer, people started coming in. Within minutes all the seats were taken, and I was pretty surprised to see that more people were coming. The live stream had problems and there was no audio on the stream. I should have known better and set up a screen recorder locally. Here is a picture shortly after our presentation started:

Our presentation experience from our student tech club SITE really helped. I was feeling tired, but I was confident that everything would be fine. Rahim did a great job with the first part of the presentation. Then it was my turn with the demos.

Live coding is not as easy as it seems. It requires great multitasking skills because while you write code you need to explain what you are doing at the same time. Nevertheless, my live coding was much better when compared to my first time for a presentation for SITE. The only problem I had was during the second demo when an ‘Exception’ was hit, but it wasn’t something big, I managed to quickly fix it. The presentation ended with a few questions and we managed to get 4 applauses during the whole presentation which was pretty satisfying. Here are some more shots:

After Our Presentation

After our presentation, I went to three others. The event organization was great. There was free food, drinks and snacks for all participants. Huge number of sponsors that gave a lot of vouchers, t-shirts, and there even was a HTC 8X phone prize for a random participant that completed a survey by one of the sponsors. I would also want to thank the organizers for letting us leave early because we had to travel back to Struga, so we did not have to carry chairs and desks ;). Kudos to Rahim for a perfect drive home with just 3 hours of sleep in the last 24 hours.