Loading...

The blog is being migrated and merged with multiple Imphenzia blogs so the format and content will be inconsistent for a while.

Performa Cars released as Freeware

The old 2D top down racing game Performa Cars (previously known as Computer Touring Car Championship, or CTCC) has been released as Freeware =)

The game features 18 cars which can be tuned between races by purchasing parts such as turbos, performance chips, intercoolers, suspension, tires, etc.

Cars will take damage upon collision affecting both the visual look of the car as well as performance. If you don't visit the pit lane for repairs before it's too late you risk blowing up for a DNF result.

Play it as a single player against up to 7 AI controlled computer cars or two players locally using split screen with up to 6 AI controlled computer cars.

12 different circuits ranging from small sand tracks to large race tracks allow for a lot of fun and tight racing. The track design was inspired by the 90 degree angles of Supercars on the Amiga. Some tracks also features hazards such as trains that I suggest you either beat to the train crossing - or stop until they have passed unless you want your car to be permanently destroyed.

The long story


I originally started developing the game following a motocross accident where I broke my collar bone back in 2001. Initial progress was great and I had a lot of energy and passion for the game. It was one of my first attempts to make a game and I learned a lot of useful stuff in the process.

I still have a lot of passion for the game genre (top down racers) but I feel that it is not worth to put any additional efforts into this particular game any more due to a number of reasons.

First of all, the game uses non-accelerated 2D graphics and it was designed for computers made in the mid to late 1990s. Modern computers of today have awesome performance, but the 2D engine in Blitz Basic (the language used to develop the game) don't take any advantage of this new performance unless you re-code the game to use 3D accelerated 2D graphics - and that requires a fairly large rewrite due to how Performa Cars was designed.

Secondly, I always wanted Performa Cars to be a multiplayer game playable across the internet and LANs. Unfortunately I went deep into development without first researching multiplayer gaming and by the time I nearly had a finished game it turned out that it just wasn't possible to make it into a networkable game.

Why you may ask? Well... As I mentioned above, I was new to game development at the time and I based the logic updates on the assumption that the game would run at a constant frame rate of 60FPS. As it turned out, of course, computers run at different refresh rates which then meant the game would run at different speeds on different computer. That's NOT good =)

Another problem basing the logic engine on the screen refresh rate was that the game would not only run at different speeds on different computers, the cars also behave differently - skid more on some machines - a lot of grip on another machine.

I tried to fix the problem by analyzing the refresh rate by calculating a multiplier value for the game logic. That sort of works, but that's not how you do it =)

Today I know better. Keep the game engine running at a set frequency, say 100Hz, and tween the graphics to make it smooth. Making that happen for Perofma Cars would mean a large re-write again.

All this in mind; I decided to release the game as a freeware for everyone to enjoy despite the glitches being an alpha version.

I will now be focusing on AstroFighter.net - a game where I avoid all the pitfalls I learned about during Performa Cars. It runs with a separate logic engine and 3D accelerated 2D-style top down graphics and, most importantly, I had it running in multiplayer from the very beginning to ensure the entire game is developed for that purpose.

My plan is to develop AstroFighter.net with a clear conscious that Performa Cars at least is available as a freeware for everyone rather than aging year in and year out on my hard drive.

If all goes well - I will also take my knowledge from AstroFighter.net and reboot my passion for top down racers and make a modern version of Performa Cars designing it the right way from the start.

But for now - enjoy Performa Cars =)

Astrofighter.Net



Astrofighter.Net is my new game development project for learning Unity and C#. During the past week on every spare moment I've been able to find I have been developing and creating assets for the game. When I'm not on the computer I am coming up with about a billion ideas for the game, or at least so it feels like.

If you want to read about Astrofighter.Net directly - skip this next section =)

