Monday, May 14, 2007

Microsoft FUD Attack

The big news today is Microsoft's attacks on Open Source Software. Microsoft is claiming that various Linux open source software infringes on their patents. Of course, they are not saying what particular patents that are being infringed upon. The reason for not pointing out the violations are multi-fold with the reasons all being related to the simple fact that Microsoft wants to spread as much FUD as possible because GPL 3 is going to totally ruin their plans for subverting open source. You see, GPL 3 has much better patent language which would make any attempt to use patents against GPL 3 non-practical as it makes deals such as the Novel deal impossible so Microsoft can't play the extortion game.

While I personally don't like the idea of patents on software, for the simple fact that software is just the application of mathematics to a particular problem, I don't have much say in the matter. Personally, as it is possible that I could infringe on a patent while creating my own software without any references whatsoever to the patent being infringed, I think the system is fundamentally flawed. The fact of the mater is that in the US, there are software patents. The key question is are Microsoft's claims valid?

I suspect that the predominant reason that Microsoft does not want to specify where the infringements are, besides to help spread FUD, is that a significant number of the patents are obvious in nature (and it is now possible to get patents that are obvious thrown out). Other patents probably have a lot of prior art that Microsoft did not disclose. Finally, the one or two patents that are "legitimate" are probably easy to work around so if they were revealed the infringement would be patched within minutes of disclosure.

On the bright side, the fact that Microsoft is trying to spread so much FUD must mean that they realize that the open source solutions are superior to their offerings (which I am forced to use due to the fact that most of my paying work is for their OS) and they realize that if there is not enough FUD to keep people using Windows, users will trickle away and without their OS/Office monopoly they will go bankrupt as from a historical perspective their monopoly was not a result of quality but of the tie-in with IBM. Had IBM not foolishly babied Microsoft along and Microsoft had to win market share on the merits of their software, they would probably have failed miserably. Mind you, they may have still fluked a monopoly as the best products don't always win. If they did, I would be typing this on the market leading Commodore Amiga computer and the awful x86 architecture would have been put to pasture long ago instead of being entrenched to the point that not even Intel can get rid of it (like they have been trying).

Friday, May 11, 2007

Flash CS3

Yesterday I posted my Mother's Day animation that I created for my mother on BlazingGames.com. This was kind of a milestone, as this was the first ever Flash 9 file that I released on my web site. By Flash 9, I mean that it requires the Flash Player 9 plug-in to view the animation. To create content for Flash player 9, however, there are a number of options available. The official channel is through Adobe, in which you have three choices available to you: the Flex 2 SDK, the FlexBuilder tool, or Flash CS3. The Flex 2 SDK is free (and is going to be released as open source), though is just libraries and command line compiler. The FlexBuilder program is Eclipse with a plug-in GUI. Flash CS3 is the traditional Flash animation program that comes with the various Adobe Creative Suite 3 collections. As I own CS3 Web Premium, I have Flash CS3 and used that for the creation of the animation, even though the animation was created entirely in ActionScript 3. Now is an appropriate time to go over my review of Flash CS3.

Flash CS3 has been reviewed a number of times, yet all of the reviews I have seen seem to miss the biggest reason for getting Flash CS3 which is ActionScript 3 (AS3). What is AS3? ActionScript is the scripting language that is used in flash. AS1 appeared with the release of Flash 5. Object Oriented extensions were "added" to the language with ActionScript 2 that appeared in Flash 7. The third version of ActionScript is a much larger leap over AS2 as it is actually compiled and the Flash Player uses a JIT engine to run the compiled code. This results in significantly faster code execution. The display engine was also drastically overhauled and is now much more flexible to work with. I will cover the display engine in future entries.

