QB Express
Issue #19 ~ March 27, 2006
"A magazine by the QB community, for the QB community!"
In This Issue
Contributors
- Pete (Editor)
- MystikShadows
- DrV
- Seb McClouth
- Tunginobi
- Rattrapmax6
- Imortis Inglorian
- Syn9
- Lachie Dazdarian
- Nick Verlinden
- Stormy
- Michael Calkins
- Oracle
- Rick Clark
- mennonite
- DrV
- Regular Columns
- Articles & Editorials
- Tutorials
From The Editor's Desk
Written by Pete
It's here! At long last! It's finally here!
I will now formally apologize for the lateness of this issue; I wanted to get it out by the end of February, I really did, but time comes at a premium these days, and things like... work... and sleep... unfortunately came first. At the end of January, I began working 11 - 14 hour days every day of the week, and I saw my free time evaporate to zero. (It seems to happen to me a lot... for some reason I like to put too much on my plate, and then a few bites in, I realize that my eyes were bigger than my stomach.)
But alas! You don't care about my excuses, you just want to get to the goods. And the goods come in no short supply this issue, let me tell you. We've got some of the best tutorials and articles ever features in QB Express this month, more stuff than you can shake a stick at (more than 300KB of text alone in this issue)...which almost makes up for the lack of an issue last month. And that's not to mention the fact that we're kicking off the Qlympics 2006 this month. It's a fantastic issue, if I do say so myself. Enjoy!
Submit To QB Express
You all know the drill. This magazine can't exist without people SUBMITTING articles, editorials, tutorials, reviews, news and feedback. This is not just a solo effort by me... it's a group effort by people throughout the QB community. If you have anything to submit, or have time to write something, DO IT!
If you want to write about something, but can't think of a topic, or need inspiration, check out the "Official QB Express Article Requests" thread! There have been quite a few articles requested -- and even if none of them strikes your fancy, we can help you come up with something that you would like to write about. If you're interested in getting your own monthly column or just want to write an article or two, by all means, do it! Anything that is submitted will be included!
I also want feedback and letters to the editor regarding this magazine. I want suggestions and critiques. What do you like? What don't you like? What could be done better? Let me know!
All submissions and feedback can be sent to pberg1@gmail.com. You can also PM me on the Pete's QB Site or QBasic News message forums. If QB Express is going to continue to be so good, YOU need to contribute!
-Pete
Letters
Letter From MystikShadows
Wow, I'm still sitting here, wondering how #18 got to be so big in so little time. And like you said, not only is it big, it's just about the best issue (quality wise) there has been. and all this, in 16 days. I tip my hat to everyone that made this issue possible. Like you said, they should all pat themselves on the back (I patted my back already ;-) ). I mean I'm in Aww in what we've done in the available time we had. Superbe work if I do say so myself. IF everyone would put the energy they did in those 16 constantly for the whole usual month, I wonder what kind of issue would pop up ;-).
I'd like to start with Mark's "About QBasic.com" if I may. Not to bring back that old conflict, Mark already knows some aren't happy with what he's done with QBasic.com. But I'm not one of those people. The first thing I hated the most was that seperation within the Qmunity. Not seeing people I used to see all the time really hit me. I know for sure that this wasn't the reason why v1ctor created FB in the first place. I'm not exactly sure what happened exactly in the past 7 months or so. But I do know this, what Mark did with QBasic.com is exactly what we (all of us there were the Qmunity) need. Stop isolating each other, I don't really care who did what when to cause this, but I think it's lasted long enough. so I think what Mark did was outstanding work towards accepting both QB and FB alike. if you want to keep on using qbasic, go right ahead, if you want to move to FB awesome, just respect each other's decision, simple as that no? I'd like to see more of this myself on more sites as well.
The awards were given to those who really deserved them this month I believe. We all know now how much work Adigun put into AFLIB2 and How much work he is still putting in it documenting the whole library. And I have to say that the screenshots on his website really speak for themselves a picture is worth a 1000 words for sure. I hope everyone went to check them out because, wow, with every new added feature AFLIB2 just kept on becoming completely awesome by all standards. And well FreeBasic.net is the fastest growing website/forum I've seen in a good while. Rightfully so as well. Questions get answered (unless they have to do with PCOPY in SCREEN 0 LOL) sorry, I had to say it hehe. Seriously though, they really do get answered and fast, and that's also part of what makes the freebasic forum as good as it is today. . So yes, they definitaly deserve this award, no two ways about that.
The tree tutorial from syn9 are very well explained, thorough, detailed with plenty of code, just how I like them. From his 1st 4 parts I've learned alot, as most people reading this might know, I'm not from a 3D background (atleast not as much as I might have liked to be), so I'm really enjoying what I'm learning from these tutorials and any other I've read so far. this was part 3 and 4 I can't wait to read part 5, 6, 7, and so on hehe. excellent work there syn9.
The Wallace Visual Editor Tutorial. Well for one thing, I didn't know about it hehe. So when I read his tutorial, I discovered but the tool and how to use it. How complete a surprise is that? Very clear tutorial too if I do say so myself. He really took us step by step paying attention to details and I think very much succeeded in making his tutorial crystal clear and easy to follow. Great work and now that I know it exists, I just might start using it hehe. Thanks for this contribution Wallace.
And that brings me to Moneo's TRUE/FALSE TESTING. One thing I learned in my programming life and career is that when the voice of wisdom and experience speaks, you better shut the hell up and listen. And Moneo is nothing less than exactly that, the voice of experience. I don't tell him that all the time and on every posts he makes, but when I see a post made from him, I really sit down and pay attention to what he has to say, to me, or to someone else. Like I told him in your forum, I just wish he would have written that tutorial 31 years ago when I started programming. It really is, by far, the best, cleanest, easiest to follow explanation of the real TRUE/FALSE testing I've ever seen in both my personal and professional career. An absolute "chef-d'oeuvre" (this means a real masterpiece). Awesome creation Moneo, I'm looking forward to reading, hopefully, many mo re tutorials from you.
In that same line of thought. we have rdc's "A Closer Look at Managing Complexity Program Size and Organization". No matter which way you slice and dice it, programming is ALL about managing complexity, not just about generating code and praying things work when you compile it. I really like the way rdc (really disfunctional coder hehe) explained the concept and theories in his article. Basically, grab control of the code right from the start and keep it all the way to the end of the coding phase. I can't wait to see the rest of his series. rdc, you've got a fan now.
And to finish this off, Eclipzer's "Pointers In FreeBasic". Those than know pointers probably know just how hard it is to explain no matter what the language. In most schools this is usually one of the toughest parts of programming because they teach variables then suddenly throw in this pointer notion where your variables aren't variables anymore, they are just memory addresses to where the real data resides. those that know pointers know what this difference is, but to those learning pointers for the first time, it's really a big step. And I'd like to say that Eclipzer's tutorial seemed to have convered that aspect of programming in a unique yet rather clear way. If some people tried to learn pointers but still didn't quite get it, read this tutorial, it just might be the light at the end of the tunnel you've been looking for. Very well written and explained. Great Work Eclipzer.
One thing I didn't thing when #17 came out was that 1. we'd have a QB Express to read un January and 2. that we'd have such a great quality material to read in such a short time. This are the types of situation where I LOVE being proven wrong. And boy was I ever proven wrong. I'll never underestimate the potential of the Qmunity ever again :-). And well, let's not forget the main man behind it all, Pete himself :-). Without contributions the magazine would be small, but without out, the magazine would not be. :-).
MystikShadows
Stephane Richard
Heheh, it's ironic reading this letter now, which was focused primarily on the short 16-day turnaround time for #18, considering that this issue is over a month late. Oh well. I've discovered that when you go from working 0 hours a day to 12, you have much less time for your hobbies. :) Anyhow, great feedback on the issue as always. I always look forward to your letter after every issue!
-Pete
Letter From Seb McClouth
Hi Pete,
First and all, hows you? You've been doing like a-hell-of-a-jobS (mind the 'S') lately, how do you keep up? Doesn't it make ya crazy?
Me, I'm just keeping up at work. I found my drive (joy@work) back.
McClouth Software, as I have founded my software programming company (one man company that is, currently), has been working on a low profile lately.
Qbinux is currently on hold, whatever you call on-hold anyway. I've been doing some things around it. Since Novix (link here to novix.tk) is a mayor (let's say 99%) of Qbinux, I've been trying to understand Novix. Simple because the 50 attempts I had on building Qbinux gave the following problems:
1) out of memory
2) out of stack space
3) missing routines
4) etc.
Currently I have a working (okay 40% working) boot, which is able to detect some hardware onboard...
A fully functional login routine. A prompt which can only process the command 'shutdown'.
So not really much.
I'm gonna work some more on that thing.
I'm not gonna make a promise here thou... But before the end of March I'll be (damn, I did make one) giving out a tech-release.
Next QBExpress I'll be telling more about the QFS (Qbinux From Scratch) project.
Until then!
Too bad to hear about the delays and problems you're running into! I hope you got everything up and running...since it is now the end of March, after all (tech-release, heheh?). Anyway, thank you for the update!
-Pete
Letter From Michael Calkins
Hello, Pete Berg:
This is a response to, in QBE #18: "TRUE/FALSE TESTING" by Moneo
I was happy to see this article. I feel that these matters are vitally important to proper understanding of QBASIC. I feel Moneo did a fine job in writing it.
However, I feel that the wording of rule #3 was a fuzz confusing.
"RULE #3: However, when a boolean expression is used as a value, assigned to
a variable or output in any way, QB will convert the result, after
evaluation, to TRUE (-1) or FALSE (0)."
I think something like this would be more accurate:
"RULE #3: The results of relational opperations are always 0 (false), or -1
(true). Relational opperators are =, <, >, <=, >=, and <>>."
But anyway, good work, Moneo! These matters, bitwise logic, true/false, Boolean algebra, integer arithmatic, binary numbers, are extremely vital to QBASIC programming.
Regards,
Michael Calkins
I have to echo your sentiments; Moneo's article was fantastic. But I think your suggestion for Rule #3 is great and really helps clear it up quite a bit. Great work!
-Pete
Letter From DrV
I just want to let MystikShadows know that his MIDI article in QB
Express #18 was the absolute best coverage of the details of MIDI files
I've ever seen (and I've read quite a bit on the matter) - the sort of
article I wish I would've had five years ago. :) And, of course, great
work to everyone who contributed; it was an excellent issue, as always.
-- DrV (Daniel Verkamp)
I agree with you 100%. MystikShadows is a phenomenal writer -- thorough and easy to understand, and best of all, he's reliable and consistent. I too am a big fan of the MIDI series, and can say with complete confidence that it is the best MIDI tutorial ever seen in the Qmunity. Three cheers for MystikShadows!
-Pete
Letter From Oracle
Hello all,
First, a short introduction. My alias is "oracle" and I used to be in
the QB scene a few years ago. I'm the webmaster of qbnz.com, and I
also worked with TurboFX on Total Destruction 1 and with Neo on Total
Destruction 2 (which never got released, but was still looking awesome
- if Neo still has a copy I urge him to release it so maybe it could
be finished one day!)
I'm writing in about the qbnz.com website. I know I said before that I
would stick with it, but unfortunately sometimes life doesn't work
with you on these things. I've been sidetracked by other things and
qbnz has languished for a long time.
But I'm determined to not have qbnz.com die the same way that
qbasic.com did (I see it's back now however - congrats to who ever
pulled that off!). It's in the first google page when searching for
qbasic, so it would be great if when people visited it they would find
a still active site.
So I'm putting out a call for help: If you want to manage, code or
design a qbasic/freebasic website, please get in touch with me! You'll
have a relatively free reign to create new website, while I would
handle the server side management and payment of any costs. The server
has unlimited disk space, PHP and MySQL, so you're not constrained
there.
So if you're interested in helping, or have any thoughts or queries,
please get in contact with me on the QBN forums.
Oracle
Sounds great! This truly is a great opportunity for an up-and-coming QB/FB coder, and I hope you get a lot of responses. QBNZ is still one of the best QB sites around, and it's been tough seeing it languish for so long. Hopefully with a little help you can help restore it to its former glory!
-Pete
Have a letter for the editor? Send all your rants, raves, ideas, comments and questions to pberg1@gmail.com.
Express Poll
Every issue, QB Express holds a poll to see what QBers are thinking. The poll is located on the front page of Pete's QBasic Site, so that's where you go to vote. Make sure your voice is heard!
What is the best QBasic game developer of all time?
With the help of Lachie Dazdarian, I've decided to run a tournament to find out who the community thinks is the greatest QB game programmer / programming group of all time.
The two of us have nominated the 50 top QB game developers, who we feel deserve special recognition for their contributions to the QB gaming scene. From these 50 choices, YOU are going to vote to select the greatest QB game programmer. The winner will receive a special award at the Qlympics 2006, which will take place in QB Express over the next few months.
I've randomly split up the nominees into five divisions. You will get to vote for the top developer in each division, and then we will have a final vote between the five finalists.
So, without further ado, here are the nominees:
DIVISION 1
Aleksander Trojanowski (ATTE series)
Bulma Produktions (Suds Skins 1 & 2, Johnny Abbot's Sex Adventures 1&2)
CMC (DarkPhear)
Hamster Republic (Wandering Hamster, SpitWar, RPG, Cowbobs)
Hyper Anime (BAkuen SakuRu, Kunio Kun)
Pieslice Productions(MUX, TerraScape)
RelSoft & Adigun A. Polack (Frantic Journey)
Shattered Realm Productions (TWIGZ Engine, The Great Escape)
TopGun Software (Space Commando 1&2)
Typosoft(Ped xing's Quest, Sumo, SuperSumo 1&2)
DIVISION 2
Darkness Ethereal (Mattress Warrior, Secret Of Cooey series, In The Nocturne, Mysterious Song, Lianne in the Dark Crown, Legend of Lith II)
Eric Carr (SpinBall)
focus ZERO (Monkey Blast!)
J.B. (Sonic Xtreme)
Master Creating (Shadow Of Power, Diamond Fighter IV)
M \ K Productions (Pieces 1&2, Bob Saget Killer 2000, Fury)
Na_th_an (Jill The Goddess, Lala Prologue, Oytkator's Plans)
Pantera55 (Elysian Fields)
Pasco (Groov Buggies, France '98 World Cup Soccer)
Sasha Vukelich (Dynamic - The Colonization of Jupiter)
DIVISION 3
Piptol (Ghini Run, Squealer TNT, Kingdoms)
Future Software (BomberZone, Zelda Clone, Cobra, Space Invaders)
Jocke The Beast (Dark Woods 1&2, Mirkwood)
Lachie Dazdarian (Detective Academy, Ball Blazing Fantasy, Rocket Fuel Mayhem, Dark Quest, Another World Memory, Run 'Em Over, Pong Worz)
Mark Hall (ARC Legacy)
Oren Bartal (Super Stack, Ultimate Super Stack)
syn9 (ZeroG)
Stefan Hendriks (Arrakis)
Terry Cavanagh (The Hunt, Black Hole)
WisdomDude (Hack-Man 2&3, Cyber Chick)
DIVISION 4
BINARYmagic (Alien Terror, Anaconda)
BjM Software (DreamScape)
Danny Gump (Mystical Journey, Super Mario World Clone)
Jason Gould / The_Brain (Puz, Peanut Patrol 2)
JAWS V Soft (Mini RPG series)
Mike Snyder (Lunatix, Lexter 1&2)
Nekrophidius (Wrath Of Sona, Two Lords)
PHAT Kids(Kids of Karendow Chapter 1, PHAT Professional Burglar)
SV Reanimator (PromZone, Cyclone)
TMB (Percussor, Around The World, The Little Pixie 2, The Adventures)
DIVISION 5
Angelo Mottola (WetSpot 1&2)
Delta Code(Larry The Dinosaur 1&2, Unofficial Tournament)
Jace Masula (CODELINK, StarQuest)
Kevin Reems (Stick Fighters Brawl 1&2)
Michael Hoopman (Dark Ages)
Milo Sedlacek (MonoSpace)
Nick London / NutzBoy (Peanut Patrol)
SonicBlue Productions (SB's Bricks)
StarsDev (The Terror)
Tsugumo (Untitled, TheGame)
In order to vote, visit the front page of Pete's QB Site. (The poll can be found in the left column.)
Good luck to all the nominees -- and may the best developer win!
Results of Division 1
The top two developers move on to the final round of the competition!
| Developer | Votes | Percent | Graph |
| Hamster Republic | 9 | 11% |  |
| Pieslice Productions | 5 | 6% |  |
| Bulma Produktions | 3 | 4% |  |
| CMC | 0 | 0% |  |
| TopGun Software | 2 | 3% |  |
| Typosoft | 24 | 30% |  |
| Shattered Realm Productions | 1 | 1% |  |
| Hyper Anime | 4 | 5% |  |
| Aleksander Trojanowski | 2 | 3% |  |
| RelSoft & Adigun A. Polack | 29 | 37% |  |
| 76 Total Votes |
Typosoft and RelSoft / Adigun A. Polack move on! With 30% and 37% of the vote respectively, these two developers were the clear winners (and very deserving ones too, I might add)! I can't wait to see how they fare when we get down to the final ten...
But before that can happen, we still have four more preliminary divisions to go through! So go to Pete's QB Site and vote on round #2! (The poll is already up.)
News Briefs
News from all around the QB community, about the latest games, site updates, program releases and more!
Website News
- The First Dedicated FreeBasic Games Site: FreeBasic.info
-
It's about time! After over a year of talk about the subject, someone has finally stepped up to make a website dedicated to collecting and redistributing FreeBasic games. That person is Cirux, and his website is FreeBasic.info.

While the main site has not yet launched, the FB games section is already well on its way at: games.freebasic.info. There are nearly thirty games at present, and more are added every day. Each game comes with a few screenshots and a brief description, and the main index page allows you to sort by Author and Title of the game. It's fairly barebones at the moment, but with a little more work, this will surely be one of the most useful FB sites on the web.
News Brief by Pete
- Syn9's Hideout Gets Redesign; Zero G Ship Redesign
-
Syn9 has been pretty busy for the past few months. First of all, he gave his website, Syn9's Hideout, a complete redesign. Gone is the dark red/black look we've come to know, and in its place is a stylish gray and white look. It's an excellent design, definitely one of the best looks anywhere in the QB/FB community -- but would you expect anything less from Syn9?
All of the old content is there, plus some new stuff that has been added recently. Check out, for example, the screenshots of Zone War, an upcoming real-time-strategy game. It looks spectacular, and you will most certainly be hearing more about it from QB Express in the future.
Also, Syn9 has posted a new shot of the ship design for his upcoming racing game, Zero GTR. Needless to say, it looks fantastic:

I can't rave enough about the great work Syn9 is doing for the FB community, from his games to his tutorials, he really sets the bar high. Don't miss his website, at syn9.thingie.net!
News Brief by Pete
Project News
- Cute Short Game Projects!
-
The last few months, redcrab has launched a new game programming "company" called Cute Short Game Projects, where he releases fantastic FreeBasic minigames. Since the last issue, he has released four extremely fun FB games: Mushroom Raindrop, Bouncing Stuntman, Hurry Chef and Sleepwalker, and they are all worth your time:

I highly encourage you to check out these games, available at the CSGP website!
News Brief by Pete
- Updates From Lachie Dazdarian
-
Lachie Dazdarian, one of the busiest guys in the QB community has been quite busy in recent months. He sent me this list of news...check it out!
- Mini Space Rogue is canceled:
http://fbtk.net/phpBB2/viewtopic.php?t=1012 ~ msrogue_demo.zip
- I've ported Another World Memory to FreeBASIC and advanced it:
http://www.freebasic.net/forum/viewtopic.php?t=2805 ~ awmemfb.zip
- I've released a custom font printing routine for GFXlib:
http://www.freebasic.net/forum/viewtopic.php?t=2806 ~ customfont.zip
- I've updated my scrolling engine (only a fix so it would compile correctly in FreeBASIC v.0.15 plus another small fix):
http://fileanchor.com/18911-d ~ FBScrollEd1.zip
- QBasic Games Directory News:
I've finished going through all the QBasic games I've acquired so far so the QBasic Game Directory now features 441 games out of which 43 are demos(just a note that Wandering Hamster is still a demo so not all these 43 demos are unplayable). '\' in the links where changed to '/' and all entries where rechecked and descriptions IMPROVED. 40 games are pending. Those are games which I'm unable to run or they are mine(2-3). I've found a great collection of HTML to PHP to MySQL tutorials but since in the next few months my mission is FINISH COLLEGE OR DIE I'm sad to announce that this will have to wait. Sorry. But the good thing is that these games are archived and BACKED-UP on a CD(together with the MySQL database). No fear of my work disappearing into oblivion. I'm not sure if I should bother to release another database preview.
Cheers!
News Brief by Lachie Dazdarian / Pete
- gMap, Tile-Based Map Generator
-
Date: Tuesday, February 14th, 2006
It seems that chaos and Josiah Tobin have been busy recently with the creation of gMap, a tile based map generator designed to create maps for RPG like games. Here is a screenshot of the gMap in action:
Some of you might recognize some of Josiah Tobin's awesome artwork in this screenshot. The goal is to take map elements from the right side of the screen and bring them in the left design area in order to build, tile by tile, a complete scene. Seems like they have created one fantastic looking piece of software that's sure to blow the mind of all RPG creators in the QMunity.
You can follow the development of gMap in the thread created on the href="http://www.freebasic.net/forum/viewtopic.php?t=2942">FreeBasic Forum to see more screenshots as well as user's comments.
News Brief by MystikShadows
- AFLIB2 Status Report
-
Date: February 19th; this is slightly out-of-date; AFLIB2 Has been delayed, due to some computer problems.
I've asked Adigun A. Polack for an update on his AFLIB2 project (which by
today needs no introduction). Although Adigun has gotten himself a bit busy
(to say the least) with "The Winter 2006 FreeBASIC Ultimate Demo Compo"
which you can read all about right here. He still took the time to let me know that
AFLIB2 development is as I reported last month, done. Documentation still
manage to progress some (he has now reached 100 pages of documentation and
expects to reach over 200 pages by the time it is done).
Adigun also informed me that, as expected and as announced on the forums,
AFLIB2 is still planned to be released early in 2006 (in March or April) so
that's coming up quite fast.
Look for upcoming updates in next month's issue of QB Express.
News Brief by MystikShadows
- Shattered Realms Productions Releases Go! Kart
-
So technically this is C++ news, not QB/FB, but I'm gonna post it anyway. As Greg of Shattered Realms said, "it is not a QBasic game, since I had to move on to C++, but since the majority of my website is dedicated to QBasic I was hoping you wouldn't mind."
Shattered Realm Productions is proud to announce that Go! Kart, a 1 year project written in C++, has finally been completed. Go! Kart is a two-player side-scrolling racing game which features fast-paced gameplay, 12 exciting levels, excellent graphics, music, and sounds. Go! Kart has also been released with an easy to use WYSIWYG level editor so that you can create your own levels. You can find out more information about Go! Kart from Shattered Realm Productions.com
News Brief by Greg of Shattered Realms Productions
- FBIDE now at version 0.4.6
-
Date: Sunday, February 19th, 2006; may be out-of-date
Vongodric Just posted today the release of a new version of FBIDE. The version is now 0.4.6. and here is the list of features and corrections as stated on his website.
Finally after lot of work it's done and out in the wild. It caintains many bugfixes ( all that I am aware of so far ) and new features as well.
Now FBIde has integrated filebrowser that let's you easily open/run programs right from within the IDE enviroment. Old Sub/Function browser is gone in the form it existed and now is a part of source code explorer ( click F2 ) but still is there in a more powerful form- Now you can also search for types, unions and enums!
Here's the full changelog:
* Added source structure browser.
* Added built-in file browser
* Added Ctrl+Tab and ctrl+shift+tab for switching between tabs
* Fixed crash when Ctrl+0 is pressed
* Fixed keyword save bug
* Fixed rightmargin state saving
* Fixed crash when closing FBIde while help is open
* Fixed filename case and space bug in running / compiling
* Fixed keeping track of folding
* Fixed brace highlight error when highlighting is turned on/off
* Fixed crash when program is running, but all tabs have been closed
* Fixed highlighting bugs: '$ is shown now as preprocessor, @ is treated as operator. Varios smaller fixes
* Fixed After failed compilation go to first error
* Changed code area tab's panel buttons are now a bit better looking.
* Changed active/inactive tabs have now same width
* Changed Sub/function list now also lists enums, types and unions
Quite alot of work has been done. And of course, more is definitaly on the way with all that was talked about for the upcoming 0.5.0 version. Be sure to keep yourself updated on this excellent IDE.
News Brief by MystikShadows
- New Version of UnTank!
-
UnTank is currently (24 Feb) in version 0.18f - and things are definitely improving.
Here's a shortlist of some of the new features:
- I've begun work on some interface details. The speedometer and booster meter (press Q to use) are small details for now, but I'm working on getting a full console in.
- There's a partially implemented skybox put in - this needs to be optimised as well as improved in quality (both of which go hand-in-hand, so there'll be both a quality and performance increase).
- Friction is now dependent on what type of terrain you're over - ice barely slows you down, while in sand you'll lose speed quickly.
- Configuration files allow you to mess with the settings. In data/config.txt, you can change the resolution with line 1, and the frame rate cap with line 2 (0 to disable the cap).
- There's walls around the arena with ads on them.
And some of the things you'll be seeing in upcoming versions:
- Complete overhaul of the physics and graphics engines - better performance both in terms of FPS and in handling.
- An improved console and some menus.
- Finally, you'll be able to shoot stuff. This goes in hand with the console, since you'll need that to select weapons.
- Independent controls for the tank, the turret, and the camera. Also with this will come new camera controls.
- I'll also start to put a menu system in, and there's going to be some options to change which tank components you're using (as soon as the modelers get to work and send me some models).
Here's a link to the latest version (as of 24 February): untank0_18f-debug.zip
I may update it before QBXP comes out, so check the thread on FBTK for the latest updates.
News Brief by Xerol
- Tons of Other FB Releases!
-
There have been a lot of FB game / demo releases lately...and you should check 'em out!
News Brief by Pete
Competition News
- Rogue Compo Update
-
Date: February 19th
Some of your might wonder how come last month we didn't have a Rogue Compo
Update. Well last month seemed to be a "we're all busy" month of some sort.
I asked for my regular update but didn't get any answers so no update could
be created. Something has happend this month however. So let's see exactly
where the compo stands.
DopeD was the first to reply to this month's status report thread I started
right here and
here's what he had to say.
"Umm, well, seems like noone's answered, and I'm a bit late myself, but here
goes.
I've resumed progress after a lazy two weeks, and I've started actually
turning this into a game - with a simple, unspectacular story. The engine
needs a few tweaks and a couple of additions, but is more or less finished.
I hope I can turn this into something playable..."
Hopefully soon enough, we'll all be able to see where this is going. Our
next to answer was Dr_D who had a short reply that read as follows:
"I'm slowly starting to get back into it, but with Rick being so busy at
work, I wouldn't expect to see much, if anything at all this month."
At least it's good to see this team is getting back at it. Even if we don't
have much to report, it's good to see that quite possibly, next month will
have a bit more to say.
Finally, Ryan was the last to answer at the time I wrote this update. Here
is what he had to say:
"I'm busy playing DopeD's game still. It's great! Give it a try.
Other than that, I believe my server's how I like it. I just need to begin
workin on the clients. ^_^"
This right there tells me that Ryan's halfway there on his project. So
things are looking quite good on that side as well.
So let's see what next month brings us from this compo. I can only assume
that January and February were just busy months for every one. See you at
next month's Rogue Compo Update.
News Brief by MystikShadows
- Tankz by iCEkID Wins First QBasic.com Contest!
-
Tankz by iCEkID has apparently won the first QBasic.com programming contest -- the one with a real cash prize generated by Google ads found on the QBasic.com homepage! The entries were as follows (as posted by Mark Wilhelm):
Enough, a 96kb Intro by Plasma is pretty cool. Nice music and a few graphics. It's surprising what you can fit in 96kb when you try, eh?
http://www.qbasic.com/wbb/thread.php?threadid=313&sid=
Detailed Scene by %00 is a almost-finished rendering of...umm...some cool sword from a Legend of Zelda game. Don't know which one though...
http://www.qbasic.com/wbb/thread.php?threadid=318&sid=
Modern Art Generator upped by TheMayor87 creates random still-life scenes. Cool to loop, sometimes generates desktop-quality stills.
http://www.qbasic.com/wbb/thread.php?threadid=370&sid=
Tankz by iCEkID is a PocketTanks clone, but a very good one, in QB no less, and smaller than 96kb!
http://www.qbasic.com/wbb/thread.php?threadid=363&sid=
TicTacToe by Phycowelder is a mouse-based TicTacToe game in QB. Source and compiled forms of this submission were accidentally uploaded in separate threads. No biggie.
http://www.qbasic.com/wbb/thread.php?threadid=373&sid= (Compiled Form)
http://www.qbasic.com/wbb/thread.php?threadid=372&sid= (Source)
Xbox 360 Matrix by yours truely was commissioned by one of my friends who didn't feel like doing his homework. His laziness was my gain.
http://www.qbasic.com/wbb/thread.php?threadid=371&sid=
The official voting thread opened on February 24th, and voting was set to last ten days. Voting has concluded, and Tankz came out on top with four votes (just one more than runners-up "Enough" and "Modern Art Generator". Although Mark Wilhelm has not officially announced a winner, the voting period is over, and iCEkID received the most votes...so congratulations to iCEkID!
News Brief by Pete
Qlympics 2006
Nominations Round
Written by Pete
It's finally here! Over the next few months, QB Express will be hosting the Qlympics 2006, where we will give recognition to all of the best work from the QuickBasic / FreeBasic community!
The Qlympics 2006 will be open to any FreeBasic or QuickBasic program released since January 1, 2003. We have not had a community-wide awards ceremony since the 2002 Gaming Gold Awards, and it is due time for QB / FB programmers to get some much-needed recognition.
But I'm sure you're dying to find out about the categories and the nomination process...so take a look!
The Categories
Gaming Awards
- Best of Genre Awards
(Open to both FreeBasic and QuickBasic games.)
- Best Arcade / Action Game
- Best RPG
- Best Strategy / Puzzle Game
- Best Text-Based Game
- Technical Achievement Awards
- Best Graphics
- Best Sound Design
- Character Awards
- Best Gaming Hunk
- Best Gaming Babe
- Best Villain
- Best FB Port of a Past QB Game
- Best QuickBasic Game
- Best FreeBasic Game
Non-Gaming Awards
- Best Graphics Demo (QB or FB)
- Best GUI / Fake OS (QB or FB)
- Best Library (QB or FB)
- Best FreeBasic Utility / Application
- Best QuickBasic Utility / Application
- Most Groundbreaking Program (QB or FB)
- Best Programmer or Programming Team
- Best QuickBasic Game Developer of All Time *
Awards for Written Work
- Best Tutorial or Tutorial Series
- Best QB/FB Article or Editorial
- Best QuickBasic / FreeBasic Website
The Schedule
QB Express #19 (March) - Pre-Nomination Round - That's right now!
This month, I need help compiling a list of all eligible programs for the 2006 Qlympics. That means EVERY QB / FB program released since January of 2003. Each entry must be accompanied by a working download link, or a link to the official site.
The way I'll be doing this is through posts on message forums around the Qmunity -- one at Pete's QB Site, one at Qbasic News and one at FreeBasic.net. You are also able to submit nominations to me via email. Everyone will be welcome to submit nominations. I want the nomination list to be EXTENSIVE, and no eligible program should be left off.
Over the course of this next month, I will take submitted nominations and split them up into the categories they're eligible for, so that we have a master list of all nominated programs.
How do I nominate a program / person? Just tell me their name, the name of their program (if applicable), and a link where I can find the work. You can either post your nominations in an official thread, or email them to pberg1@gmail.com.
QB Express #20 (April) - Nomination Round
I will print the FULL list of nominees in the next issue of QB Express. There will be an accompanying voting form, where readers will be able to vote for their top three or five choices in every category. That means you! (Only one ballot per person -- this will be enforced!)
After a few weeks of voting, I'll tally the votes. The top three or five vote-getters will be the official nominees for each category, and will be up for the awards.
QB Express #21 (May) - Final Round
A panel of judges will choose the winners, based on the nominations chosen by the Qmunity. (This is to ensure objectivity, and that all programs are fully and thoroughly evaluated. We want to make sure that every program is given a fair chance.)
QB Express #22 (June) - Results
The final results will be released, and we'll hand out the award banners!
Rules
- The Qlympics 2006 will be managed by myself, Pete Berg, and selected contributors -- including, but not limited to Adigun A. Polack (graphics designer) and Lachie Dazdarian (our resident QB game historian). All decisions made are final.
- Any QuickBasic or FreeBasic program released after January 1st, 2003 may be considered for an award.
- Unless specifically noted, all award categories are open to both Qbasic/QuickBasic and FreeBasic programs.
- Demo versions of programs will be accepted, but when it comes to judging, preference may be given to finished programs over unfinished ones.
- Any program released in the Qmunity is eligible to be nominated -- there's no application or submission process besides reminding us that the program exists so that we can add it to the nomination ballot. Instructions on how to do this are above.
That's All, Folks
Tune in next month for the official nomination list!
Any questions or feedback you have can be directed to: pberg1@gmail.com
Gallery
Written by Stormy
Every issue QB Express features a preview and exciting new screenshots from an upcoming QB game. If you would like your game featured, send in some screenshots!
Mystic World
This month's Gallery article comes from Stormy, creator of the upcoming FB RPG called Mystic World. It's a traditional tile-based RPG like the kind that swept through the QB community like crazy back in the late '90s -- but in the past few years, they've become increasingly rare in favor of more action-based releases and graphics demos. Mystic World looks like it will be old school Qmunity RPG gameplay at its finest. Who could ask for more?
-Pete
Hi everyone,
I would like to present my upcoming role playing game called "Mystic World" for FreeBasic. Please note, that it's only a working title. I will figure out a better name in future ! :P
But before coming closer to my project I would like to speak some words about my motives I had before I started this game. In my history as a programmer I never made a real big game before. The few ones I made are just kinda small and hardly worth mentioning. Thus, I decided to create something big to prove myself that I can archieve something like that. In this time I was heavily inspired by those RPGs that had been written in QB. Exactly that athmosphere that was given such old-school RPGs I want to recreate, but just only in a fairly shape. So I began to work on Mystic World on my 486 with DOS, went on Windows by using Rellib and finally reached Linux as my developing OS to finish my game. And believe it or not, it was somehow hard to convert each code to the next system. ;)
I hope you didn't fell asleep, yet. No? Great, so let's come closer to the game itself. Currently I'm working on the whole background stuff I need to develop a full-working game as I want. Thus, I build a robust engine, which is very customizeable, heavily based on scripts with a scripting language created to DOS' times, fast paced and portable to some respect. It runs on Linux and Windows quite well without any problems. I also paid attention for older PCs by limiting game resolution to 640x480 and color depth to 16bit. It runs very fast on my PC (CPU: 1533MHz) with 380 FPS without using any libraries like SDL or Allegro for instance. As you can see, I thrust in the power of the gfxlib from lillo! ;) Well, after all by having reached such a good performance I tried to integrate some effects to ruin the performance - eww *g* I mean to let my game look even more mature and nicer.
If you have look to this feature-list, you might be convinced of the abilities of my engine:
- 640x480x16 and awesome speed (I do know, that GPU-based engines will be faster, but don't care)
- effects like mirror-effect in water (for objects, NPCs and heroes), nice authentic weather, animations, fadings from daylight to night in realtime
- a turn-based battlesystem (yes, this is relic of such so called old-school rpgs ;))
- Sounds and Music (using FMOD)
- an advanced window-system with changeable skins, integrated images that can be set in the scriptfile and nice transparency effects
- a powerful and easy script engine whose syntax is coined by the BASIC-syntax
- and a movement that tile*pixel-wise
With those effects you won't have something better as a unfinished walkaround-demo which we have often seen in the past. I also integrated a lot of things, which are essentially for the RPG itself. Thus, I managed already the whole stuff with heroes and its classes, weapons, armors, items and spells and of course the saving and loading process. All of those things do work fine for now and I'm working at the moment only on some minor improvements, that might be important in future.
The current game I'm working on by using my engine will belong to the fantasy-universe and will provide a nice detailed and well-balanced fantasy environment. This game won't only contain "hack'n'slay" parts, so it will have rather real quests, solving puzzles and such things. Of course the whole battle-thingy won't get a raw deal! ;) Currently I'm working on the spells in fight, which will be definitely an eye-candy for you. I also gathered some nice music of artists whose permission I already gained to use them in my game. In combination with appropiate sound effects you ears will be coddled as well.
OK, enough spoken. Let the screenshots tell you more:

This is our brave hero ! =)

Our hero in front of the shop in a nameless testing village...

On this screenshot you can see some light sources and mirror effects. And of course some NPCs, that are hanging around there...

That snow fall might be exaggerated. But it was for testing purpose only. :) It doesn't fit at all due to the missing winter tileset.

This is a shot of the current battlesystem. Our team seems to be in trouble with some devilish slime blobs... :) And this shot shows also, that our mage is about to use one of his healing spells.

