Games for the game developers!

I was impressed by “Games for the game developers!” comment on Create a Flash game in minutes with PlayCrafter.

The idea of giving people a tool to make a so-called “videogame” without any programming knowledge isn’t new.

The first complete tool I used was the Shoot’Em-Up Construction Kit (SEUCK) on my Commodore 128

Having no idea about how to make a game, the first “games” I made with that kit was just clones of a space game included in the package, just changing bullets speed, number of lives, and other minor things.

But I loved the idea of making games.

With the SEUCK I made about 10 games I only played by myself, because you know in mid 80’s there wasn’t the so-called Web 2.0

Anyway I had a lot of fun

My first “real” game was a concentration game with time limit, combos, and so on, developed with AMOS.

I can’t even remember the name but I remember a friend of mine managed it to be included in a Aminet CD-ROM

Now the web has changed and you can create a game, upload it in a few seconds and read opinions, comments, reviews.

Moreover, you can make money out of it.

But you must not forget there are people having fun making games.

Tools like PlayCrafter are meant to make people having fun in creating their own games.

Yes, there will be a lot of bad games and most of them will be clones of the same (bad) game, but if you don’t like a game, just don’t play it.

And, more important, maybe someone will enjoy the process of making a game and will start studying a programming language to make a more original game.

And don’t forget the “Games for the game developers!” sentence can be used by Flash game developers against PlayCrafter users, but can be used in the same way by PS3 game developers against Flash game developers.

20 (TWENTY!!!) years ago people like me programming in Pascal and Basic was mocked by C++ programmers, because they said real programmers code with C++

When I learned C++ I was mocked by Assembly programmers because they said real programmers code with Assembly.

Nothing new on the horizon…

The art of debugging

In a perfect world, our software never run in an unexpected way.

Unfortunately, we don’t live in a perfect world, so sometimes (quite more than sometimes) we have to face some strange errors.

That’s when we must learn the gentle art of debugging

Follow me through easy steps and you’ll wipe the bugs out of your life

1) A bug never appears “sometimes”

Believe me, the word “sometimes” has been invented for losers. A drunk would say he “sometimes” gets drunk, but in my opinion he gets drunk EVERY TIME he drinks too much. That’s another way to live your life. “Sometimes” means you don’t know when. You can’t live this way. You are a programmer.

So, you must know when your script has a problem. Exactly. Try to replicate it. Insert breakpoints, print variables, do whatever you can to recreate the problem EVERY TIME you want.

Do you want an example? … let’s see this script

a = a random number between 0 and 9
b = 10/a

This script sometimes crashes… but you must know when it crashes… and we can say the script crashes EVERY TIME a = 0, because of a divide by zero error.

When you can describe the problem starting with EVERY TIME, proceed to step 2

2) A bug never appears for the sake of appearing

Believe it or not, Gods aren’t upset with you. There isn’t any virus in your computer. “THEY” aren’t trying to drive you mad, and leech your brain because they want to rule the world.

The bug appeared for a reason. In the previous example, the reason was a number cannot be divided by zero. It’s not a plot against you. You simply cannot divide a number by zero.

You must understand why your script does not work… in this case it was a division by zero error, you have to find your case.

Now you know when the bug appears, and why it appears

3) A bug is a useless creature

Ok, bugs are the only good actors I can see in horror movies for a couple of years, but they are quite useless… and maybe they can survive to a nuclear war, and I don’t really want to survive to a nuclear war just to face giand radioactive bugs, so make up your mind, you don’t need bugs.

I mean you must find a way to get what you want with no risk to encounter a bug. In our example, you must decide if you really need a random number between zero and 9, or if a number between one and 9 would do.

With numbers from 1 to 9 you solved the bug, but sometimes you may decide you need the zero too, and in this case you would perform the division only if the number is different than zero.

This is the step where you must decide if you want to obliterate the bug or handle it as an exception.

Needless to say the first option is the best, because you can manage one, two… maybe five… TEN exceptions, but sooner or later your script will collapse if you work this way.

4) Put a big shoe on the bug’s head

It’s the time to rewrite the bugged code… keep in mind what your script is intended to make, and what you don’t want to happen. Since at this time you will probably are a bit tired, proceed step by step. Throw a shoe to a bug from a big distance, and you’ll miss it. Get closer and closer, until… SQUASH! It will know the power of the mighty shoe.