Writing AS3 code for me is a huge deal, though sadly the built in editor is still lacking. I suppose Adobe figures that programmers will migrate to FlexBuilder while artists and animators will stick with Flash. As code, including the code for the main timeline, can be assigned to external text files, this division of labor may make some sense. The problem is that there are people like me, who are somewhere between the two, who want the animation and drawing abilities of Flash yet want to write a lot of code so would like the code editing abilities of FlexBuilder, especially code completion. That said, the editor has improved a bit. The big improvement being collapsible code blocks and better debugging. In fact one of the neat things about CS3 is the fact that when the compiler catches an error, it will let you click on the error message and take you right to the problematic line. I, of course, intentionally left some typos in my code to test this feature out.

There are many other reasons to consider upgrading. The Photoshop like user interface, which I initially didn't care much for but am getting use to it now. The cool convert animation into ActionScript 3 code feature. Excellent support for importing Photoshop psd files, which will come in handy if Mary ever decides to do some artwork for Blazing Games. Better video exporting capability. Finally, integration with Adobe Bridge. If you have an earlier version of Flash, I think it is well worth the upgrade just for the ActionScript 3 support.

Wednesday, May 9, 2007

Modern Dungeon Romp functional code posted to repository

A fully functional version of Modern Dungeon Romp has been posted to the repository. If you want to play this early release you will have to compile the program yourself, as it will not be released on Blazing Games this week. Tomorrow's release is actually going to be a Mother's Day animation that I put together. The Mother's day animation that is going to be released did not take up any of the twenty hours that I allocate to Blazing Games. The Dungeon Romp game will have some additional features and there is a bug that I discovered. The changes I will be making will be the addition of a title screen, the reduction of the dungeon size so that the top and bottom of the dungeon will no longer be cut off, the map will be hidden, the graphics will be adjusted, and the new game bug will be fixed.

The title screen, while not that necessary, is a nice finishing touch. It also makes death in the game more interesting, as when you die, the title screen will come up where you will be able to choose from new game, or continue from marker. The title screen class already exists so this will actually be a fairly minor change.

The change in the dungeon size will also be a minor change. Right now the 16x16 dungeon size is just one tile too tall for the resolution used. The new version will use 16x15 floors, so the entire dungeon will fit on the screen. An alternative would be to use slightly smaller (30x30 instead of 32x32) icons, but I prefer having my icons 32x32.

The new hidden map feature will hide the areas of the map you have not explored. This will add an additional exploration aspect to the game. This will also mean that you will not be able to plan your route to the items and exits, and avoiding monsters will be more difficult.

The graphics will be touched up so that the monsters no longer blend into the floor. I am also going to try to make the background look more like a series of caves. This has the added benefit that it will make the game look distinctly different from Modern Melee Combat.

Finally, I will be fixing a bug. Right now, if you finish the game (or die and decide to start a new game) the new game starts you with all the spells that you have memorized. This bug fix will clear out the spell list when you restart the game. While this bug fix will also fix this problem with the classic version, I probably will not bother to re-post the fixed version of the classic version of the game unless someone actually complains to me about it.

Tuesday, May 8, 2007

Java Strikes Back

The Java One conference started today. The big announcement today was the JavaFX platform. This is a set of libraries and a scripting language that will make it much easier to create Rich Internet Applications. While Java is fairly solid for server side work, Java applets have been pretty much put on the back-burner. While it has always been possible to do everything that you can do in Flash using Java, the amount of work required to accomplish the animation effects that could be done in minutes with Flash were quite high. As a result, client side Java has dwindled away. JavaFX is an attempt to reverse this trend and make Java the format for the Internet. This is open source and the alpha can be downloaded from openjfx.dev.java.net if you are interested.

As many people already know, I have been slowly transitioning over from Java to Flash so I found this news really interesting. What does this mean to Blazing Games? In the short term I will continue my work on the existing group of projects that I have announced. When I start new projects in the future, however, JavaFX may be the route I choose. That being said, it is also possible that a future project may be done in Silverlight, but anybody who knows me knows that this is a much lower probability unless cash is involved.

