Saturday, December 29, 2007

The KISS Principle is Hard

The most obvious principle in software development is KISS or Keep It Simple Stupid is a hard principle to follow.

And it show up in my incompetence during the development of my upcoming Twisted Shootout game.

Just today, I made the finishing touch to my programming task involving collision detection.

I just solved the final piece of puzzle with a simple adjustment of a fricking variable.(After a spontaneous look at an overlooked variable)

All this time, I been thinking of overly complicated solution to my problems when it is right under my nose!

Before I had to adjust the variable, I also tried an overly complicated algorithm that went nowhere until a ruby-loving friend with a mathematic degree told me that I should his simple approach. It replaced like 99% of various conditional statements, variables, and others with a simple conditional statement and a few variables.

Moral of the story:

What you think off the top of your head is often not the most simple or easiest solution to the problem.

You can discuss this post at the forum.

Wednesday, October 24, 2007

The Importance of Dreams

My dream is to become one of the first to make a living off entirely free games. It is this dream that I aspire in my various projects. It is also a very real dream for me because I am taking steps to reach my dream.

That dream has been criticized. They see that I will fail no matter how hard I try. They criticize and yet often never offer feedback on how I can reach my dream. Basically, they said "don't even brother". (What is described here are not representative of all critics)

Yet I persisted in my goal. Although I have little to show for, I am making steady progress in term of revenues(I am breaking personal revenues records ever since I started). That, at least I am happy. (Although these critics laugh at my small earning. They won't laugh in the near future :) )

One day, after looking at my profits and look at older posting on this blog, I begin to realize something important. I am building a pretty side income . Even if I don't succeed, at least I have this source of revenues.

Even If I lose a job(Don't have one), I still have this source of revenues. It will make money for me even around the clock. It doesn't require much maintenance. Plus, I can use what it earn to fund future ventures.

The pursuit of my dream yield me economic benefits that I overlook as I chase to reach my goal.

The pursuit taught me something important. If you don't try, there are no gain. If you did try, the benefit could be great. Even if you don't succeed, you're left with more knowledge and the high possibility of positive changes in your life.

Aim high and take these little steps to reach your dream. With this unrealistic dream of your, you can achieve many things as you ruthlessly chase after the goal.

Such as getting dugg, appearing on slashdot, and having a semi popular wiki to name a few of real life accomplishments.

With the revenues source, I am glad that I persisted against my critics.

If you want to achieve a new world order in the video game industry based on free gaming, maybe we can talk about achieving this goal and take a step together. I would love to form an alliance with fellow entrepreneurs that is interested in free gaming to overtake an industry that is even bigger than hollywood.


Discuss this post in the forum.


P.S:
I am sorry that I couldn't revamp the rubygame tutorial part 2. At least I accomplish something by adding a forum section.

We also disabled commenting to this blog. Now if you want to post a comment, go to the corresponding thread in the forum we linked to above.

Sunday, October 21, 2007

What I been Up To These Days?

So what been happening between all these days between the last post and this post?

Well, I am monetizing more of libregamewiki.org. It is now earning me at least 10 cents more per day. For the purpose of monetizing the site and increasing the site's usefulness, I added a forum, planet, and even a blog. I also experimented with the dimension of the ads boxes. I found button ads to be much more profitable.

The Libregamewiki site have about 200 articles, over 4000 edits and currently 4 hyperactive editors. So it is growing rather fast.


On the game development side, I been forever working on a game that was supposed to be complete last month in a pyweek contest. If only I have more motivations to finish the project, I would earn more money than what I am earning. Given the previous history with my development you could say I don't have what it take to create commercial free games.


What is coming up for this blog? Hopefully, regular output of new content. I think I am going to open up a forum section at the libregamewiki site and rewrite tutorial part 2 into smaller pieces that are easy to manage. I am going to put myself a deadline here: I must get it done by Wednesday.

Also, I'll be soliciting ideas from the forum since historically this blog doesn't produce much contents.

Saturday, September 8, 2007

Success and Neglect

Libregamewiki now far eclipses this blog. About 40,000 pageloads, 12,000 visitors were recorded in my stat yesterday. This blog is so far got at best 5,000 pageload in its best month(which is July).

The wiki got dugg.

Thus, the wiki grow bigger, even though many of the contributions are essentially worthless(people adding freeware games and such).

Little did I know that submitting the wiki to FSDaily would create such a chain reactions.

Digg propel my wiki to traffic unimaginable probably 3 days ago. It is an amazing achievement for me.

But I been neglecting this site. It is hard for me to write stuff on this blog. My effort on the wiki already reap great benefit.

I planned to revive the site and then cranks out great articles to read. Thus making my blog useful again.

Monday, August 13, 2007

New Wiki For Free Games Launched!

Hello readers and visitors! Today I announced the public launch of a new wiki called libregamewiki.

It is an encyclopedia on Free games and the Free gaming world.

Why I created this wiki? Well, I decided that the Free gaming world need a dedicated wiki of its own. It is not going to be about Linux gaming, but the whole Free gaming world! Plus it would be nice to know what the gameplay is like, what is the storyline, who written it, what license it is under, and more such information.

Plus it help with my ambition of creating making a Free gaming community(I never told you this before I think) and help make Free gaming become a major force in not only the Free software community but the gaming culture in general.

It is a place for Free gamer diehard who want to encounter ONLY Free games. That's right! NO PROPRIETARY GAMES!


It is going to be a place where people can gain lot of knowledge about Free games. It is going to be a place where people go to find new information about Free gaming, their hackers, and their contributions.

I already seeded a few articles there and there. In one case, an anonymous contributor already contributed an article. There are more articles to write too.

But the amount of articles is too small to be a useful resource and it need your help. We need your articles, your knowledge, your time, your expertise and your contributions.

If you're compassionate about Free gaming, please help us....

Help us make this wiki the comprehensive resource and encyclopedia for Free gaming in the world! <--- That's our goal. That is the end of my begging. I hope you guys contribute. Thanks for the audience that you granted me! Happy hacking! ~Kiba UPDATE: An anonymous user told me via the wiki that the new wiki is empty. No it isn't! For demonstration of non-emptiness, see the Battle for Wesnoth article I created.


UPDATE FOR A LITTLE NOTE:
I briefly changed policy and update this post to allowed games with source code Free but not contents but then I revert it. Now the old policy is back. Very strict but that will keep the game entries to be made of only Free games and prevent the wiki from expanding its coverage to proprietary games.

I registered a domain name for the wiki very recently.

Saturday, August 11, 2007

My Blogging Experience So Far: 10 Things I Learned

It been only a few months since I started blogging. Indeed I learn a lot in that time too. I also applied my knowledge that I gained from blogs about making money and articles on blogging. A lot of them are indeed true. I also learned a few things along the way too. I am not an expert though, but I did have some modest success(if you count thousand of visits last month modest).

Before I talked about what I learned about blogging, I discuss some potential benefit for game developers that come from blogging.

Potential rewards of blogging for game developers:

1. Additional traffic source for your projects. If they're interested in what you have to say, you probably have your own market for your games and new starting points for new websites you're going to develop. For example, when I launch that game devlog, all the new traffic come from this blog, even if it is very small. I have yet to try announcing my games here.

2. Reputation and ego gratification. You'll be a little bit more known to the community. If you got nice traffic boosts for articles you written, that will gratify your ego, too. When people say they like your blog, you know that you done a good job. Plus, they're more likely to pay attention to whatever new projects you're going to do.

3. Extra revenue source. Yet another revenue source for your game business means that if you lose one revenue source, you will still be making money with another website.

So what I learned about blogging?

1. It is very easy to make a profit if you know what you're doing. Ingredients required: free(as in free beers) host that allowed you to put up ads(blogger), some good contents, a source of traffic, and some ads, then BAM! You make money, even if it is mere cents. Your website become profitable just like that!

2. The difficulty is actually scaling the profits. In general, the higher your traffic, the bigger the profits. I see this happen whenever I got a traffic spike. I noticed it the most with projectwonderful ads and way less with Google Adsense but it still happen.

3. Resource articles are easiest to write and easy to promote(like this one). All you need to do is get links for a specific type of resource or make a list of what you know.

4. Sometime an article is indeed worth publishing even if you don't think so and vice versa. For example, my article about ideas on making money off Free softwares.

5. You do not need to spend money to make money with the exception of a computer and an internet connection. You could make money from blogging at public computers, though. I never spent a dime on this blog and on another website so far.

6. Put action items such as "vote for me at blahblah" at the end of your article. It'll help. This help me whenever I submitted an article to FSDaily.

7. There are lot of opportunities in the world. Learn to spot it and pursue it. For example, I got all the articles I ever submitted to FSDaily.com once I discovered that site. Each time, I got a nice decent boost for the size of my blog. If I wasn't a lazy bum in discovering new opportunities and exploiting them, this blog would be even more popular.

8. You can indeed be a lazy bum for days while still making money. This blog is a prime example. I didn't post for a few days, and I still make money.

9. People in your niche can be your best allies. For example, the Freegamer blog gives me nice traffic boost at various point of time.

10. Sometime, you can fill an unexpected really tiny niche. For example, my tutorial series apparently got lot of search engine results from people looking for Rubygame tutorials. I was not expecting that at all. I was expecting that people are not interested in Rubygame at all considering the really small size of the Rubygame community.

I hope this information will help some Free game developers, especially those that actually spend time on blogging.

Happy hacking!

~Kiba

And oh, if you like this post, please subscribe to my blog's feed.

Sunday, July 22, 2007

News: Pyweek 5 and More

Pyweek, the python game contest, will take place in the first week of September. All contestants must submit their games as Free softwares. Registration for the contest will open on August 3, 2007.

The contest is named Pyweek 5. It will be the fifth contest to take place in the history of the Pyweek website.

For more information on the contest, please visit the their website. Here are some pointers:

1. About: Explain the rules and what the pyweek contest is about.
2. Timetable: sch elude for the contest including registration, theme voting, winners announcement and more.

I'll be entering this contest myself. I highly encourage others to do so too. This will increase our expertise as well the number of games written in Python as well increase the number of Free games in the world.

You got pretty much about 1(41 days as of this writing) month to prepare so use your time wisely. I hope to use this time to quickly produce a number of games. In that time, I'll be learning pygame.

Meanwhile, I started a developer log for all my projects. Check there if you want the latest update on what I am working on. This will prevent me from writing all sort of projects post on this site and help me focus on writing more articles that will be of use to game developers.

Saturday, July 21, 2007

The Ultimate Resource List for the Game Hackers

This is a resource article for the Free software game developers.

Hosting space, information on running your own project, where to promote your project and more are listed on this page. It is basically a collection of resources that would otherwise be unnoticed by developers looking for places to host their projects. No doubt, Free software developers can often get subversion access, bug tracking tools, and a place to host their website with no practically no strings attached. All your projects just to have to be Free software projects (A good reason why the rest of the software world don't use these resources, even freeware cannot use it). There are also a few information resources that I located across the vast internet over my years of travel. A lot of them are mostly for the general Free software world.

This list will get new items add to to as time go on so check back for new listing. I hope the list will get more game specific as it evolve over time.

Hosting places:

There are lot of places that are willing to host your project. You should be familiar with some of them.

1. sourceforge.net - It seem to be the defacto standard of the Free software world. Sourceforge.net is recently acquired by CollabNet, a company famous for initializing the Subversion project. Sourceforge.net used to be Free softwares but some programmers are able to fork it into a Free software project called GForge.
2. gna.org - A hosting place started in 2004. However only GPL compatible projects may apply here.
3. rubyforge.org - Rubyforge is the defacto place for the ruby community to host their Free software projects. Only ruby projects apply here. It used GForge. Rubyforge also host gems, which is a specialty features of their. This allow users of Rubygem package management system to easily download and install ruby programs and libraries packaged into what is known as gems.
4. seul.org - Stand for Simple End User Linux. It is a linux adovacy group that host several Free software projects. Notable softwares such as worldforge and pygame are hosted there. Rubygame also used to be hosted there.
5. savannah.gnu.org - GNU projects are hosted there. There are also savannah.nongnu.org for projects not part of the GNU project.

Place to promote your games:


Probably most of this places aren't exactly focused on Free softwares but however, they're great for exposure.

1. happypenguin.org: This place is often dominated by Free software project. You should promote only games that can run on linux here. Web games and other like it do not count
2. freshmeat.net: It is also a great place to promote your project. You can probably receive a lot of traffic just by having a listing there. They maintain a list of unix and cross platform softwares. So make sure your softwares is that type!
3. greatgamesexperiment.com: It's a social networking website for gamers and game developers. It is dominated by indie proprietary softwares. I got a profile there but I didn't really promote anything there, so I am not sure about traffic. It is probably a good idea to have a game that can run on window as they are probably mostly window users.
4. raa.ruby-lang.org: RAA is a great place to list your ruby application.
5. freegamer.blogspot.com: This blog probably been mentioned on this site a few time. Nonetheless, it is still a good source of traffic if you can convince the author to list you. His blog is more popular than mine. Also he have a strong focus on free gaming.

Also, it is a good idea to announce your project on certain mailing list. For example, if you written a rubygame application, you might promote it on the Ruby mailing list plus the rubygame mailing list.

Running your own project:

1. producingoss.com: Written by an author who is a veteran in Free softwares, it contains great information on how to run your own Free software project. It is also Free contents for a bonus.
2. damnsmalllinux.org/income-guide: This is John's guide to earning money with Free softwares. No I don't know anything about this John guy.

Services for Free softwares:


1. ohloh.net: It can do analysis of your project's subversion repository.
2. cia.vc: CIA.vc is a RSS feed for the latest commit in your project. You can also get an IRC bot that spit out the most recent commits for your channel. Their backend is totally Free softwares. If you ever feel the urge(I hope you don't) to fork it, you can do it.
3. freenode.net: Practically a lot of Free software hackers are on there, so register your channel there. Plus it is geek paradise.
4. softwarefreedom.org: A law charity that dedicated their services to Free software projects all over the world. If you needsomeone to help enforce your Free software's copyright license then this is a place to do it. Also, they might be useful in helping you protect against people who want to destory your project. They're the guy that draft the new GPLv3. I hope you don't need their services though (Who want to have to deal with a patent troll?).

Conclusion:

This is it, folks. That is total 16 items for the game hackers to look over and start using it. We'll start adding more and more resources so check it when you have the time. If you have a resource link you want to add, please post your comments below.

Until next time, happy hacking!

~kiba

If you like this article, please subscribe to our RSS feed!

Friday, July 20, 2007

I am back!

As you might heard, I been without a real computer for a while. Well, that is over. My new computer with preinstalled Ubuntu just arrive yesterday. As you might imagine, I set up my computer to be hacking ready.

I officially arrive back at the land of hackerdom!

It is just too bad that I didn't get to hack new games for most of my summer vacation. I hope to make the best for the rest of my summer, because I'll have to go to school next month. It is going to seriously cut out time for me to write video games.

In the next few week, you should see a few new games being released announced on this blog. First to go out will be my space invader clone.

By the way, I teamed up with another aspiring game-hacker-in-training to create an online space combat racing game. You should see something like that a few week later.

I hope to spin off a developer log blog so I don't spam you guys with contents that you are probably not interested in anyway.

Expect to see further monetization of this blog, but don't really expect more ads.

It is time to start hacking!

~Kiba

Saturday, July 14, 2007

Strategies for Expanding Free Gaming


Free gaming as we know it, have no pure-breed Free software vendors/studio surrounding it. Few Free games are ever commercial. Thus a myth developed about Linux do not have much games, which is not true. The success story of games like Battle for Wesnoth pale in comparison to other big Free software projects like Firefox. There are few projects that are big and ambitious yet still enjoy wide success.

Practically everyone agree that gaming is one of the biggest bump on the road to widespread adoption of the Linux desktop.

Probably many of us want more games, which are Free softwares.

Still not all hope are lost. If our collective goal is to expand Free gaming's popularity so there are more Free games to play, along with more vibrant development of Free games, and we are willing to put in the effort, perhaps we have a chance. It may also further the goal of the Free software movement. It might even accelerate the adoption of the Linux desktop and finally lead to the magical "Year of the Linux Desktop".

Below this sentence are some of my ideas(Some original and some not) on how we can expand Free gaming's popularity.


1. Build website and services catering to game hackers:

There are lot of websites you could build, whether it is yet another place for developers to host their game projects, wiki dedicated to Free game developments, or maybe even a social networking website for fans and developers to connect. These services help the game developers in their quest for spreading the words, knowledge, or a place to call home, and other useful functions. Whatever it may be, it help developers achieve their goal in the development of games and that can only be a good thing. You might even earn a cent or two in the process!

In this area, I imagine a project that combine social networking and sourceforge.net like hosting services. It would give the website a more community feel, as well make game hackers the rock stars of the Free software world. Plus it would be nice for game hackers to carry around a universal profile showing what they accomplished, how many fans they have, contact information, and game projects they're working on. As with project hosting, I guess it would develop a special brand of tools(Free softwares of course) to distinguish itself further from other competitors. It is a kind of website that put strong emphasis on social networking yet give tools for developers to develop their games. This is a dream of mine that I hope is going to be worked on by either me or someone else sometime soon in the future.

2. Free the games campaign


I bet there are many games that are gathering dust sitting on the "intellectual property" shelf of proprietary video game companies. Nothing may never ever happen to them. It is immoral that such source code and data files aren't exposed to the world! The fact that they're sitting on an imaginary shelf gathering dust make this injustice further more harmful.

It is your jobs for those with lot of free times to contact the "intellectual property" owners and free the games! Of course, focus on ones you like because you'll probably be more motivated to free them.

The effort of freeing the games won't do much good if they're not being further developed. While the game may be freed and can rise up when somebody wanted to work on them, it does them no good if they're not being played and enjoyed. So it is up to you or another group of developers to start developing the game. Maybe the first release would be a maintenance release intending to iron out bugs and the port the game to new platform. With a little bit of work, you can probably attract a new fanbase to enjoy the fruit of your labor.

Someday, Free software advocates all over the world don't have to feel guilty if they're playing old games, because they become Free softwares.

There are already projects underway that are currently undertaking this challenge, one of them is the Free Gamer's Project Open.

3. Write new exciting Free games

Innovations tend to be rare in this world, especially in the commercial video game industry where they have the tendency to focus on the graphics. You, the small developer, cannot focus your effort on cutting edge graphics. So it is essential that you focus your effort on what matter most, the gameplay. Everything else such as the graphics, musics, and others are beside the point but they do help to enhance the game.

Forget the clones, focus on something different. Focus your time on designing vastly different gameplay style than the norm. Who know, you might even hit the jackpot! Of course, the game must be fun. Despite the Free gaming world being a clone-fest, there are a few relatively innovative game that give you a different feel. Such kind of games includes RTS named Globulation 2.

The more innovative game you can write, the better!

You might want to try to write a killer game after a few good runs, which is a game that everyone must play. It would attract large amount of gamers in very short time.

A little disclaimer: I don't know how to design really innovative games and killer games or have the experience to. You and I going to have to discover how to do just that. If you're a really brilliant game designer and programmer, I encourage you to pump games for the Free software world.

The more new players there are, the more they're introduced to Free gaming and Free softwares.

4. Take up Abandoned Projects


You know, there are a whole lot of Free games that are abandoned right now. If you don't have good ideas on game design but have some programming skills, this one is for you! You can just take up games that are good but are abandoned and just maintain it. Beside, it will do wonder for any existing fans of the games. Plus revitalization of a project just make the whole Free gaming scene look more vibrant as well more exciting. When there are lot of less dead projects, I am sure it will shatter the perception that Free platform such as GNU/Linux generally suck.

In Conclusion


Well, this is all I can think of right now. Just remember, the more Free gaming become popular, it will further the goal of the larger Free software movement as well bring more games to play with that don't attempt to restrict our freedom. Everyone win! (Except the guys who continues to produce proprietary games)

In the future, I might even have more ideas on how one might expand Free gaming to a bigger scale.

In the meantime, happy hacking!

~Kiba

If you like my article, please subscribe!

Friday, July 6, 2007

Top 5 Must Read for Free Gaming

The ultimate guide to your reading list for Free gaming is here! Some of them are essay that influence my thinking about Free gaming in general, economic, or just plain interesting to read. For some articles merely related to Free games, still other are not even about Free gaming, but offered insights relating to Free games. Yet, some articles are articles that I disagree with either entirely or parts of it, but I feel that they are still good read. Without further ado, here are the top 5 Free gaming articles!


1. Debunking reasons not to open source indie freeware games

This article by Freegamer give reasons why you should make your games Free softwares, while also attacking fears and other bogus reasons often offered by freeware developers.

2. The Bedroom Coder's Business Model

It is a really good guide that show you how it is possible to be a bedroom coder and not sell your soul to game studio or companies. It is also one of the article that inspire me to write Making Money off Free Software Games?

3. Free Distribution

Thought on the future of copyright law, distribution, and methods of making money. It is also another article that influence the creation of my blog post as mentioned above.

4. Playing the Open Source Game

An interesting article that explain why games are different than typical softwares and the problems associated with making video games. It also spell some advices for game hackers out there.

5. Where are the Good Open Source Games?

Another article explaining the difficulty of writing games and how poorly adapted the usual Free software development model for games.


That is all of it!

If you like this article, vote for the story at FSDaily.

Saturday, June 30, 2007

News: Rubygame 2.0.1 Released

Today, Rubygame 2.0.1 is released! This is a release I been anticipating all this month. Included into this releases are some bugfixes. For example, C code segfault are fixed. So you will not be meet with a strange error, thus saving you time.

Rubygame is the library that I used to develop games in the Ruby programming languages. Thanks Jacius for developing this library. None of my games wouldn't be in a graphical form without Jacius!

Withou further delay, I present you the changelog and the download page. If you missed the homepage link, here it is.

I highly encourage you guys to download it. This way, when you download my future games, you don't have to brother installing Rubygame further down the road. You might even become game developers with it!

Happy Hacking,


Kiba

Thursday, June 28, 2007

We'll be back!

This blog will resume posting in two weeks time! I will also begin to resume production of my video games and libraries.

In the mean time, I am working on meaty contents that should be interesting. They will be posted when they're done. The goal is to post all these interesting contents before the new computer arrives.

One of the article will be about building a subculture, and the other one is about specific actions that I made so far to make the goal of writing Free games for a living come true.

You might also notice changes to the blog. I am using ProjectWonderful and Google Adsense advertising services. Projectwonderful is an ad auction service and Google Adsense do contextual advertising. I still hadn't make any money yet. I blame that to the low traffic of my blog, thus not making any sort of money. So in order to see some actual revenue, I would have to work on making my traffic bigger.

Also, I'll be getting a dell computer with ubuntu preinstalled. It will have 1 GB of RAM, an intel dual processor, 160 GB hardrive operating at the speed of 7200 RPM, and more. All for the price of 349 somehting dollars! The new dell computer is a lot cheaper and more powerful than the old computer we used to have. In order for me to use it, I'll have to get a driver permit, per agreement by my family(I am getting it for free).

Remember kids, your PCs and your internet connection are necessary items for programming. Take care of your computer as if your life depend on it! Or you end up like me, with a burned out desktop computer. Clean out the dust every six months, keep the room cool, and follow every precaution to extend your PC's lifetime.

UPDATE: I decided that I am going to work on different articles than what is mentioned in this post.

And oh, we'll be back!

Happy hacking!

~~Kiba

Sunday, June 10, 2007

Some Bad News From the Author

Until further notice, this blog will suspend further update and all software development by this author are halted.

My computer is broke so until I get a new computer, no new posts will be added to this blog.

So if you notice no update lately, this is why.


I will not post in a while.


P.S: I am posting this from a different computer.

Monday, June 4, 2007

Day 2: Learning the Art of Gimping and Everything Else




Day 2 Statistics:

Project: Rubyemon
Physical loc(sloccount): 156
Milestone: Work on loading menu begins, writing a system for saving and loading games.
Subproject: rbgooey
Physical loc(sloccount): 1,486
Milestone: Work on adding image loading for UI begin
Commits for Rubyemon: 10
Average time between commits: 1.38 hour(s)
Commits for rbgooey: 7
Average time between commits: 7.42 hour(s)
Commits total: 18 commits
End Time: 01:46:37 Tuesday UTC

Today, we add some images for the UI, toy with creating the game code, as well working on the interface for loading games. Some missing features forced me to go over to rbgooey project.

I am also developing a new feature in rbgooey that should allow me to add clickable images such as the button below the statistic. I am still not done with the addition of this new feature. We'll be done with this feature tomorrow. There is another feature that allow for omiting the background color for texts. That mean rbgooey will get yet another release by the end of this week.

17 commits. This is not exactly what I called "productive". Still it was not as bad waiting for the project at GNA.org to come alive and having to start late yesterday. I did however, start late today, intentionally. This shall not be tolerated in the later course of development of this game.

I also learned some nice tricks with GIMP. For example, how to draw a straight lines without the hassle of inaccuracy I also tried unsuccessfully followed a GIMP tutorial somewhere on the web. The result is a sucky button. So I learned how to make rounded rectangle, learn a few thing or two about selections, and other GIMPY stuff I forgot to mention.


Unfortunately, the fact is, I still did not get to the gameplay code yet. This is big reason enough for me to get urgent and serious about this or I won't finish these simple goals of finishing both the basic map system and battle mode.
2 days down and 5 more to go. Well then, I got to go back to hacking.

Happy hacking,

Kiba

If you have comments, please contact me at wikipediankiba__AT__gmail.com or you can also comment on this blog post.

Sunday, June 3, 2007

Day One: SSH Woes



Physical LOC by end of Sunday UTC time: 105 LOC (SLOCCount)

Languages: Ruby 100%

Commits: 15 times, average is about 31.11 minutes between every commits since the start of the project.

Milestone: Project is finally set up. Slash-screen is coded.

I only managed to get as far as setting up the slash-screen for the game and then ending at the incomplete task to generating a simple YAML file to create new games. It is not my most productive day.

The most annoying aspect of this unproductive hacking session is having to enter the pass-phrase to authenticate my identity every single time I want to commit. It is not really freakish annoying, but annoying enough for me to risk it all for just one hour or two to get rid of that pass-phrase forever. Due to habit, I have the tendency to wait for the commit to happen, when in fact, a pass-phrase is blocking the commit until I answered it. I learned my lesson about SSH key generation. Just don't specify a pass-phrase or you'll be forced later to enter it forever and forever until you finally change the key.

That's lesson number one already.

In any case, I have six more days ahead of me. Let hope the next day will be far more productive and will yield more changes than yesterday.

Happy hacking,

Kiba

If you have any comment what so ever, contact me

If you have any comment what so ever, contact me at wikipediankiba___AT__++_gamil.com
You can also post a comment to this blog post.

Saturday, June 2, 2007

A Considerable Delay.......


This image below is all the progress I managed to make for this weekend for my space arcade game, Space Fighter Ace. The game will have to wait, or simply released later this week. It is not because I am busy or lazy, and other reasons relating to my productivity. Rather, I managed to get myself locked out from rubyforge(after giving the wrong passwords too many time), making me unable to commit anything to my project's subversion repository, thus delaying the progress. Afterward, I finally managed to regain access after the rubyforge administrator undo the automatic blacklist me but not enough time for me to meet my Saturday self imposed deadline.

As for rbgooey, the GUI library for Rubygame, their repository is hosted on a different site, so their progress wasn't delayed. Rbgooey got lucky, so we're releasing a new version after mere days of the first release. Version 0.0.2 sport a new feature and some bugs fixed. If you're a Rubygame user and in needed of a GUI library, check this out.

Tomorrow will be the start of a new project, Rubyemon. We'll chronicle this project's progress the whole week starting on Sunday. This project will enjoys one long hackathon.

By the way, we will be putting up donation links for those who enjoy our incoming and future games, and also somehow generous enough to donate some cash. We will also mention a donation request in new games coming soon like Space Fighter Ace, and as well Rubyemon. If I somehow managed to get enough money from donations to pay for web hosting for a year or two, I'll use that money to get a dirt cheap web host somewhere on the internet and get out of this place.

Good night and happy hacking,

Kiba

If you have any suggestions, opinions, ideas, etc, you're welcome to contact me at wikipediankiba_________gmail__________com. You can also comment on this blog post too.

Thursday, May 31, 2007

Annoucement of New Projects



I am here to announce you my first project to be unveiled here at this blog, rbgooey!

Rbgooey
is an alternative GUI library for Rubygame and also the first of its kind to be released for the Rubygame library.

This library, version 0.0.1 only support texts and limited typing operations. Over the following days, I'll continues to extend it and refine the API so everyone who use it will get a much better(and more awesome) experience in using the library. This library is the culmination of all my knowledge in writing a GUI library using Rubygame, although it isn't complete yet.

The image I show you below is the screenshot of a really cool example application I developed to demonstrate the rbgooey library. It randomly display new texts of five characters long in random locations on the display screen every second. 10 seconds latter, the application reset and the process started over. In total, there should be 50 pieces of texts every cycle.

Code:

Enough said, let get to the real code(Don't forget to install rbgooey)

require"rubygems"
require"rubygame"
require"rbgooey"
include Rubygame
TTF.setup()

class Timer
def initialize seconds , &action
@interval = seconds
@action = action
end
def check
t = Time.now.tv_sec
if t >= @fire_at
@action.call
@fire_at = t + @interval
end
end
def start
@fire_at = Time.now.tv_sec + @interval
end
end


class RandomText
def initialize
@display = Display.new
@display.setup(800,600,true)
@display.color([100 , 100 ,100],[20 , 20 ,20])
@background = Rubygame::Surface.new(@display.screen.size)
@data = UiData.new(@display)
@data.text.setup("freesansbold.ttf",12)
@data.text.render.surface(@background)
@clock = Rubygame::Clock.new
@clock.target_frametime= 40
@q = Rubygame::EventQueue.new()
@data.declare(:hello)
@random = Timer.new(1) { random() }
@delete = Timer.new(10) { delete() }
@random.start()
@delete.start()
end
#http://snippets.dzone.com/posts/show/2111
def String.random_alphanumeric(size=16)
s = ""
size.times { s << (i = Kernel.rand(62); i += ((i < string =" String.random_alphanumeric(5)">


action = RandomText.new
action.action()

Explaining Things:

The entire codebase of the program is about 77 lines long, including space. With some data files, the application should works. Well, it certainally won't work without data, so I am just offering this place to download the whole thing, just the codebase and some data files.

This demo program will probably not work in versions later than 0.0.1

Already, I discovered the first flaw in my library. Rbgooey required a hard coded path to an image. The path is "test/mouse.png". Even though we didn't use the mouse in the program, it is required for the application to work.

The entire code of this program is public domain, excluding a code snippet for generating random texts.

While this is not a tutorial, I would like to explain a few methods that I used with rbgooey. For example, UiData#text.add(string,x,y) is used for adding strings. UiData#clear is used to clear every information about texts, rect, and so on. Before you can create texts, you will need to declare a group you want a certain group of texts to be associated with. For that, you use Ui#declare(name here). UiData#text.render.undraw clears all the rendering of texts.

I'll stress one thing, this library is not ready for consumptions. It isn't used in real rubygame applications yet. Soon, I'll use this library and implement improvements as I muck around with video game creations.

A Roadmap:

The roadmap of rbgooey look like this for the next three versions:

Version 0.0.2 will includes file based configuration of basic setting such as screen size, mode, the font, and among other settings that I forgot to mention. It should help the code manage clutter. Bugfixes are the main focus here.

Version 0.0.3 will see some features for groups(the association of texts and other user interface elements) such as the ability to change the size of all texts within that group. Support for capital letters in typing will also be added.

Version 0.0.4 is where many of the major enhancement and improvement to the text library part will be added. In this version, you will be able to change the color for each individual characters, as well display different type of fonts for different texts. There will be lot of new features to manage texts in this version.

Some Other Announcements:


Now that we're finished with rbgooey introduction, I'll have a few projects that will be coming up. First, a new version of a simple game that I developed long ago will be released sometime on the weekend. It is called Space Fighter Ace. This game is a simple space invader clone that only work with previous version of Rubygame and only work on Window(Because I wasn't aware that linux is case sensitive). The target date I am aiming for is Saturday. New version of rbgooey should come out after this project's release.

Next, I'll start work on my first big commercial Free software game project. This new game will be called Rubyemon. Rubyemon will have similiar gameplay to the game Pokemon. We will chronicle that project for at least one week of its development, and then some update between there and here.

Wow, that's a mouthful. There are about 940 words in this post! If you got here without getting bored, congratulation.

It is time for me to get cracking on the various new projects.

Happy hacking!

~Kiba

P.S If you got any comments for this post, please post it, even if it is grammar nitpicking. You can alway contact me at my email address, wikipediankiba______AT______gmail.com

Thursday, May 24, 2007

Making Money off Free Software Games?

(I decided to repost this article after I deleted it. Sorry for RSS readers who come to find it while missing)

For some of us, Free softwares are just nice things that they can do without. They only care about it if it is better than the alternative softwares either proprietary or Free. Some of these people promote Free softwares for only pragmatic reasons. But for some of us, we really do believe in the ideal of the four freedom that every software users should have.

The reality is, the ideal of Free softwares is something some of us live by. The pragmatic values of Free softwares are nice, but however they are only secondary. The morality and ethical concerns come first.

Sometime, when we're trying to make a living, we're forced to write proprietary softwares. To write proprietary softwares is to violate our ethical standard. To not write these softwares is to face starvation. It is a dilemma.

The solution to the dilemma is to try to make a living on Free softwares and make it viable by whatever mean. So we are no longer forced to write these type of softwares every again.

So How do You Make a Living Off Writing Free software Games?

The first thing that probably come into people's mind is RedHat and tech support. Some people might be asking "How can you do tech support with video games?"

Unless, you run MMORPG servers, you're out of luck with that business model.

Some people, who are skeptical of this idea, thinks this is not viable at all. There never been a single commercial Free software game that are Free softwares from the very beginning. This is true. However, it is because nobody even try to make a living off writing Free software games. Hackers are probably just not interested in games that much.

Just because nobody try doesn't mean that making money off Free software games for a living is impossible. It also doesn't mean that you will never get rich from writing Free softwares.

One usual way of making money from softwares is selling the softwares. This is the business model of many software vendors. Normally, these vendors use the intellectual monopoly granted by the government such as copyright to control others' abilities to distribute or modify their own copies of the software. This is usually backed by a threat of lawsuit and hefty payment. It also created artifical scarcity.

Free software programmers give up these right in exchange for the Four Freedom that users of their softwares will have(As defined by Richard Matthew Stallman). Many would have chosen license like GPL that will guarantee the four freedom(which is ironically using the same intellectual monopoly granting law). Due to our inability to control people's copies, it is harder for us to sell Free softwares. It force us to have to look at other business models.

For a business model based on entirely Free softwares to succeed in the long term, I believe you need two essential things. For the first ingredient, you need lot of good game(s) that people like to play. the second ingredient is web traffic(or customers). Without traffic, you're doomed to make no money at all.

Another essential attribute of a successful business model, is the capitalization of scarce resources. They don't try to monetize of plentiful, practically unlimited resources. Instead, it is better to encourage these resources to spread around. What might actually happen is make the scarce resources even scarcer. In that sense, instead of trying to sell Free softwares, you could encourage everyone to spread the softwares. This is much like the various SpreadFirefox marketing campaign. Then you could try to sell scarce resources at a price.

These scarce resources could be good multiplayer servers, t-shirts, or even ads space.

So how You Would Actually Do These Things in Practice?

Selling Ads on Your Website:

This is the business model of many websites. Website with a lot of traffic are scarce, so the higher traffic you receive mean that your website is more valuable. For example, if you have a website just like I do, but with higher traffic, your website would be sought after by a lot of people. The higher your traffic, the higher price you can set.

Selling Time:

You could ask your fans to donate a certain amount of money in exchange for the development of certain games. Another idea is the auction system. You could set up an auction and different options(Games to develop) that your fans can bid on. If you have rabid fans for several games and they each really want a new version of the game they would try to outbid each other. Since your time is limited, you can only do so many things at once. By fans doing the auction, they decided what games are the most important to develop and how much money they're willing to fork over.

First Sales:

This business model require you not to release the source code or the executable to the public until the sale is done. In this model, you ask for a certain amount of money in order for a game to be released. The public would then collectively donate the money that you asked for. The faster they donate, the sooner a new game will be released. If they are impatient, you'll gain all the profits pretty fast. However, slower donation means you have to wait. A spin on the idea is to increase the donation price periodically. They could be one dollars every five day. This way, fans will even have more incentive to donate in a shorter amount of time. Slower donation mean the price will be even higher, which cause a delay in the release of a video game. Fans don't like the idea of having their game delayed by several weeks. This is essentially royalty fees, just payment up front.

Selling Hosting:

For the business model, you will be selling multiplayer server hosting for your game. The idea is you'll be using your knowledge in the administration of game servers. Since you wrote the server codebase, you know how to use it more than anyone else. You could do better job of doing special additions and other features for your customers' server. Even if the server's license require every customers to release their source code, you still provide a very special service that nobody else can(Save for someone who also know every inch of the codebase) like fix new bugs. You can also offer bandwidth upgrade, space upgrade, and other various additions.

Run your own pay-to-play server:

To run your own pay-to-play server is probably one of the most lucrative business model of all. If you can get 500 people to pay you 240 dollars each year (20 dollars each month), you make 110,000 dollars each year minus expenses. This model is mostly assuming that you run an MMORPG server or something equivalent to it. A game of this type probably one of the most challenging and ambitious project, if not the most. The risk is high, but the reward could be huge.

Selling tangible items:

You might as well be selling a package of your softwares with assorted bonuses such as pretty cover art, a manual, and maybe a signature from you. Some fans, rather then donate, prefer to get something more tangible for their money. It work well for some webcomics such as Megatokyo's Megagear store. Some people sell T-shirt, others sell toys, and some sell hardware like the guys at Damn Small Linux.

Begging for Donation:

You could simply ask for donations and relies on the charity of your users. If you have a lot of traffic, such as a 500,000 people per day, it might be doable. The best way to do this method is to offer various subscription donation plans. In this way, people forget about it and continuously donate certain amount of money each month. If you can get 2,000 people to pay you 1 dollars each month, you get 24,000 dollars each year. However, if you can get them to pay you 2 dollars each, you can get 48,000 dollars each year. If you can get 500 people to pay you twenty dollars, you get 110,000 dollars each year. In this model, only maybe a few hundred or a few thousands are needed to donate to keep you going. It is really patronage on a large scale. They simply want you to produce lot and lot of good games, so they're willing to fork you some money.

Some of these business model are already tried by other people in various other area. These are not new, but they are possibilities.

Who Will Try?

Anybody who want to make a living off Free softwares instead of proprietary softwares will try.

As for an example , that would be me. I want to try. I believe strongly that you can make money off Free softwares. No proprietary softwares will be written. No contents will be left proprietary. They will all be Free.

My contents are already Free contents. So if I make a cent, I'll be one tiny step to reaching my goal(I am still waiting for an advertising service to approve my website). Beside, it would be great to be the first person on this planet who make money off writing only Free softwares games.

If there are already people who are trying to do this, I too, wish them the best luck in the world!

Happy hacking,

Kiba

Sunday, May 20, 2007

Rubygame Tutorial Part 2

NOTE: This tutorial is replaced by The Rubygame Book.





In part 2 of the Rubygame tutorial series we will be learning how to control a Rubygame application's CPU resource usage.

If you did not complete part 1 of this tutorial, it is highly recommended that you do so before continuing this tutorial. Otherwise you will miss a critical proportion of knowledge required to write video games with Rubygame. You may not also understand newer parts of this tutorial.

We'll jump right in learning how to control CPU usage so your Rubygame applications doesn't suck your computer's CPU resource dry. By controlling CPU usage, we also get the added advantage of consistent frame-rate.

CPU Usage Control

Before we go any further, I request you to run dodgeball.rb and record the CPU usage of the game. Please record it in a place where you can refer back to(Not your brain, a paper is a much better place). This data will be used to determine if whether our code actually work or not. You'll need to look at the ruby process. Please make sure the ruby process is actually dodgeball.rb and that application alone.

My data show me that dodgeball.rb uses about 99.9% of CPU.

Now that we're done recording the data, we can start writing some code.

Modify the file named loop.rb in the rubies_dodgeball's lib directory:

class GameLoop
def initialize
@screen = Screen.new([800,600],0,[Rubygame::HWSURFACE, Rubygame::DOUBLEBUF])
@q = Rubygame::EventQueue.new()
@clock = Rubygame::Clock.new
@clock.target_framerate= 40
end
def run
loop do
@clock.tick
@q.each do |ev|
case ev
when Rubygame::QuitEvent
Rubygame.quit
return
end
end
end
end
end

The Rubygame::Clock class is used primary for delaying executions of Rubygame applications. It can also tracks running time. You must specify the frame-rate of your application before executing the main game loop( in our code, we used @clock.target_framerate= ). The method tick for @clock is used for frame-rate limiting to a specified frame-rate.

When you run this program, you should notice a great reduction in CPU usage. It should be a lower than your recorded CPU usage before you modified the code. My data show me that dodgeball.rb uses about a mere 6.7% of CPU. So it work like a charm.

If you made this far, you finished the second part of this tutorial. Well done! In the next part of the tutorial, we'll show you how to how to move images.




Anyway, happy hacking!

Kiba


P.S If you have any problem with the tutorial, please email me at wikipediankiba_________AT______________gmail.com

NOTES: There used to be a lot of content packed into this part of tutorial. It was decided that there are too much content. Plus there are many bugs in the code shown so it is removed in order to preserve the quality of the tutorial.

Tuesday, May 15, 2007

In Between Updates

The premature death of this blog is greatly exaggerated. (Not that anybody thinks we're are.)

Anyway, I want to let the readers know that we're still working on part 2 of the Rubygame tutorial. But it is taking far longer than we thought it would be. I predict part 2 will be scary long in comparison to part 1. It already surpassed part 1 in both words count, lines, and line of code. I blame it on the sprite part of Part 2.

Have no fear, half of the goal for Rubygame tutorial part 2 are already done. I planned to have it out by the end of this week.

Did I forgot to mention that Freegamer linked to us? A splendid blog linked to us and give us some traffic! I am thrilled.

Speaking of traffics; I aimed to monetize this blog. Yes, advertising will be coming to this blogs. So don't be alarmed at all these new text ads and an ads banner when they suddenly appeared. It will be probably coming in a few weeks, or maybe shorter.

Before we let you guys off the hook, we have an interesting tidbit to share with you. If you hadn't notice yet, this blog's entire contents are licensed under the Creative Commons Attribution 3.0 License. Yep, I, the author of this blog given you the permissions to go nuts copying, distributing, modifying, and making a buck or two off my contents. In facts, I highly encourage you to do so. So long as you followed the rules of this license. A bonus: no royalty rate to pay. By the way, I would like a link back to my blog if you did these things. That would be greatly appreciated.

Until, next time; Happy Hacking,

Kiba

P.S If you think this blog post is really bad, let me know! Email me at wikipediankiba_NOSPAM@NOSPAM_gmail.com

Sunday, May 13, 2007

Rubygame Tutorial Part 1

NOTE: This tutorial is replaced by The Rubygame Book.




This tutorial series is a crash course in writing video games using the Ruby programming languages and Rubygame, a game development library for Ruby. It assumes that you have basic knowledge of programming along with knowledge of the Ruby programming language.

If you do not have Rubygame and/or the Ruby interpreter installed, it is suggested that you do so before continuing this tutorial. This tutorial will assume you're using 2.0.1 version of Rubygame.

In this series, we will be creating a dodgeball game using just Rubygame and Ruby as we write this tutorial out. No other libraries will be used. The final game will be licensed under the GPL. This game will be called Rubies Dodgeball!

In Part 1 of this tutorial, we'll be creating a screen and than setting up a basic game loop.


Initialize a Display Screen


We'll start by assuming that everything will be in one directory named rubies_dodgeball.


The first thing you will do is set up the neccessary items to create a rubygame application. After you accomplish that task, you will create a screen, the display window for the game.

Create a file in the rubies_dodgeball directory: dodgeball.rb


require"rubygame"
require"lib/loop.rb"
include Rubygame


Setting up Rubies Dodgeball to use rubygame.

Create a file in the rubies_dodgeball/lib directory: loop.rb


class GameLoop
def initialize
@screen = Screen.new([800,600],0,[Rubygame::HWSURFACE, Rubygame::DOUBLEBUF])
end
end


We set up the display screen with the size of 800 by 600 resolution in the first agurement of Screen.new, next one with no depth, and the last with flags Rubygame::HWSURFACE(It makes a video surface in video memory) and the Rubygame::DOUBLEBUF will enable hardware double buffering. There are other king of flags such as the one that can enable fullscreen mode. Of course, we need to initialize the GameLoop class in order to take effects. This should be placed at the end of file dodgeball.rb


game = GameLoop.new


Once you run the program, it should display a brief display window. Since it has no loop, the program will terminates quickly.

Adding a Loop and an EventQueue

Next, we add an EventQueue with a loop into the game. We modify loop.rb's GameLoop class in the following fashion:


class GameLoop
def initialize
@screen = Screen.new([800,600],0,[Rubygame::HWSURFACE, Rubygame::DOUBLEBUF])
@q = Rubygame::EventQueue.new()
end
def run
loop do
@q.each do |ev|
case ev
when Rubygame::QuitEvent
Rubygame.quit
return
end
end
end
end
end


Rubygame::EventQueue is used to detect keyboard presses, mouseclicks, movements of mouse, and other input devices.There are hundreds of constants that correspond to a particular keyboard keys, mouse buttons, and more. For example Rubygame:K_ESCAPE is for the escape button.

Rubygame.quit() is a method that should be used when Rubygame applications are about to be terminated. Notes that it isn't used for quiting the application, rather it clean up the messes it might have. For example, if you exit while in Fullscreen mode, users' desktop resolution will become that application's dispaly screen size, which is very annoying. Rubygame.quit() helps prevent such annoyance and confusions from happening.

Don't forget to add game.run() at the end of the file dodgeball.rb!


game.run()


When you run it, the application should go on forever, sucking all the available CPU resources that it can get, until you click that X button in the window.

You can download the file here.

This is it, folks. That is all we're going to learn for this part.

What's coming next in part 2!:

How to reduce the CPU resource usage to a saner level

Addition of a sprite system.


Until next time!

Kiba,


If you like this tutorial, you might to subscribe to my blog's RSS feed.

Saturday, May 12, 2007

Welcome to Liberty Gaming

This blog is all about Free software gaming. It will include news, tutorial, and opinions about Free software games, regardless of its prices!

And by the way, freeware searchers, move along, nothing to see here. There will certainally be no proprietary games that will be reviewed on this blog! And for the people who like commercial games, you might see some commercial Free software games in the future. (Although we will probably never see one for years)

What you say? Confused? No problems, I'll refer you to this link to clear up your confusion.

Without further ado, let start blogging!

What is upcoming in Liberty Gaming contents:


A Rubygame Tutorial: A tutorial introducing you to the Ruby programming language and the obscure world of....Rubygame!

We'll have a new review of a game once we spot a promising game to try.