5) It wasn’t a simple bug. It was a cyborg bug

If your bug dies with a little red light fading away, and you can hear something like “I’ll be back”… then it wasn’t a simple bug… it was a cyborg bug. In real life, fixing a bug can bring new bugs to life.

In my previous example, I can fix the bug setting a as a random number between 1 and 9.. but I can fix the bug coding the second line as b= 10/(a+1).

According to what I am expecting from the script, one of the ywo ways of fixing the bug can make the bug return later. You have to forecast future bugs and prevent them

That’s all… this was obviously an ironic post, but there is some truth in it… how do you debug your scripts?

Adobe CS4 Master Collection

Do you want to know what do Adobe ships to you when you purchase the Adobe Creative Suite 4 Master Collection?

Here it is:

Adobe CS4 Master Collection

Five DVDs with the suite itself and one DVD with two hours of video footage about using CS4 softwares.

Let me remember you the software included:

InDesign CS4
Photoshop CS4 Extended
Illustrator CS4
Acrobat 9 Pro
Flash CS4 Professional
Dreamweaver CS4
Fireworks CS4
Contribute CS4
After Effects CS4
Adobe Premiere Pro CS4
Soundbooth CS4
Adobe OnLocation CS4
Encore CS4
Adobe Bridge CS4
Adobe Device Central CS4
Dynamic Link
Version Cue CS4

I still haven’t installed it, so I can’t say, at the moment, if there is something made exclusively for the box retail edition, something the downloadable version does not have.

How to live forever

While you are reading this post, I’ll probably be in a long airplane trip to Cuba (guess how I am going to spend the hours onboard…).

Now let’s imagine I am inside this plane, and it crashes… I will probably die, and if not, I surely won’t be able to blog for a while.

Anyway, unless you listen to some TV news saying I died in a plane accident, you won’t notice it because next monday a new post will go live. Same thing for tuesday and so on.

That’s because I scheduled some posts for the next week.

Schedule posts for the years to come and you will live forever… just make sure someone pays for your domain renewal…

Quite ironic… reminds me something like “the show must go on”… if you want to contribute to the blog while I am away, read the guidelines at Blogging when you’re on holiday.

Blogging when you’re on holiday

A PROgrammer’s life is like being on holiday all the time, because there’s nothing better than doing the job you like the most – and making a living out of it.

Anyway, sometimes I have a real holiday trip.

One of the most interesting things about blogging is you can do it from everywhere, as long as you have a computer and an internet connection.

During these years, I blogged from home, from my office, from Milan, Barcelona, Menorca, Ibiza and Sardinia.

But it’s also true sometimes you just can’t blog. Just think about a really hard working day, a long airplane trip, a bad flu, “just another” try to beat a level in your favorite game, a date, and so on.

That’s why a good blogger should always have at least 5 blog posts saved for an emergency use.

You can use them when you are in troubles or, if you know next week you will be very busy, you can schedule them to be self-published at the desided time.

Look, you’re not cheating… all newspapers and new sites do the same: they have a library of articles ready to be used in case they need them. In most cases they talk about famous people lives and they are ready to be published just in case one of such people should suddenly die.

Next saturday I will travel to Cuba for two weeks… connecting to internet from the major cities is not a problem but in some smaller towns you just can’t do it.

So I am preparing some posts to be scheduled during my trip, just in case…

If you want to contribute to the blog with a post, it’s the right time to do it… if you have a blog and want one of your posts to be published here, or have something interesting to say, mail me a triqui[at]libero.it and I will schedule it. Obviously you and your site will get fully credited.

At the moment I am looking for posts about Flash, blogging, game design, monetizing and PROgramming.

Interview for a school project

Today I received an email from Thomas Tan asking me for an interview because he’s making a school project about me.

Hi Emanuele!
I am Thomas Tan, a frequent reader of your blog, and I LOVE your tutorials about flash.
I need to do a school project about a famous person and since you are the “Most Famous Emanuele in the World” and is also an “authority” by Google, I thought if you could answer some questions.

I think some of the questions can be interesting so I am going to answer them in this post.