I am actually trying not to start on any new projects for the Blazing Games site until all the existing unfinished projects are finished. Paid work is a separate matter, so if you want to hire me to work on a project for you, let me know. At the moment the Blazing Games projects includes One of those Weeks, Coffee Quest before 4, Coffee Quest 5-6, Coffee Quest Revenge, The Dozen Days Pentalogy (which will include the sequel to Fleet), and the Ultimate Retro Project. I am probably missing a game or two in that list but as you have already figured out it will be a while before I start any new projects for the Blazing Games site.

Monday, May 7, 2007

Double Dungeon Review

A while ago I purchased this game from the Nintendo On-line Store as it is the only non-twitch role-playing that was available at the time. At the time of this writing, this is still the case. When you consider the huge number of turn-based RPGs that have been released for the older consoles that the Wii Store supports, there is no reason this should be the case. I am hoping that this will not be the case for much longer as Double Dungeons is not what I would call a great RPG. It is a very tie consuming game, however, but you can get much better role-playing games for free, so I am not sure it is worth 600 points.

The game is a 3D dungeon exploration game. The goal of the game is to find the key to the boss and then beat up the boss. To prevent you from achieving this goal are a variety of stationary monsters that block your path. When you defeat these monsters you get gold. Gold can be used in inns to recover your health or in stores to upgrade your equipment. Some of the monsters re-spawn so if you are backtracking you may need to re-fight the monsters. Combat is fairly simple as the only thing you can do is attack with your current weapon or use one of the eight items that you are carrying.

One of the nice things about this game is the fact that there are 22 different maps, with 21 of the maps being playable in any order you desire. To get to the final map you must enter a 21 symbol code that is discovered one letter at a time by finishing the other 21 maps. The maps are broken into difficulty levels, with the more difficult maps being larger than the easier maps. In fact, the later maps are huge! With there being no auto mapping feature, this means that you have to map by hand. Sadly, there are no coordinate information and the larger maps will not fit on a single sheet of graph paper. If you have an older laptop, you can do what I did and make your map using a tile map editing program such as Coffee Quest Construction Set.

The game is called Double Dungeon for a reason. The reason is that you have the option of playing the game with another person. It is a split screen with each player controlling their own character. Players start at different locations and it is very easy to get lost so cooperative play doesn't really happen. Besides, its hard to convince someone into playing the game with you.

Overall, unless you are desperate to play a turn based role-plying game on your Wii, I would not recommend purchasing this game. I suspect that the wait for a good non-twitch RPG will be over relatively soon. If I am lucky, in a week or two!

Friday, May 4, 2007

Can a number be illegal?

Lets pick a number at random. Lets say 13,256,278,887,989,457,651,018,865,901,401,704,642. It is a nice number, but other than being a very large number there is nothing significant about it. Had I chosen a slightly smaller number I would suddenly have to worry about being sued for using that number. Why is that the case? You see, a certain company is using the slightly smaller number as an encryption key to protect certain commercial products. When this number got released to the public, this company started sending out DMCA takedown notices to various sites and blogs that published this number. While I am not a lawyer, my understanding of the law is that it is not possible to copyright or trademark a number. It is not like that number is useful for anything anyway. While it is true that if someone knew what that number was for, and had software for decrypting the encoded files, they could plug in this number to do this. That said, the number by itself is just a number. What does this have to do with game development? Well, it leads right into something that has been pissing me off lately. Copy protection.

As a person who has created a lot of intellectual property, I understand the need to protect that property from theft. At the same time, I am also a consumer and as such I am aware of how annoying it is to find out that you can't use the item you just purchased the way you want to use it. Sadly, far too often copy protection does prevent legitimate user from using the software they way they want. As regular readers know, I just purchased an upgrade to CS3. While the upgrade price was significantly cheaper than the full price, it was still very expensive to me. This software has some copy protection built into it. You are required to go online to activate the software. Not all of my computers are connected to the internet, so having to connect my main work machine to the internet potentially exposing the computer to nasty stuff is annoying, though less annoying than having to phone in and enter a 50 digit activation code. Another problem I have with this is that it ties the software that I legally purchased to a single machine. Yes, you can deactivate the software and then install it on a different machine, but what happens if your hard drive crashes, or some other disaster befalls your computer? You, the person who legally purchased the software, have to jump through hoops to get the software you paid for to work on your replacement machine.