The dangers of being in a situation such as mine is starting a tremendous amount of projects and never finishing them. With "a situation such as mine" I mainly refer to the wide spread of hobbies I have, all of which must fit in to an otherwise normal life. Non-computer based hobbies aside (motocross, photography, martial arts, spending time with wife, two children, and friends) I am, as many of you are aware, currently dedicating much of my time to:

  • Being the independent electronic artist Imphenzia with 85 tracks and 6 album releases to date - this includes maintaining my custom created artist site, maintaining presence at Spotify, Youtube, Facebook, Twitter, Soundcloud.com, Soundclick.com, and Ubetoo.com. The custom web site is created in PHP and I think it's the 6th generation (each being a complete rewrite.)

  • Being the composer Imphenzia Soundtrack with over 250 songs/loops and 260 sound effects available for licensing - this also includes maintaining the custom created site.

  • Being the game developer and graphic artist Imphenzia Games with completed 3 game releases (Beat Ball, Beat Ball 2, and Netris.) Again - maintenance of the custom created web site for the official site and Beat Ball 2.


I'm proud of my achievement over the years, especially fitting all of it in next to my every day that normally takes up 8h + 2h commuting every weekday. I have one project, however, that has been my bad conscious for a long time. It's been nearly 10 years since I started "Computer Touring Car Championship" (CTCC) which was later renamed to "Performa Cars." This game is still unreleased but as I recently announced in a blog post I will release the game but without network multiplayer (only split screen), and it will be freeware since it's using such dated technology.

I have to accept defeat when it comes to implementing multiplayer in Performa Cars simply because I didn't consider the nature of network gaming when I started making the game. It would take a complete rewrite of the game (more or less) to make networking work and it would not be time well spent since it's using unaccelerated 2D graphics that probably utilizes less than a single percent of today's graphics cards. Seriously.

There is new hope, however. I've used BlitzPlus, Blitz3D and BlitzMax to develop Beat Ball 2 and Performa Cars and I've really enjoyed the Blitz-range of products over the course of 10 years. Lately I discovered Unity3D and I first dismissed it a year ago. Who want's to make a game in an "editor" I thought?

How to waste time


No, I thought. I want full control of my game development. I need to see every line of code and be sure I structure the games exactly how I want. This is how you waste a lot of time by the way =)

In Unity I trust


When I gave Unity a second chance, I looked at a whole bunch of video tutorials on YouTube. The tutorials explained Unity in a step by step manner, going through the editor, all the windows, hierarchy, types of game objects and so forth. Unfortunately I can't remember which series of tutorials I watched - but Google the topic and I'm sure you'll find many great tutorials. Giving the step-by-step demonstration of Unity a chance helped me tremendously and I fairly quickly started to make some simple scenes with a bouncing ball, colliding objects, particle systems, etc.

My ultimate goal is to re-create "Performa Cars" as what I refer to as a "2D-but-3D" game with the multiplayer functionality it so much deserves. Using Unity instead, I'll be able to cut down development time and also make great use of the power of modern computers and graphics cards.

My "2D-but-3D" approach, as seen in Beat Ball 2 and in the coming Astrofighter.Net game, is making the game look like an old-school 2D game but using the visual and physics power of 3D engines. I think many developers are too tempted to tilt the camera down into the 3D scene since "it's possible." And I agree 3D games are awesome, but I am fighting the temptation to tilt the camera as I want to make 2D games and I know there are a lot of fans of 2D games out there so this one is for you =)

Rather than jumping straight into making the new top down racer in Unity I wanted to make sure I know how to develop a multiplayer game. This is why I am first attempting to make a simple multiplayer space shooter game.

Astrofighter.Net


As I mentioned early on in this post, I've dedicated a lot of my time the past two weeks when I started a real stab at creating a game in Unity. I am amazed at how fast I am able to make progress in Unity being such a novice at it. In just a matter of two weeks, Unity has enabled me to create the basic foundation of space combat game that already supports server side authoritative network multiplayer with client side prediction.



I captured the footage above today as I tested the current build of the game with two of my mates. It runs very well already although latency is very low at 30ms so I'll do more thorough testing using a 3G modem with 150+ ms latency. The YouTube version of the video is choppy since YouTube reduces the frame rate from 60 FPS to 30 FPS. You can download the 60 FPS H.264 version of the video to see exactly how smooth the game flows.