Have you won other world leagues other than “Worms Armageddon”?

There was a game in late ‘90 based on an afro-american cop woman… something like Tomb Raider with a police story… don’t remember the name… there was a timer for each level and at the end of the level you could submit the time to a server. I got the best time in a level and the software house sent me an original sketch of the game… must be somewhere in the house… I will publish it once I’ll find it.

What is your experience in making games?

My first game was a BASIC slot machine for the Commodore Plus 4… then I made some games I was the only one to play, then switched to Amiga and Amos until I discovered Flash.

How long have you been writing tutorials?

About two years and a half

Do you love Google as your main search “thing”?

Yes, I love Google even if Google does not love me… I have a PR3 but some time ago I had PR7

How bad is IT in Italy?

Even worse. Every year someone creates a new law to make internet users life harder and harder. They tried to close italian blogs some months ago, now they are trying to make a law that could shut down the access to the major web 2.0 sites like Facebook or YouTube, they already closed the access to 1,479 (read it again: 1,479) foreign online gambling sites (see the complete list), we have 3,000 towns out of 8,000 without ADSL… and I could write an entire blog about how IT sucks in Italy but I think it’s enough at the moment.

Why did you choose to run a blog?

I wanted to share some developer experiences

How did you make the blog a success?

I think I teached people how to improve their skills and make money. Unlike other bloggers that simply tell how THEY are making money blogging, I have a lot of readers earning more than me blogging and making games. When you read this blog you think: “hey, I can make it”.

Are you proud to use Mochi Ads?

Actually, “proud” is too much, but I’m happy they gave me the opportunity to monetize games.

Which do you earn more money with? API integration, Mochi Ads, Kongregate Ad Share, Mind Jolt or are there others?

At the moment MochiAds gives me the biggest revenue, but having some pages with your games and Adsense ads can be interesting too. I also have a couple of plans to make some more money I some new ways… stay tuned.

What computer are you using now?

I am blogging this post with a portable 20.1” HP Pavillion, but I also have two desktops and a Mac. Shame on me, I’m using the Mac just to play YouTube videos.

Do you think it is fast?

Not enough to play the latest games at the highest resolution, but I am only playing with the PS3 at the moment. Enough to work with Photoshop, coding with Php and AS3.

Which is your favorite hosting “thing”?

I found Host Gator to be very interesting.

Do you feel you are better than others? or just confident?

No, really…

Are you a gaming PRO too?

No, but I am proud I developed the site for the best italian CounterStrike clan in 2001.

What are your favorite games?

There are tons of games I enjoyed a lot… one day I’ll post them all as far as I can remember… at the moment I am having fun at Dead Space and I can’t wait to play Fallout 3

Why are they your favorite games?

Dead Space has an interesting story even if it’s the old “ship lost in space with aliens and mad doctors inside”… but I like B-movies so that’s ok.

How do you find Pi?

I don’t. 3.14159 works in most cases.

Do you find me irritating for asking you questions?

No, as long as you don’t ask about my recent penis enlargement.

Facepalm – when having a backup is not enough

If you are a regular reader, probably you noticed during the last days I went from about 5 posts per week to 3 posts/week.

I didn’t plan to give up blogging, and I didn’t run out of inspiration… I have a lots of things to write, but lately I find the blog to be too slow, so I thought it would be due to a server upgrade and waited a couple of days.

Yesterday I was writing an interesting article about a new project I started with an important partner (you will find it tomorrow) when I got the 500 internal server error.

Never mind, let me close the page and open it again. 500 again.

Ok, so I deleted the entire site and uploaded the backup.

500…

Ok, maybe something happened to the database, let me check it and back it up.

I wasn’t able to back up the database… I was only able to perform select queries… update, delete, insert and other writing queries gave me errors… and still, of course…

500…

At that time, having a backup was not enough. What’s the point in having a backup if you can’t back it up?

While I was thinking, and the site was softly displaying

500…

Never mind, I was lucky enough to have another database on the same server, so I switched the databases and the site was up and running again.

But the administration panel was still in 500 error. Probably the same issue that screwed the database caused problem to the disk.

I had to delete all files once again and upload them, and finally the site is running.

But I am a quite afraid at the moment, so I am writing this post using the notepad