Meanwhile, the pirates have written a patch for CS3 so anybody who wants to steal this software can simply grab the patch and not have to worry about the copy protection at all. Other than finding a copy of the pirated version of the software, which if they are a dedicated pirate they didn't even have to look for, they have no hoops which they have to leap through. So what is effectively happening is that I, the legitimate customer, am treated like a criminal while the real criminals get the user experience that as a paying customer I should have! Sure, but how often is a hard drive going to crash? Actually, all hard drives that currently exist, especially the flash based ones, will eventually die so the odds are 100%. The worst part is that the copy protection on my development tools is fairly mild compared to DVDs and most downloadable music.

I use to buy a lot of DVDs, but now that I have less and less time to watch movies, this has dropped right off so now I only purchase a few movies a year. These are copy protected which is annoying as DVDs are very easy to damage. There is software that can remove this copy protection and allow me to make back up copies of the DVDs that I have legally purchased, but I am not sure how legal this software is in Canada (I know my American friends can't use this software). If backups were the only issue, it would be just a major frustration, but far too often the situation is much worse. You see, at the start of the DVDs is a copyright notice telling you not to steal this material. Strange thing to have considering I JUST LEGALLY PURCHASED THE DVD SO WHY WOULD I NEED TO STEAL IT? You can not skip over this warning. Next comes commercials for other movies and DVDs. If you are lucky, they will let you skip over these. This leads to a bunch of questions. Did I not just pay a lot of money for this DVD? Was the price more money than I would pay for a commercial free movie channel? Did I not pay more for this DVD than for other budget DVDs that have no commercials at all? What possible justification is there for forcing me to watch commercials? Guess what? The pirated versions don't have the commercials or the warnings, just the movie that I payed for. Again I as a legitimate customer get the shaft while the pirates get what I am suppose to be paying for.

Downloadable music of course has the DRM issues tied to it. This means that you can only play the music that you purchased on a few devices. Worse yet, not all devices work with the DRM format. As there is more than one format for DRM music (Fairplay, Plays for sure, and whatever the Zune format is called) with the mp3 players only supporting at most 1 of the formats. Thankfully, in a few weeks EMI music will be available DRM free from Apple's iTunes music store. Let us hope that this will be the beginning of the end for annoying copy protection. After all, copy protection does NOT stop pirates, it only harms the people who are actually paying for the content.

Tuesday, May 1, 2007

Making One of those Weeks episode 14, part 3

More of Melee Combat has been posted. I have uncovered a few minor bugs, but nothing major yet so the chance of release this week is really good still. This means that the few people who follow this blog will be getting the next chapter of Making One of those Weeks at least a week early. Lets finish off the chapter.

Rendering a forest is the same as rendering other three-dimensional views, except the walls are trees. This actually makes the rendering easier. The trees I use are symmetrical. This means that unlike a wall, all the different views (left, right and center) of the tree are the same image. This makes a three dimensional forest very easy to draw.

To help with the variety of the forest, I tried to have three slightly different kinds of trees. The first tree is the normal tree. The other two are a taller version and a fatter version. While some people may have noticed the different trees, most people didn't notice any difference. In other words, a better approach at getting variety in the trees would have been to use three distinctly different looking trees.

One thing that I never even considered doing would be to grow the trees algorithmically. This is largely because the short amount of time that I have allocated to the creation of these episodes. Randomly generated trees could easily be seeded based on their location within the map, so every time the level is played, the trees would look the same. The quality of the trees could also be based on how fast the computer is, so faster computers could have more tree generation iterations, though I have never actually written an algorithm to generate a conifer (though I have written generators for deciduous trees and ferns) but I have seen such generators.

Because the renderer is the same one used in the earlier game, just with a different tile set for the "walls", there is no real need to go into the code of the game. The only real difference is that I added an additional depth level allowing the player to see deeper into the forest.