This is the itemlist featured with icons to make the player finding the items faster as with ordinary text. You can also see, that I selected two items in order to switch their positions. Automatic sort is also included. And please note, that I was too lazy to translate every item in this list. :P

This menu is accessable via ESC and shows the party.

The stats of our mage. You see that there is a lot of space to put more stuff into this box... ;) I will enhance this later by the time.

My rather functional paced editor where you can design an entire map (apart from the scripts).

This is one example the message box. In this dialog box I can determine the direction of this NPC. See this snippet to see how easy it is to do such an effect:
[NPC]
ClearOptions
AddOption RIGHT "Go right!"
AddOption LEFT "Go left!"
AddOption UP "Go up!"
AddOption DOWN "Go down!"
AddOption 99 "Do nothing."
ChoiceBox "" "Where do you want me to go ?"
IF Decision != 99
NPC.Move PickedNPC Decision
ENDIF
IF Decision = 99
NPC.Movement PickedNPC UnMoveAble
MSGBAR "You send player {PickedNPC} into the direction {Decision}."
ENDIF
Showing you this snippet, I can also introduce you in the structure of this script language which is obviously similiar to BASIC.
[NPC] and [/NPC] ... include a SUB. [NPC] is everytime called when you talk to a NPC. The variable "PickedNPC" gets the value of the respective NPC you want to talk. You can also set own SUBs and call them."IF" is similar threaten like in BASIC. You can even combine more conditions via the logical operators AND and OR. Relational operators like =, <, > and <> are possible, too. Instead of using <> you can also take != if it's familiar to you. "IF" can also be overlayed.
Most of the commands should be easy to understand. There is simply one command that requires its parameters in order to work properly, as we know it every programming language. Some parameters are optional. See for example the first parameter of "ChoiceBox", that allows to determine a own picture in the format BMP or TGA. The window and the text will adapt to this stretching picture automatically.
Every string, that is used in message boxes or in the message bar can contain variables by the use of {name of variable} and small icons via "[number of the icon]".
Well, that was everything from my side. I hope you enjoyed this free tour to have a look into the current state of my game. If you are interested in supporting me, you will be absolutely welcome. Especially I would have a need for graphic artists, composers or story tellers. Especially since the moment I realized that my english skills aren't that good to write an entire story, I would really appreciate an helping hand there... =)
Just contact me via ICQ 131070118 or via email Paul.Grunewald[you may put here an @ in]gmail.com
- Stormy (Paul Grunewald)
Bungy The Worm - Game Review
A review by Stéphane Richard (Mystikshadows)
INTRODUCTION:
Not too long ago (back in November 2005), Lurah created his own version of what is known today as a snake like game. This type of game
is defined as. A game where you are a snake, slithering your way through a playing field going after the food and other
goodies that appear on the playing field. Typically you're not allowed to go over yourself or certain other "evil" elements
of the playing or the game is over. This concept, still today makes for an addictive combination.
As you probably know by now, I will begin this review by talking a bit about the game and finish with the gaem review itself. So
then, Let's begin this review of Bungy The Worm.
ABOUT BUNGY THE WORM:
What's to say about Bungy The Worm? Well, for one thing, you can read what others thought of Bungy by looking at this thread on the FreeBasic.net forum. As you can see
it got some pretty rave reviews and comments when it came out and rightfully so I might add. Bungy is the most recent adaptation of a classic gaming concept. And well
with the additions of some good music and decent sound effects, it makes it one of the more unique adaptations as well.
I have 2 screenshots to show you here. This first one is the main logo page with the game's menu options.
This second screenshot is the main game screen. this particular screenshot shows the evil things I talked about earler (in red) and the water (in blue) where you're also not supposed to go into.
And now, for the review itself. As always, I will review the game based on
playability, overall entertainment, replay value and technical feature. So far I believe these
evaluation criteria are complete enough to give a good idea of a game's strong points so i'm sticking
with them. Let's get started shall we?
PLAYABILITY: Score (4/5)
The game offers a very simple principle. That principle is to stay alive basically. To accomplish that you need
to stay away from anything shown in red and the water. But since it is a worm, you do need to feed it. So the P and the $
you really do have to get them and you have to remember that you can't go on top of yourself. You play like any classic snake like games by using the arrow keys.
and as you eat things up and slither all arround the playing field, you get longer (which adds to the challenge) and you get shorted
when you eat something (which helps keep the game real. In the respects of what a true snake like game is, I would say that
Bungy The Worm is a nice addition to the snake game legacy. As such I gave it a score of 4 out of 5.
OVERALL ENTERTAINEMENT: Score (3/5)
When you reach higher levels, you get to eat more stuff, avoid more bad things and fight a little more for your life. The mysic is interesting and I believe fits the
game quite well. It's not too hard to get yourself into a situation where there is only one possible exit and you have to find it
fast enough or you will die. Basically, there's all sorts of little things that just keeps you wanting to play like this. The only drawback (if you can call it that)
is that the game has no purpose, no ultimate goal and I tend to wonder how a snake like game, with a purpose like this, would feel like. But by all classic defintions of
a snake like game, there isn't really any drawbacks. For that, I gave the Overall Entertainment a score of 3 out of 5.
REPLAY VALUE: Score (4/5)
When you start playing Bungy, and you play it for a little while, atleast that's what happened to me when playing it, you tend to just
want to "do better next time" just for that, in a simple game like a snake game, is already a great "replay" value. But add to that the interesting
soundtrack and the other factors that come into play and you have yourself a good combination. I think it warrents it's 4 out of 5 because
of all the little details that he put into bungy that make it a unique snake like game.
TECHNICAL FEATURES: Score (4/5)
Some of you might think that a game like Bungy The Worm doesn't have much technical merit. After all, it's a snake (or in this case a worm) that goes all over a square playing area. Well for one thing, it's got sound effects and a music sound track.
Which isn't bad at all for a Snake like game. The game is very playable and since you can't hit yourself, the wall, the water and the red things on the screen it has atleast a decent collision detection to say the least. I think Bungy The Worm is the most
technically advanced ASCII snake like game. So there's definitaly some merit to that. As I mentionned on QBasicNews, A game review should be done based on the type of game you're reviewing. In that context, 4 out of 5 is definitaly more than
warranted. It deserves every single point.
THE FINAL VERDICT: 15/20 (75%)
Overall, if you look around the web and compare Bungy The Worm to other existing snake like games, I'm sure you'll have to agree with me that Bungy really takes the cake. By far one of the best implementation I've seen in a long long time of this
simple game playing concept. With a touch of sophistication with the sound effects and sound track. A great piece of work. I hear that Bungy 2.0 may be in development or soon will be. I can't wait to see what that version will have to offer us.
If you haven't tried Bungy The Worm yet, all you have to do to get it is take a look here: Bungy The Worm, and get yourself a copy. Then you can see for yourself how good
Lurah's version of the classic snake game is.
MystikShadows
Stéphane Richard
srichard@adaworld.com
Visit the official site, or download Bungy directly: Bungy.zip
Can't We All Just Get Along?
Working As A Team On Programming Projects
Written by Imortis Inglorian
I think at one time or another, we will all want to work on a team project. It seems like a good idea at first, but when you get there you quickly find that it's not as easy as you thought it would be. Well, guess what! I have a handful of tips and trick to help you not kill your partners! And if you do kill them I may write another article on how to hide the body/evidence from the local law enforcement. Let's hope that I don't have to write that one, okay?
Getting Started
When starting any programming project it's always a good idea to have a plan before you start programming. This is more true on a group project, and here is why:
"I want to do this, so I'll just go ahead and do it. I'll tell [insert partner's name here] later. He/she'll be so happy!
Yeah, right. This almost never works. Nine times out of ten, this will completely ruin the things that the partner had in mind or they just won't like it. Everyone gets mad; no one wants to give up his or her idea. Having a good plan before you get started makes this much less of a problem.
An extension of this is to make the planning process as democratic as possible. Get the members of your team to agree on the plan, and you can almost entirely remove this problem. I want to stress the word almost. You can never completely get rid of this problem, but you can come close.
Dividing Up the Work Load
I will be the first to tell you that I suck at graphics programming. If you are in the same boat, you know it. So should your team mates. Everyone is good at something, but no one is good at everything. If you suck at [X], then let your team mates know. There is a good chance that someone else does not suck at [x] but instead they suck at [y] which is exactly what you are good at. Okay, so maybe it won't always be that easy, but I think you get the point. By splitting up the jobs based on a "who is best qualified" basis, things will get done a whole lot smoother and faster.
To the Bat-Complier, Robin!
This might seem like a "no duh" comment, but you also have to decide what you are going to program in. Partner A might like C++, Partner B might like Pascal, and Partner C might like COBOL (heaven forbid). You all have to decide what language you plan to use for the project.
Once that is decided, you can all start programming to your heart's content, but keep in mind that other people will be trying to work with your code. Do your best to make it readable to others. How many times have you looked at a piece of source code on the net that looks like this?
x = x+12
y = y-12
x2 = x
y2 = y
print x+x2+y+y2
'etc...
This looks horrible. You can tell what it's supposed to do, kinda... But you have no idea what x, x2, y, and y2 are for. In this small example, it's not so bad, but on a big project, you will need to document your code a bit better. The best way is to use a variable naming convention that makes its purpose and type known. Like so:
intFirstXCoord
We can dissect this variable name to see its purpose. int means that the variable is an Integer. FirstXCoord tells you the purpose of the variable. It is the first x coordinate. This kind of documentation is highly effective, but can be a pain in the butt. You should also use lots of comment lines to make sure that the over all intent of the program is easy to see as well.
It's Not Whether You Win or Loose, It's How You Play the Game
Regardless of whether or not your project is a success, have fun with it and learn new things. That's the whole point of a group project, right? Don't let it become work, because work is an oppressive construct made by the MAN to keep us down. You should avoid "jobs" at all cost, so try not to let your team project become one. If you stop having fun, you loose the will to write good solid code and instead just want to "get it done". If your project doesn't work, well then modify it. Try to find a way to salvage the work that you have done already. If you can make something of it, then it was not a failure.
Yeah... I should go now...
Well, I guess this is it... *sniffle* You guys are growing up so fast... You need to go out on your own and use what I have taught you... *sniffle* Go on! Get outta here! Don't you understand! I don't want you any more! Go! *sniffle, sniffle*
Download a copy of this tutorial: TeamProg.rtf
FreeBASIC - Restrospect, Review and Prognostic
Written by Stéphane Richard (Mystikshadows)
INTRODUCTION:
Here we are, in March of 2006, FreeBasic has been in development officially for over a year. And I thought it might be fun to
basically, review the FreeBASIC situation in terms of it's past (retrospect), it's present (Review) and it's future (Prognostic). After all, a year (or more) of coding warrents some form of status report no? So I have decided to give my own personal view of FreeBASIC, past, present and future. For those
of you who haven't seen FreeBasic yet, you'll get a chance to get acquainted with a bit of it's history. See where and when it all began, how far it went in just a year you'll get a glimpse of all it's possibilities. And hopefully I'll get the curious even more curious to
get their copies of FreeBasic and give it a serious try. More than that (especially in the prognostic section I would say), what I really want to do
is open up a communications channel about where freebasic seems to be going versus where FreeBasic should be going and see how we can meet somewhere in the middle. Don't know what I mean? Not to worry, when you read the prognostic section (and part of the Review section) it should become clearer.
Also, as I've been following the development of FreeBASIC since it's beginning. I've been noticing some evolutionary turns that I think are worth mentionning. Some are great, but I believe some should be taken rather
seriously and taken into consideration. Now although these represent my points of views mainly. I think that they are general enough to
be taken as important points in terms of the BASIC definitions. You'll see what I mean when I get to that part. Basically, as far as BASIC is concerned
it seems that somehow, what basic should be is either being redefined or ignored (forgotten) either because of how busy the FB team currently is
or because maybe they just haven't thought about it. We'll talk about that later. Right now, let start this article with a retrospect of what happened in
the last year and some since FB was first announced.
FREEBASIC THE BEGINNING: (THE RETROSPECT)
I don't know about you. But I remember that Wednesday, October 27th of 2004. I was going through the forums as I usually do, and when I got to QBasicNews forum, I noticed this post entitled
freeBASIC (a 32-bit QB-syntax compatible compiler) preview ... I read that title and my first thought was "huh?" somebody
finally decided to do this? So I clicked on that title and read what that post said. Now as far as I'm concerned, I've already seen more than one attempt at making a 32bit QB (DOS or Windows) and
unfortunately for me, these attempts have all failed. So all I could say when I saw this thread was "I hope this one makes it far enough". And I continued doing whatever it was I was doing back then.
After a few months of doing my usual routine and checking this thread to see what was happening with FreeBASIC I said to myself, well, they're still working on it, already a good sign. then on a fateful
December 2nd 2004 post, I could read the title FreeBASIC 0.01 Beta Released. This is when I personally started getting interested
even more in FreeBASIC (basically I didn't want to get my hopes up until a first release was out because of my past experience with other 32bit QB projects I've seen. In the months that followed these announcements
I've seen features get added, bugs corrected, and updates that just kept on appearing at quite an astonishing rate I might add. The Qmunity, since the beginning has been amazing at supporting v1ctor in his FreeBASIC
endeavour and most definitaly were at least partly responsible for FreeBASIC's growing popularity and growing reliabity. People were telling v1ctor what they thought FreeBASIC should have, should be compatible with and
v1ctor, whenever feasible, would go ahead and implement the new features to give QB coders what they wanted in FreeBASIC.
When you look at all the work that happened since that first release, you can see that none of this has really stopped since that first release and to me, that mean one thing, FreeBASIC was making it's mark quite fast.
When version 0.07b of FreeBASIC came out, I decided to take a crack at porting some of my own code in there to see how it would compile and what the resulting exe would do. I was pleasantly surprised to find that In my
case, I only had to convert keyboard codes to CHR$(255)+CHR$(KeyValue) instead of QB's CHR$(0)+CHR$(KeyValue) to see my program automagically start to behave as expected. This was a rather simple but long program (the contact
management program you've seen in my File Manipulation Tutorial Series - Random Access Files). Since I saw how fast I could
get this to work in FreeBASIC, that's when I got addicted like the rest of us and started using FreeBASIC for most of my recent projects. So great, I knew FreeBASIC would prove more than useful to me, but I knew, even back then
that the Qmunity memebers weren't all application builders like me. Most were game makers and I was curious to know how FreeBASIC answered their needs. It didn't take too long before I noticed people were spitting out some graphics
and game concepts that literally blew my mind away (now you know what happened to me ;-) ). No two ways about it in my mind anymore, FreeBASIC was the tool of choice for the Qmunity and beyond from then on out.
It seemed that everything was going FreeBASIC's way, releases were still being released quite fast, many bugs were getting corrected almost as they appeared, the freebasic website and it's forum were growing well (just look at the number
of members on the freebasic.net forum, that speaks for itself. FreeBASIC was getting the recognition all the hard work deserved to get and things have been great for FreeBASIC since that time. More and more library support was added for things
like fmod, Open AL, SQLite, SDL and others. And who here doesn't recognize that these libraries are "required" to help with the success of FreeBASIC. I know I do, even if I dont use alot of them right now. So of course, I more than welcome
the fact that they are supported and supported quite well and efficiently I might add.
FREEBASIC TODAY: (THE REVIEW)
FreeBASIC today is quite the programming tool If you've never stopped to look at what FreeBASIC is today, allow me to do just that right here. FreeBASIC originally started out being "the closest QuickBASIC compatible compiler" this of course never meant 100% compatibility, it mean
a syntax as close to that of QuickBASIC's own syntax as a 32 bit compiler could logically allow. This most definitaly understated that any 16 bit specific syntax would automatically not be implemented. This is quite understandable. Today however, FreeBASIC became much more than that. As a language,
it evolved already into an almost complete language filled with many datatypes, statements and functions combined with a compiler that really seems to do the job right as far as turning code into an efficient executable. Take a look at this set of features (taken from the freebasic website itself):
- A large number of variable types available
- Arrays
- BASIC Compatibility
- Built-in gfx library
- Clean Syntax
- Completely *FREE*
- Create OBJ's, LIB's, DLL's, and console or GUI EXE's
- Debugging support
- Enumerations (ENUM's)
- Escape characters inside literal strings
- Function overloading
- Inline Assembly
- Most of the known C libraries can be used directly, without wrappers
- Multi-platform
- Optimized code generation
- Optional function arguments
- Pointers
- Preprocessor
- Typedefs
- Unlimited number of symbols
- User-defined Types (UDT's)
- Variable initializers (including arrays and UDT's)
- Unicode support
And, just after you read these features, that's not all, FreeBASIC also boasts a complete set of support for quite an impressive list
of libraries and engines. Most of which today, are standards in their own rights. Don't believe me? take a look at this list of support
libraries and engines (again taken directly from their website):
- GTK+ 2.0: cross-platform GUI Toolkit (over 1MB of headers, including support for Glade, libart and glGtk)
- libxml and libxslt: defacto standard XML and XSL libraries
- GSL - GNU Scientific library: complex numbers, vectors and matrices, FFT linear algebra, statistics, sorting, differential equations, and a dozen other sub-libraries with mathematical routines
- GMP - GNU Multiple Precision Arithmetic Library: known as the fastest bignum library
- SDL - Simple DirectMedia Layer: multimedia library for audio, user input, 3D and 2D gfx (including the sub-libraries such as SDL_Net, SDL_TTF, etc)
- OpenGL: portable library for developing interactive 2D and 3D graphics games and applications (including support for frameworks such as GLUT and GLFW)
- Allegro: game programming library (graphics, sounds, player input, etc)
- GD, DevIL, FreeImage, GRX and other graphic-related libraries
- OpenAL, Fmod, BASS: 2D and 3D sound systems, including support for mod, mp3, ogg, etc
- ODE and Newton - dynamics engines: libraries for simulating rigid body dynamics
- cgi-util and FastCGI: web development
- DirectX and the Windows API - the most complete headers set between the BASIC compilers available, including support for the Unicode functions
- DispHelper - COM IDispatch interfaces made easy
And there's still more to come the lists just keep on growing. FreeBASIC's popularity is also spreading beyond it's original audience.
People from all over the OpenSource programming industry are starting to pay attention to FreeBASIC and rightfully so. It doesn't take a rocket scientist to see where FreeBASIC is going
and to realize that this might be something that's been waited on for a long while now, and it's finally happening. So yes, FreeBASIC is becoming quite the phenomena. More and more people
today are giving FreeBASIC a try and simply don't seem to regret doing so at all. FreeBASIC is still gaining momentum and well, I'm incredibly happy to see how fast and well things are going for FreeBASIC
and the FreeBASIC team. I'm very happy for them, their work really shows when you download FreeBASIC and see what it's all about. And they deserve every bit of credit they've received (and more).
Now, most of you by now, after reading all my praise about FreeBASIC might be wondering why I mentioned I had concerns or that not everything was perfect. I mean, just look at how much good
I have to say about FreeBASIC. Hard to imagine I might have something different to say about it (well aside my everlasting PCOPY in SCREEN 0 mode). When I watch how far FreeBASIC has gone since
it's beginning, nothing I have said so far is wrong. FreeBASIC is really growing like I said, the FB Team is working hard on the project and the results of their hard work is really shining through
in what FreeBASIC is today. So yes, everything I said is true. My concern is on a different level.
FREEBASIC TODAY: (THE TWIST)
if you've been on the FreeBASIC forum in the past say 9 months or so, fairly continuously. You will easily notice that 1. Bugs reported get fixed quite quickly and 2. New features, when they make sense
get added quite quickly as well. And that's good, that's part of the strength that FreeBASIC offers. My concern is, at what cost are these features (language or library related) being added to the arsenal of FreeBASIC
tools? For the past 9 months (longer than that but especially the past 9 months) the FB team have been busy giving users the feature they ask for, and fixing bugs. That's all good, but there's something happening
with FreeBASIC in the midst of all this hardwork and devotion to the users.
You see, as many of your know, I'm not a game programmer (well until recently that is) and I'm certainly not an OpenGL or SDL user. In other words, few of the
libraries interest me aside the SQLite library and ncurses (which seems to be gone now). I am an application developer, a tools and utilities developer, and
recently a text game developer. As such I don't benefit from all these libraries (but like I said, they really should be available, that was one of the many smartest moves made by v1ctor and the FB team). But I do benefit
from the FreeBASIC language itself. I benefit from the fact that you can include Assembly directly in the code in an intelligent way. I love the simplicity of the BASIC syntax. And that is my main concern when I look
at what is going on. And since I can't be overwhelmed by all these libraries that everyone uses, I can take the time to sit back and see the language itself. At how FreeBASIC implements and supports BASIC in all it's definition.
and well, this is where I wonder a bit.
I guess everyone has his or her own view of what FreeBASIC should be as a language. Some people program in FreeBASIC using what they've come to adopt as their standard, but how standard is their standard? Basically, one thing I've
noticed over the past 15 months or so is that the FB team is busy giving the users what they want (atleast the majority of them). As such well just look at the features i described and you'll see how well that work has been going.
The list of features is growing at a very fast rate and that's great. When I mentionned before, at what cost are these new features made available to FreeBASIC users, I meant, how does these features and libraries affect the way we
code in FreeBASIC. my opinion, based on observations of the progress of FreeBASIC, is that FreeBASIC is losing its essence in some way. It's sacrificing language features for the sake of giving features that the users want. As
a language, support for the libraries that are there is good to have, no two ways about it, however, there is a BASIC way to allow support for these libraries and there is the C++ way to give that support. And so far, probably because
it's faster, the C++ way seems to have been chosen. For a BASIC language and of course in my own personal opinion, it's not the way these libraries should be made available because it opens a door that with time, will get harder and
harder to close as the workload to close it will be proportional to the number of libraries support to change. Right now, there's a good number of libraries that need a
more BASIC way of doing things. Now, is it more work, yes it is. is it worth the extra time? i like to believe so, for the sake of BASIC and what it is "supposed to" means.
FreeBASIC to me, has two responsibilities. The first of which is to be as compatible to QuickBASIC as possible. Since it was the original goal after all as stated on that first post on QBasicNews and to me, this means that if a function or statement
that exist in QuickbASIC, special efforts should be made to implement it (at least try to implement it first). I've read on some posts people asking for the PSET statement if it existed, if it was available in the DOS port of FreeBASIC only to read as a
reply something like: "if you want PSET in DOS use Allegro!". Now, this maybe true, Allegro is an impressive library and I'm sure it has something that can act as the equivalent to PSET somewhere. However, there is a big difference between using PSET and learning the complete
Allegro library to find where it's version of PSET is and how it is implemented and used. If the goal of FreeBASIC is to be as QuickBASIC compatible as it can be. What would it be to code PSET to call the Allegro function it needs, instead of telling QB (or FreeBASIC users) to
learn Allegro functions and syntax to do what a standard (and very common) BASIC command does? Do you see where I'm getting at? I'm not saying it's not more work for the FB team to do this with the PSET command, of course it is, I realize that, however, to me, making the PSET (or any other graphic commands) call their Allegro
counter parts (If there's no other way to do them) would be the "REAL" BASIC approach to implementing the FreeBASIC. in other words, some work should be done, especially in these situations where a language element isn't directly implementable for some reason, to give them
something they can work with that looks and feels as close to BASIC as possible. This will of course encourage more users to give things a shot if they know there's something close to what they want AND it will also considerably reduce the learning curve for new comers to FreeBASIC which may not have
any OpenGL or SDL background at all to work on.
BASIC should be simple to learn no matter what feature is added to it. To me, that's what the bottom line should be and efforts should be made to support that bottom line. there's a couple of of places in the language (regardless of the os it's
implemented on) that can be more BASIC like. The most obvious of those of course of in the support of all these C++ libraries that is offered. right now, if i look at a FreeBASIC sample program that uses OpenGL, or any other of these libraries, chances
are, if I add a ; at the end of each line it will compile in any C++ compiler that can use OpenGL. This is know as a thin binding to a library. Any BASIC coders, including those that coded these programs will tell you that this code looks like C++ code. Is there
any way around this? Yes, there's two ways to approach these. The first suggestion is a thick binding rather than a thin binding to the same libraries. for some of the libraries (maybe for most of them) it may be simpler to do a thick when OOP is implemented but still, i'm saying it now so that
hopefully it will be remembered when the time comes. A thick binding offers a different means of accessing the low level functions that exist in the library. One that can be made as safe to use as people expect from a BASIC language (this is where I think that we're drifting off) BASIC, as a language
should offer a means of doing whatever we want in a safe way.
The other way is to add to the parser engine itself. hence, if we want to add support for a library, perhaps a quick set of instructions (that look and feel like BASIC) would definitaly be easier to learn than learning all the C++ functions
that make up the library or a set of generic instructions designed to wrap the library with a set of statements that give a clear access to the core functionality would be closer to what BASIC programmers expect to see in a BASIC language such as simple syntax, easy to understand constructs, and other
features that make BASIC this fun and easy to use and learn Learning Allegro to me does not constitute a BASIC learning experience. However, learning statements that look and feel like basic (PSet, Line, Circle and whatever, that have a BASIC taste to them is the BASIC way to do it. As a BASIC user, i don't
care if these BASIC like commands use Allegro or OpenGL or whatever else to do it's task doesn't matter. Obviously some users don't mind that since there's already so many OpenGL projects in the making, however, putting myself in the comming BASIC programmer eager to learn FreeBASIC, i think what i'm saying
here more than makes sense. Don't you? Of course, I'm not suggesting we dump the standard library syntaxes, any sooner than you "dump" standard commands when you create a sub or function. But an evolving compiler means you have an opportunity to give BASIC ease and power on top of library functions. by default you
can call allegro using allegro syntax. But if PSET (for example.) needs allegro to be implemented, why not make it so the compiler understands PSET?
FREEBASIC TOMORROW: (THE PROGNOSTIC)
A prognostic, for those that might not know isn't a 100% exact science, it's a plausible conclusion and prediction based on current data and facts. Now, if we look at how things are today in the FreeBASIC world, where they are heading can be one of two directions.
Now, because of how good FreeBASIC is, I think both directions would offer a future to FreeBASIC. However, not both futures would coincide with the fact that FreeBASIC is/should be a BASIC dialect first. The conclusions are somewhat extremist too. So perhaps we should
look at these as "directions to work towards" rather than look at them as "directions to reach", it would be a more realistic direction then in my opinion. let's review them.
The first direction (or goal) is that FreeBASIC continues to develop as it is now. As it stands today, FreeBASIC is very much recognizable as a language, maybe even as something close to BASIC. Add to that more and more C++ libraries that will be supported (as users voice themselves
and tell them what libraries they want to see in FreeBASIC). As these new libraries get supported (because we all know how well, quick and efficiently these libraries get added to the arsenal of libraries that is already supported by FreeBASIC) so yes, FreeBASIC will support one of the
biggest and most complete set of libraries ever thought of in a programming language. After the libraries will probably come support for libraries written in other languages I assume. For example, there are some highly advanced scientific and statistical libraries that have been implemented
in languages like FORTRAN and others which simply do not exist in any other languages. some of those libraries are designed to allow compatibility between languages like FORtRAN and other of the domain specific languages which would add to the list of styles one can program in using FreeBASIC.
Add say 3 of the major libraries created in 3 of the major other languages to the mix and suddenly FreeBASIC is starting to look like any other language but BASIC itself. FreeBASIC becomes Free_____ >- insert language here since in how kinda feels like C++, Fortran, maybe php and python, who
knows, all depends on the libraries and the languages they were made in. In this direction, FreeBASIC becomes popular to the users of the libraries that are supported, no matter what language these users usually use to code with the libraries. hence, the language, FreeBASIC, becomes a 2nd priority
to the fact that it MUST support the library. I'm not saying that it shouldn't support these. I'm certainly not saying that it shouldn't support what it already does support either, these are all excellent additions. but just read the next paragraph to understand my
point of view completely.
This is my own personal favorite direction. But I think I can also say that this is the direction a BASIC language should at least be strongly considered while it's being developed. This direction doesn't mean that the libraries and features mentioned in the previous paragraph cannot exist. Quite the contrary.
What this direction does mean though is that the Language takes precedence over the libraries it supports. Like I said previously, yes, this does mean more work for the FB team (or any other contributor that might want to take a hand at it). instead of making FreeBASIC use a library on the library's own territory,
it could, with a little coding, give the users a FreeBASIC means of accessing the library. To this, yes, we can use the two methods i mentionned earlier, thick bindings and/or language extensions (which I don't believe would be that much more work since it would just add a few statements designed to give a better,
more BASIC like means of using the functions that are in the libraries. Again here, putting myself in the feet of the BASIC programmers and QB programmers alike to whom All currently implemented libraries might be interesting to them but not at all costs. If they see an example of using OpenGL that isn't just a bunch of
function calls like it is today. As BASIC developers they might be more tempted to cross the line into OpenGL if the syntax atleast seems to be made to be understood by BASIC programmers. BASIC should be simple, it's not the first time I say it in this document. But BASIC should be AS SIMPLE as it can get. Time and effort
should be spent to make sure BASIC is as simple as BASIC should be.
As you can see, these two conclusions are very plausible. There's no doubt in my mind that one of these will happen. The first one is already well on it's way to happening too. As i said, some might think why change what seems to be working fine and helping FreeBASIC be as popular as it is right now? Well, the question, the issue, isn't really about where FreeBASIC is today (although as i mentionned, even today,
in my opinion, it could use a little taste of BASIC. The concern is about where FreeBASIC is heading, what kind of future does v1ctor want for FreeBASIC, what his goal was versus what FreeBASIC is today. Does he want a good basic, or a language that supports everything there is, like I said, both directions have a future, but of course, not the same future.
Alot of time has been spent in the development of FreeBASIC giving it's users what they want. Maybe it's time to sit down and see what we can do to give v1ctor what he wants out of the project. He may be satisfied with what he has, maybe not, i don't know. But think if this as one good reason to stop and write this article. For victor, for all the users, for all the
new users there will be in the near and far away future.
IN CONCLUSION:
And there you go. Again I really want to stress here, I don't want to start a war or anything, of course not, but I do want to see what the possibilities are, what we have at our disposal to help FreeBASIC be as BASIC like as it can be. This is of course both for newcomers, current users, and people from other BASIC dialects that
would like to code in FreeBASIC, the more BASIC like we can keep it, the better FreeBASIC will look to all 3 categories of users. I'm hoping that some form of discussion results from this. i really feel FreeBASIC as a project could really benefit from all I've mentionned and i want to know what other people think about these.
Again, it's no question to me that FreeBASIC is becoming quite a powerful tool, a tool that can be used and should be used for it's intended purposes, a tool that is growing fast in popularity still today and rightfully so, my question is, is it becoming a powerful BASIC or a powerful tool? That,
only time will tell, but I for one most definitaly hope it does. Because it's what got me interested in the whole FreeBASIC project in the first place. What about you? this isn't pointing fingers to anyone, it's nothing close to that. But I fear that if FreeBASIC continues in its current direction
it may turn into some hybrid so caught up into features that neither BASIC or C/C++ programmers will ultimately want to use. By that I mean, if BASIC programmers see that FreeBASIC is to C++ like to be worth the change, they might not want to. likewise, if C++ programmers look at FreeBASIC and see it
looks and feels like C++, they might not bother changing either since it won't save them time, not even at the prototyping level of development. like all FreeBASIC fans here, i want FreeBASIC to work, to continue growing in popularity, to be spread all around the internet like a virus that can't be stopped
but i do want it to be BASIC. Until then, happy coding and let's see what we can make out of all this.
MystikShadows
Stéphane Richard
srichard@adaworld.com
QBasic Tetris Games
Written by Lachie Dazdarian (December 2005)
Introduction
At the first glance this article probably didn't catch your interest. Mainly because Tetris is one of the most(if not the most) cloned or remade games in the entire history of computer games which made its gameplay too common and therefore boring. One just can't escape Tetris. You will stumble on some clone weather you want it or not. As a part of a floppy disk coping program(ah, the good old Amiga 500), some installation program(to make the installation less boring, I've seen it) or it came in a pack with some other game you were interested in. Even if you don't like the concept of Tetris you can't deny the influence it had on the computer game industry and individual game designers. Not to mention all the people who refused to play computer games before discovering Tetris.
Other thing that might have pulled you off is the fact that only SonicBlue's Bricks and perhaps Netris of all the QBasic Tetris games made any impact on the community. And those two games are far from the top 10 QBasic games. So you might think that an article of this kind can't be nothing more than a harmless way to fill the magazine with some content. I'm here to prove you wrong. Or not. You could be one of those actually interested in the topic of this article and are now very annoyed with this tedious introduction.
If you don't know what Tetris is I feel sorry for you. I can try to explain the gameplay but since there is around 20 links for various Tetris games in this article just download one and see it for yourself.
The Original Tetris
If you are wondering when the original Tetris was released and how it looks this section will answer all your questions.
Tetris was invented by a 30-years-old Russian researcher Alexey Pajitnov who at that time was working at the computer center of the USSR Academy Of Scientists in Moscow.
The original programmer was 18-years-old Vadim Gerasimov, a student studying computer science at the Moscow University. The original commercial Tetris was a result of the joint efforts of the Moscow University computer center and Andromeda Software from London and released by Spectrum HoloByte in 1987. All this is said in the very game so don't think I made some extensive research. We all know how Tetris inspired so many game designer and resulted in countless number of clones and remakes, some new probably being made as you are reading this. What remained through all these years are the default Tetris pieces, so perfectly constructed with 4 blocks per piece. All the new pieces that were invented never seemed so lucid as the original ones or added any depth to the original gameplay.
The original Tetris is not a bad game at all. I encountered that game for the first time on Amiga 500 and it didn't really appeal to me. Maybe it was the Russian letters on the title screen. I don't remember anymore. I have the IBM-PC version only for few months now. It supports CGA and EGA graphics mode and looks rather nice in EGA mode(better graphics than in many clones). The game plays
fine but maybe too fast too soon. I cannot be sure what's the game's optimum speed and if the program is able to optimize the game speed according to computer configuration. The game allows you to pick the starting level and the number of randomly filled rows in the bottom of the playfield. When a certain amount of horizontal rows is cleared the game speeds up and the background changes. The controls are rather uncommon compared with Tetris games that came after it. You play the game with the numeric keypad. 4 and 2 moves the falling piece left or right, 5 rotates it, 2 drops it and 8, which is very inconvenient, skips the level. These controls might drove away an inpatient player confused with the level skipping. What also doesn't help this game today is the fact it requires DOSBox to run on nowadays PCs. A charming point can be the communist note in the game like high scores table being entitled "Top Comrades" and the USSR references on some background images. Definitely a collectors item.
Download the original Tetris here: origtetris.zip (109 KB)
QBasic Tetris Games
QBasic Tetris games turned out to be quite a discovery in quantity as well as in originality. Definitely more than I expected to see. I've found 18 QBasic Tetris games total and few Tetris-like games. I'm pretty sure I didn't miss any game that should have been included. The number of QBasic Tetris games was a surprise to me since they are not that easy to code. Well, not easy as it's to code a Sokoban game and there isn't that many QBasic Sokoban games made(to my knowledge). This article will feature a small review of every included game accompanied with a score. The scoring system is devised especially for this article and it shouldn't be used as a reference with my other scoring systems. The games are scored with emphasis on how good and original Tetris games they are. Scores range from 1-5 and I also used tenths of a number. Since the games are listed from the lowest to the highest scores this allows me to list them more "precisely".
All uncompiled games in the list come with QBASIC.EXE and a batch file that runs the game. All the games were tested in Windows XP and they run fine without any need for shortcuts or DOS emulators. Few games require VDMSound for music or sound effects to work(those games run fine without VMDSound but silent) and I will mention in descriptions which games require that.
One game, Shayne Co's Tetris, was excluded from the article since it came with a fatal bug(the pieces don't drop by themselves). If that game worked it would get a score around 2.9 so you are not missing anything.
Ludatris
A truly bizarre game labeled by the very designer as a game not for sane people. If computer games were considered to be artworks Ludatris would be a respected piece of avant-garde. The game looks and plays very strange. Despite the highly original and hypnotic gameplay Ludatris is an extremely difficult game to play and enjoy. Wierd features like the drop key not dropping your piece but freezing it in the middle of the playfield or the random playfield movement in horizontal direction. I would render Ludatris as unplayable but I can't be 100% sure. Whatever the case is I'll stick to what Josh said - not for sane people. Ludatris doesn't feature any music or sound effects.
Developer: Josh Striblinge
Year of release: 2001
Screenshot: ludatris.gif
Download: ludatris.zip (39 KB)
Compiled: Yes
Final score: 2.1
Tetris
You might not agree with me scoring Jorden Chamid's Tetris so low but I just can't and won't fabricate my objective judgment. Jorden had an awful sense for game design(I'm basing this on his Tetris games). Both his Tetris games fail in one major way - they are so annoyingly slow-paced making them close to unplayable. Almost two seconds for a piece to drop one position and on level 2 the increase of speed is ignorable. The very screenshots might give an impression of a solid Tetris game with simple but clear graphics. I'll also mention few WAV sound effects(when you clear a row, end game, etc.) and MIDI background music(annoying). There is a certain sloppiness in the menu design but nothing serious. Still, all the positive aspects of this game become irrelevant with such a poor choice of game speed. In one sentence, playing this game feels more like a punishment than anything else.
Developer: Future Software(Jorden Chamid)
Year of release: 1997
Screenshot: tetris.gif
Download: tetris.zip (469 KB)
Compiled: Yes
Final score: 2.4
MHTris
Basing your judgment only on the screenshot you might wonder why such a low score for such a pretty looking game. Well, MHTris is one of those games which serves no other purpose but to exist and fill the designers portfolio. It looks nice(hi-res 640*480 graphics), features some silly story and flamboyant design but nothing more. MHTris' gameplay fails to contain the most important element of a Tetris game - the increase of game speed when certain amount of rows is cleared. It also doesn't feature any sort of high scores table(not even an empty one). If you are enough skilled you can play one round forever and the game will never become more challenging and exciting. It will play with the same speed constantly. This game seems like a waste of time to me. MHTris doesn't feature any music or sound effects.
Developer: MicroHuf
Year of release: 1998
Screenshot: MHTris.gif
Download: MHTris.zip (153 KB)
Compiled: Yes
Final score: 2.6
Tentris
A quite boring and uninspired Tetris game but it plays properly. Tentris is slightly too slow for my taste but not slow as Jorden Chamid's Tetris games. Tentris features some very high scores to beat. Some of the most challenging scores I've encountered doing this article.
Developer: Folker Fritz
Year of release: 2003
Screenshot: tentris.gif
Download: tentris.zip (48 KB)
Compiled: Yes
Final score: 2.8
QTetris
An interesting ASCII Tetris game featuring some strange rules which I didn't like that much. The game comes with few bugs but at least there are some high scores to beat. QTetris also features an incomplete two players mode where one player's pieces move horizontally while the other player's move vertically. Interesting but like I said, that mode is not finished and very buggish(read: unplayable). One very cool feature in this game is the piece set editor where you can create your own pieces. The game comes with few already made piece sets. I wouldn't recommend this game to people looking for a quick Tetris game. Only for curious people as well as those fixated with originality.
Developer: Belly Laugh Software
Year of release: 1997
Screenshot: qtetris.gif
Download: qtetris.zip (237 KB)
Compiled: No
Final score: 2.9
Tetris 2 - The New Blood
A very cool Teris clone introducing a new element in the gameplay - killing. While having to fill horizontal lines with blocks you can also kill the small stooges that keep falling in the playfield by slamming the Tetris pieces on them. The game features some nasty gore effects and a cool bonus related to them(blood dripping from the playfield). While the game feels very entertaining in the beginning you will soon become aware of the flaws in the gameplay. The playfield is too wide for a Tetris game so it's a bit tedious too clear a row. Also, the game doesn't speed up with time. It’s interesting to say that this is a pure QBasic 1.1 program not relying on any external graphics files and despite that the game looks very good(the movement of the stooges and the blood effects). Not something you’ll play over and over but worth being checked.
A note: tetris2nb.zip includes two BAS files. TET_NEW.BAS is a slightly altered source code where I tried to slowdown the game. Have in mind that it still might run too fast on YOUR PC.
Developer: Christian Dever
Year of release: 1998
Screenshot: tetris2nb.gif
Download: tetris2nb.zip (203 KB)
Compiled: No
Final score: 2.9
Tetris 2.0
This sequel to Jorden's first Tetris game does feature several improvements but the critical flaw from the first Tetris is not fixed. Tetris 2.0 features better graphics and nicely designed menus though the graphical design of the blocks is not something I would score high(shaded with bright edges). Tetris 2.0 also features a cool 2 players simultaneous mode as well as MIDI background music and few WAV sound effects(nothing fancy but it's there). While I can appreciate the improvements and solid look of the game nothing of this can hinder the annoyingly slow gameplay.
Developer: Future Software(Jorden Chamid)
Year of release: 1998
Screenshot: tetris20.gif
Download: tetris20.zip (434 KB)
Compiled: Yes
Final score: 2.9
Stevetris
Another unimpressive Tetris clone with below average graphics and ok gameplay. This Tetris game features a bit more complex scoring but the default high scores are very easy to beat. Another flaw is that the key pressing is slightly too sensitive. Stevetris also features few sound card(non-PC Speaker) sound effects which you can hear if you run the game with VMDSound(simple but very relaxing sound effects). Running the game without VDMSound might cause certain slowdowns when you clear a row. There is a funny story behind the reasons why Steve made this game. If curious check the game out.
Developer: Steve Rosenthal
Year of release: 2002
Screenshot: stevetris.gif
Download: stevetris.zip (56 KB)
Compiled: Yes
Final score: 3
QuadBLOX
A solid Tetris game interesting because of its huge Tetris pieces and a very small playfield. I guess this adds to challenge value. No special features. Quite challenging scores to beat. Only PC Speaker sound effects but they are surprisingly pleasant.
Developer: Derek Andrews
Year of release: 2000
Screenshot: QuadBLOX.gif
Download: QuadBLOX.zip (61 KB)
Compiled: Yes
Final score: 3
Blocks
A rather odd Tetris game featuring very poor presentation and poor graphical design. It features 3 game modes, two with 4 blocks per piece(standard Tetris pieces and difficult pieces) and one with 3 blocks per piece. Blocks also allows you to change the width of the playfield, to turn on/off the bombs and to modify few other less interesting parameters. The very playfield is uncommonly high(deep). The problem of Blocks is the already mentioned poor presentation and the stupid high score system which remembers only one score(despite of different game modes and parameters that influence on the difficulty). The gameplay is ok(level-based; color of pieces changes as the levels progress). No sound effects or music.
Developer: Hamster Republic Productions
Year of release: Unknown
Screenshot: Blocks.gif
Download: Blocks.zip (45 KB)
Compiled: Yes
Final score: 3
TF Tetris
An average Tetris clone featuring MIDI background music(yuck) and one Sound Blaster sound effect. The graphics are mediocre mostly due the poor choice of colors. Mouse controlled interface. Ok gameplay. Empty high scores table. It's interesting that TF Tetris, while featuring Hall Of Fame(10 best scores), also features Hall Of Shame(10 worst scores). The question is where you will find people to fill both of them. TF Tetris plays in different colors if you run it in DOSBox but it's nothing that changes my low opinion about the graphical design.
Developer: TF Software
Year of release: 1998
Screenshot: tftetris.gif
Download: tftetris.zip (198 KB)
Compiled: Yes
Final score: 3.1
Future Blocks
An interesting Tetris game featuring huge amount of options and an AI which allows you to play against the computer(not simultaneously; higher score wins in set number of pieces). It features hi-res(640*480) but quite drab in-game graphics. Menus, on the other hand, are very cool(huge font). The problem with controllable parameters in this game is that you can change them above the playable values(for example, playfield going off the screen limits) or even to negative values(can screw up the game but not crash it). Also, I don't know what half of them does(I couldn't decipher their effect) and the game doesn't come with instructions. Other flaws are the lack of high scores table, game not speeding up with time(I didn't notice it after 40 cleared rows nor a speed variable in the source code) and the lack of sound effects and music. So I'm quite split when giving a final score to this game. It has some neat options and modes none of the other QBasic Tetris games have(like playing against the computer) while in the same time it fails to feature some crucial elements of the Tetris gameplay. If you are into games with many controllable parameters but without character get Future Blocks.
Developer: Michael Fogleman
Year of release: 2000
Screenshot: futureblocks.gif
Download: futureblocks.zip (52 KB)
Compiled: Yes
Final score: 3.1
QBasic Tetris
A nice Tetris game with not so colorful graphics(single color Tetris pieces) but well designed overall(very specific for this designer). QBasic Tetris features nice menus, instructions and a lot of options. In QBasic Tetris you can choose the starting speed of the game, complexity of the falling shapes and few more interesting parameters. I should mention that the controls don’t include the down key(used when you want to speed up the falling of a piece) but only the drop key which can be a bit frustrating. If you choose to download QBasic Tetris don't expect nice graphics but a very well executed Tetris game. Empty high scores tables. The game also features PC Speaker sound effects but I doubt you'll play this game with sound effects turned on.
Developer: Dominik Kaspar
Year of release: 1998
Screenshot: QBTetris.gif
Download: QBTetris.zip (68 KB)
Compiled: Yes
Final score: 3.3
Didris
Didris is a quite original Tetris game featuring various extra elements in the classic Tetris gameplay. In Didris, similar to Tetris 2 - The New Blood, small stooges keep falling in the playfield(one by one) who you need to kill as well as prevent this helicopter to reach them. The classic objective is still there – clearing horizontal lines. Another feature is acid rain which you can use after certain amount of pieces is dropped and which eats away parts of the dropped pieces. Sometimes a bomb appears instead of a Tetris piece which destroys pieces around the contact zone. Very colorful design and all done without external files(pure QBasic). What lowers my overall impression is the movement of the stooge and the helicopter which is not pixel based and the lack of blood effect when you kill a stooge(funny how I consider this a flaw). Didris only features PC Speaker music(yuck) which you can, luckily, turn off. I don't understand why someone would take the trouble to compose PC Speaker music. I must be honest and say that Didris didn't get me hooked despite all the extra features. That might not be the case with you so I urge you to try out the game yourself.
Developer: Dietmar Moritz
Year of release: 1998
Screenshot: didris.gif
Download: didris.zip (91 KB)
Compiled: Yes
Final score: 3.3
QB MATRIX
Some of you might wonder why I'm scoring QB MATRIX better than, for example, QuadBLOX or QBasic Tetris but this is just a result of small details. QB MATRIX is better grapically designed than the previously mentioned games featuring really pleasent colors and nice looking Tetris pieces. Also, QB MATRIX features a very neat interface where you can keep a quite detailed track of your score. As for options QB MATRIX allows you to choose the starting level, amount of filled lines in the playfield on the very beginning and to turn on/off the slam mode. QB MATRIX only features PC Speaker sound effects and they are poor(you can turn them on/off). High scores table is included but it comes with ridicoulously easy deafult scores to beat.
Developer: Tim Truman
Year of release: 1996
Screenshot: qbmatrix.gif
Download: qbmatrix.zip (208 KB)
Compiled: No
Final score: 3.4
Textris
Textris could easily be scored with 3 by someone else. This higher score is a result of my personal(might not be very rational) likeness of the game. Textris is a simple Tetris game with the classic gameplay and average graphics. It only features poor PC Speaker sound effects. So what I like so much about this game? The simple and effective design. Textris doesn't feature any menus or a title screen. Everything is on a single screen, even the high scores table(the default table is empty). This makes Textris one of the best "quick" Tetris games in the QBasic world where you don't have to think about game parameters and similar stuff. Just one double click and you are playing a Tetris game. The constantly present high scores table is another plus. Textris has a multiplayer mode but since I don't own any kind of local or Internet connection I was unable to test it(it asks for a com port number). Textris also features mono color particle effects in the background which you can change from effects like fireworks to deep space.
Developer: Crystal Vision
Year of release: 1999
Screenshot: textris.gif
Download: textris.zip (59 KB)
Compiled: Yes
Final score: 3.4
Netris
I'll be honest and say I didn't like Netris much on the first try and originally typed in a much smaller score. The biggest reason for such impression was the psychedelic(I'm not sure how else to describe it) menu design and boring in-game backgrounds. But after a more throughout examination of the game I realized it deserves a higher score. Netris features the classic Tetris gameplay(no extra features) and the game overall is well executed. The graphics are above average(with the best looking Tetris pieces of all the QBasic Tetris games) while the sound effects are good(Sound Blaster compatible). There is also the atmospheric(but maybe not the most suitable) background music which you can hear in Windows only if you run the game with VDMSound. Netris supports IPX protocol multiplayer mode but I was unable to test it. Despite my change of original opinion to better I still feel that Netris could use a better design with a more coherent style. Netris is originally a VBDOS game but the package comes with a stripped QBasic source code. So I'm not sure how much Netris belongs to this article.
Developer: Vertical Horizons
Year of release: 1998
Screenshot: Netris.gif
Download: Netris.zip (95 KB)
Compiled: Yes
Final score: 3.8
SonicBlue's Bricks
SB's Bricks features the best graphics and graphical design of all the QBasic Tetris games. I only have one negative thing to say about the graphics and that's the awkward look of the Tetris pieces. They are without textures but feature bright and dark edges which makes them look wrong when stacked up in piles. SB's Bricks features MIDI background music but the setup file for them is horrible. You need to set the path to a specific MIDI file and set its length! Bwhat?! Stupid. Anyway, the MIDI tracks are poor as usual. While featuring very good graphics and the classic gameplay this game also offers two extra groups of pieces you can turn on/off. Funky pieces increase the game difficulty because they are hard to connect with other pieces while special pieces have some special "abilities" like ability to destroy dropped pieces or adding single block pieces onto the dropped pieces. Very original features and they add a new flavor to the classic Tetris gameplay. SB's Bricks comes with a high scores table filled with challenging scores and a save game option. I think you expected for SB's Bricks to get the highes score.
A note: I'm not sure about the year of release with this game. It seems too early to me but the only available information about the release date is the files' last date of modification.
Developer: Eric Schneider
Year of release