Obviously I opened a ticket to the customer care, and they answered this way (translated from italian)

we found your DB (dbname) having a table (tablename) with some spam records [so what?]. This causes problems when making queries on such tables [really?].
So we renamed (tablename) to (new tablename)… you are invited to clean the DB blah blah blah

So, forget what probloggers say. Having a backup is not enough.

During your life as a blogger, you will have to face weird errors and stange support teams.

Did it happened to you once or twice?

Now I pasted the post in WP dashboard… 3… 2… 1… Publish (pray)

70+ Open Courseware Links for Game Designers and Developers

Normally I don’t like that much blog posts with a ton of links, but this time I got the permission from Kelly Sonora from Learn-gasm to publish Jessica Merrit’s article about 70+ Open Courseware Links for Game Designers and Developers.

Whether you work in game development or design, or you just aspire to, there are a number of resources available online that can help you get the education you need. Through the use of Open Courseware and related resources, you can learn about game theory, practical applications, and technical instructions for design and development of games. Check out this list to find courses that can teach you all of these things and more.

Game Development
In these courses, you’ll learn the ins and outs of game development.

  1. OcwArts: OcwArts will teach you how to create various gaming programs from this course. [OcwArts]
  2. Creating a Science of Games: Learn how games can be developed and improved for wider applications than entertainment. [Rice University]

Read more

Improve your brand with a logo – part 2

Do you still think a minimal logo is better than a cartoonish one for an indie PROgrammer?

Try to make a better cake with Nike swoosh…

A lot of people said I look too much like a woman in the logo.

I had two options: the first was adjusting the logo.

I opted for the second one


(original photo by monkeydisease)

Are you a real PROgrammer?

I know a lot of people saying they are programmers just because they can handle Excel formulas without (too much) hassle.

Others say they are programmers because they modified a form validator script found somewhere in the web and, hey, it worked. For almost a week.

Now I decided to write down 12 rules to determine if you are really a PROgrammer or just another wannabe

1) You are making a living with programming

I don’t want to know how much do you earn, because I know this depends a lot from the Country you live in, but if you are a PROgrammer, then PROgramming is your PROfession and you must make a living out of it.

2) You often fill your spare time programming

A PROgrammer never gets bored when programming, so you shouldn’t be surprised to find yourself testing some useless script just for the sake of doing it.

3) You often stay up to late night just to add “that feature” to your script

A real PROgrammer is never fully statisfied about his scripts, so he keeps adding new features until he’s about to fall asleep

4) You can’t sleep if your script does not work properly and you don’t know why

If a routine does not work and you can’t figure out why, then you cannot eat, you cannot go at the gym, you cannot even sleep before you know what happened

5) You have new ideas about increasing scripts performances in the strangest situations

I have such ideas at the restaurant, at the cinema, and even when I am listening to a friend of mine complaining his girlfriend is probably cheating him. It happened. Seriously. But I did not suggest him to “remove the object to free memory”.

6) You always wonder why the third letter of the alphabet has the same name as a programming language

As far as I know, who developed the alphabet did not know C, so this will probably remain a mistery.

7) Your bookshelf has a pile of books about programming

Who cares for latest Stephen King’s novel when you can read interesting books about programming? Here it is my bookshelf

8) You are really excited when comes out a new language/version

New language/version means new features, new possibilities, new challenges…

9) You are amazed when you look at a software and think about the programming behind it

This happens mostly when playing games… when I played Quake, I wasn’t amazed by the first real 3D first person shooter, but by knowing someone was skilled enough to code a real 3D engine performing enough to handle all gamind dynamics

10) You can’t bring it down you can’t program everything

I mean… wouldn’t it be perfect if you TV remote control had a little console where you can enter something like this:

1
2
3
4
if(current_channel.isBoring() && current_channel.getBetterChannels == null){
	playstation.turnOn();
	playstation.loadGame("Dead Space");
}

It would be fantastic…

11) Other PROgrammers are your idols

This is very important. If you want to be fan of famous PROgrammer, check this page and be his fan. One day or another, he will publish some exclusive content in it.

12) You did not take this list too seriously

PROgrammers are ironic. If you aren’t ironic, check your configuration file or report it to your customer service

Next Page →

Posts