So far I've implemented the basic networking code, the spawning of player ships with the choice of two weapons. A Blaster and an 80mm Gatling Gun Cannon =) The blaster is single fire and the Gating Gun fires 800 rounds per minute. There will be loads of ship types and weapons with upgrades - I have an excel sheet with loads of goodies and ideas.

The game uses true physics with rigid bodies and real life forces. I'm really happy with how easy Unity is allowing me to just assign my ship, for example, a weight and what force it should apply during movement and the physics is just "taken care of." It also looks very promising how I can use the physics aspects even during multiplayer.

To prevent cheating, and to ensure collisions don't behave differently, the server takes care of all the physics and collisions in an authoritative way. The clients also animate the objects but if a cheating player hacks the game to move twice as fast on his own computer the server will warp the player back to where he belongs. Feminists can attack me now since I referred to the cheater as "he" but surely women don't cheat, right? =)

Is it a felony to have this much fun?


I'm having so much fun with this project that I even feel stressed when taking a break. This lengthy blog post is also hogging time from Astrofighter.Net but I want to make sure to post about my progress.

Today I also registered Astrofighter.Net - and I know I know - there was a game from 1980 named "Astro Fighter" but I don't have a space and I added ".Net" to emphasize it's a networking multiplayer game.

Networking with Unity3D

For years and years I've been wanting to create a network multiplayer game. Ok, I already created one about 10 years ago called Netris but that is a type of game that does not rely on any sort of speed or major synchronization of game data.

I tried to implement network multiplayer capability to Performa Cars (previously named "Computer Touring Car Championship") - but I had to throw in the towel in the end. Too many design issues with the game itself (how the physics was implemented) and lack of proper networking libraries for Blitz3D proved to be too big of an obstacle.

New hope


Today I bought an asset package called "Ultimate Networking Project" for Unity 3D. It's a combination of a tutorial and a bundle of useful scripts and functions to simplify multiplayer networking in Unity. I've read through the 25 page tutorial and looked at the included examples and I'm very hopeful to be able to create a multiplayer game in Unity.

What appears to be promising in Unity is built in functions for interpolation/extrapolation of object positioning along with client-side prediction and server authority. If these terms are alien to you, let me assure you that they were to me as well when I started to make Performa Cars. It's a world of hurt if you have to learn and develop all these functions by yourself - but as I mentioned, Unity appears to have this under control.

My first project is to create a simple top-down space shooter (using the low polygon 3D spaceship I recently designed.) The purpose of this project is to learn enough about Unity and networking to have another go at the top-down racing game I've always dreamed of creating.

Performa Cars (ex. Computer Touring Car Championship)



It was after I broke my collar bone in a motocross accident in 2002 that I decided to create a 2D top-down racing game. I named the project Computer Touring Car Championship (CTCC) and for nearly 10 years it has been in the development pipe. In recent years the game also got it's proper name, "Performa Cars."

You would maybe expect a masterpiece after 10 years, but the sad fact is that the past 8 years or so very little development time has been put into this particular game because a release has been hindered by development problems related to online network multiplayer gaming. The original design of Performa Cars simply doesn't allow it and rather than the game remaining unreleased I have finally made a big decision.

I am now putting the finishing touches on releasing Performa Cars as a FREEWARE. It'll will also be classified as an "Alpha" release since it may still contain some bugs and multiplayer is only possible through the split screen functionality local on the same computer.

I don't have much time at the moment to provide you with any details - but I should be able to announce the official release shortly. Apologies to those of you who have waited for nearly 10 years =)

Web site '2K8' progress

Today I've spent a good few hours getting more comfortable with CSS and I must say it is a huge step forward compared to only using HTML as it is extremely easy to keep consistency in the design and position different elements. At the same time as I am learning CSS I am converting from ASP to PHP. I can produce ASP code much faster, but PHP has a much better array of commands and functions and is also widely used on both Linux and Windows web-hotels so you don't have to restrict yourself if it were to be necessary to move.

I have high hopes for the new web pages and it's fun to mess about with! Due to having many interests I am fortunate enough that my interest does a "round robin" and at the moment it's web design that I'm enjoying, a couple of weeks back it was all about music and releasing "Illusion" and in a week or two I'll probably be programming away with Performa Cars.