BlitzPlus - BASIC Development

When you use XML wisely it isn’t overkill: using it via the Java lib is straighforward and handy, even for simple games when they need to load/store any kind of hierarchical data. I wouldn’t use it for plain flat non-hierarchical data files. For other data not using it means some kind of re-invention of the wheel… (and it takes time)

[quote]An idiot can write idiotic games with Blitz better than he can write them with any other language. If people want to make a good game they need a good game idea and that is not the programming language that is going to do the miracle. Its how much games people play and how much they assimilate of the game design and mechanics of game classics that will help them. The tools only make it easier or not to realise that game idea.
[/quote]
That’s the point, really. Excellent summation!

I know why Cas’ complains and I understand his motivation well: it’s because today, writing even relatively small games can be tedious and take a long time. Unfortunately, today’s computers/consoles/pdas aren’t as simple as an Sinclair Spectrum, C64 or CPC has been… For many reasons.
Like Cas I wished there was a super language allowing to program games by pressing some keys… but that’s just fantasy. Remember this “Shoot’m up construction kit” on the Sinclair Spectrum? It remembers me to Blitzbasic (of course more complex) but it really sucked (Ok, even an “idiot” could produce “something” with it, but no game). :slight_smile:

Many game (and application) developers meet this increased complexity by using more and more middle-wares. A solid and comprehensive library for most dev tasks like the Java one is a good start. However there have to come more specialized middle-wares to the Java world, in particular for games.

Now come on, I thought you guys were being really open minded earlier in this thread, it now seems to have degenerated to:

Blitz Basic is crap because

  • Its Basic
  • Its not Java
  • We write games that are much more complicated than anything you can do in it.

Bombadil was dead on so far to my experience earlier, its a tool. Its suited for some games not for others. It just happens Cas is viewing it from the Indie market and Blitz is very very good for creating games of that scale.

Thats not to say that we couldn’t learn alot from the way Blitz is put together. If I could have the powerful scenegraph and tools I’ve been playing with in Blitz3D along with a language as great as Java, and of course finally a VM the size of a walnut which I could add and remove bits to as I felt my world would be a happy place.

So, come on, one of the things I really value about using this forum is the ability not to be close minded. We’re so used to the assumption that “Java is too slow” lets not add outselfs to that camp.

Kev

Hear hear :slight_smile: I’ll just take back that ass-wiping and try and rephrase myself here:

To an aspiring game developer the initial choice of tool goes something like:

  • Blitz
  • Java
  • C++
  • C#

Both Java and C++ require some serious buggering around before you even get a sprite on the screen. Java is more or less entirely useless until you plug LWJGL into it in the first place but at least it’s easier than C++ by quite a huge margin.

C# is a major competitor to Java in the games space and it is already, ooh, about a light-year ahead in functionality. You get C++ power with its directly integrated DirectX and you get Java simplicity with its syntax and behaviour. But Sun are lucky! Microsoft have chosen not to distribute the .NET runtime with XP so far, so it’s just as unlikely as Java to be used by games developers for the sake of compatibility. Remember - if it don’t run, it don’t sell.

But when your primary concern is getting a 2D or 3D game up and running and working and selling in the minimum amount of time, and make no mistake that’s what the business is about, you just can’t ignore Blitz. I couldn’t give a rat’s arse about the syntax “not being as nice” as Java - you get used to it. Or the relatively primitive OO capabilities. You get used to it. Or the lack of XML processing - the smart observer really tracking this thread will have already looked in the Bugatron installation and discovered that all the data files were once XML.

The huge extra size of embedding a VM with your game is just a final kick in the spuds. (Webstart still sucks, for the masses)

So Sun’s trying to attract all these game developers, and old and new alike can turn around and sniffily ask, “So? Why should I switch from XYZ to Java when Blitz is doing it better already?

Cas :slight_smile:

Yes its whipped. These unfaithfull followers. ;D

We definitly could so. And not just with Blitz but also with commercial games that offer a excellent editor and modding resources. I sugest looking inside the Doom3 editor and the downloadable sdk. The TESCS (from the Elderscrolls game Morrowind) is also interesting to look at. But the one im waiting to examine is the HL2 engine.

Here’s a modding FAQ of it of HL2:
http://collective.valve-erc.com/index.php?faq=source_mod_faq

The size of the java vm doesn’t really bother me. This was discussed plenty a couple of months ago in a thread made by that univ teacher who was doing a book on java games.

As for the language im an OO fanatic since i first knew about the concept. I knew from the beginning that Java was not a complete OO solution and it is lacking many important features when compared to Eiffel and other stronger OO languages. But even knowing this, when choosing a working tool we have to be persistent with it. It’s not a good idea to drop whatever tool we’ve invested so much learning for something that looks like its shining brighter at the moment.

Im not being hard headed here im just being persistent with my tool of choice. Besides there ae other things Blitz doesn’t offer. For instance an IDE like Eclipse; a tool for automatic code checking/correction like JML; a package like JUnit to create tests; all the UML tools available for java. This may look like an overhead for a simple game but for a bigger one its a “pain in the ass” saver. :wink:

Its possible that Blitz scenegraph may be very good, maybe better than the one used in other solutions offered in Java. But wouldn’t it be possible to wrap it in a couple of Java classes and build it on top of one of those opengl bindings for Java ? I think that what people are asking is something that lets them easly and fast create a functional prototype of a game and then throw it away after being studied and tested.

Zingbat’s and Kev’s emphasis on the OO aspect is important I think.

  1. Once you’re used to use a full OO language like Java/Cpp - and aside Cas most of us are just partly/hobby game devs who use OO at day/part-time anyway - you’ll naturally want to write even so called smaller games in a solid OO way.
  2. You’ll want to approach a so called smaller game the same way you’d approach a 10 man-year game: from a development point of view it’s the very same, it’s just more thin and needs less graphics, resources, etc which I like a lot.
    So yes, it’s again the tool question: once you’re very good with your OO tool (maybe you’re even a master) you’ll be able to use it the same way for your smaller game - provided there are some appropriate middle-wares: JOGL/OpenGL_binding, Xith, Ode, … depending on your game’s needs.

So, for me the “fast” of Blitz doesn’t mean the same “fast” which is important to me: to master an OO language; the better I know how to use that tool the faster I’ll develop my game with it - and my daily business app by the way (that’s the funny part of it: the things you learn with your game you can use for your apps and vice versa, this also applies to XML).

As of Cas saying Dotnet would be a light year ahead of Java: good joke! It’s even complicated to make your Dotnet installation to use the correct managed DX version (forget to embed a Dotnet VM with your app)… Starting a Java plus Jogl application is very simple on the other hand. But that’s another topic. Back to Blitz… ahem, Java. :wink:

By the way: the idea to embed a certain 3d scengraph inside a language looks like a bad idea to me. A scenegraph is a middle-ware and it depends on your game which middle-ware fit your needs best.
Carmack wouldn’t want to use a scene graph based 3d API like Netimmerse/Gamebryo for his indoor games… (and not for real-time terra-forming games, etc)

Writing a Blitz like library is definitely do-able with current Tech. However, its not here and each and every effort in this direction aims to get this really high end solution which is for most indies worthless anyway.

The VM size isn’t an issue for large deployables, I agree. if your distribution is 100MB who cares how big the VM is? However, when you’re attempting to sell games via the net with no CD distribution you’re going to be pushed trying to get folks downloading demos of things they don’t already know are great (i.e. people will of course download the 90 meg Doom 3 demo cause of the hype).

Kev

people will of course download the 90 meg Doom 3 demo

461mb :slight_smile:

People will also download a 30mb video, because someone wrote “lol” next to the link.

There was an article about broadband today on heise.de

~“Nowadays there are 5 million DSL users in germany. Till 2007 there should be twice as much and in 2010 there should be 17 million.” ;D


Really, look harder! Install Bugatron. Total executables
size including all DLLs: 737kb. Super Elvis - comparable in
scope - 12.5mb or so.

That comparision was so off and you knew it, Cas. The biggest chunk of SE is it’s media. 12.5 mb of (byte)code would be pretty gigantic. Maybe you would get that much for something like photoshop, but not for a small game.


Ok. Back to the topic. Blitz. Well, it’s basic and I’d written that stuff alot in the past, but I really really hate it.

Do you still remember why Java is so nice compared to C++? Because you aren’t able to do those silly hard to track bugs. Because you won’t crash your PC with a small typo or because you forgot a small detail.

I heard debugging in Blitz is a major PITA. Well, I won’t take a closer look, because I won’t use it anyways.

When doing a game you spend different amounts of time for different tasks. When changing one tool in the chain there will be a change in different places. Exermine if it will really make a difference at the end. Maybe it would be worse.

You have those once in a moon tasks for loading media or wrapping entities into objects. Loading media in Blitz is of course easier (from scratch), but you won’t write that stuff too often anyways. And if you need that stuff you can either use a ready to use class or reuse some code blocks. For example I spend the last few weeks with writing game logic. Control flow, collision detection/response etc. This kind of stuff isn’t less work in any language. If/else, loops etc. What’s important there is the turnover rate (how long does it take to test a change).

With Janino that turnover rate is down to 1.5 seconds. It won’t be any faster in Blitz (guess it’s much worse) or C++/lua (about the same).

I’m really pretty much down to that amount of work, which needs to be done in any language/script language combination.

Actually the 12.5 MB is apparantly all executable, the media is more like 49 MB, I quizzed Cas on this earlier :wink:

See, there we go. Collision detection is actually one of the nice things I’ve found so far. A basic version (good enough for most Indie type games is already present).

Now I agree that “control flow” or “game logic” isn’t going to get easier in any language. In fact it’ll be easier in a lanaguage that supports OO.

However, I’m not sure I agree on your weightings of what takes up the time and causes the bugs. Why do we use scenegraphs and loaders for 3D rather than write the whole thing ourselfs? Simply because getting a 3D world working efficently and getting the media in isn’t actually that easy. Getting the game to look and feel the way you want is at least half the battle. Ok, the game logic is still a big chunk.

Again, I’m not saying Blitz is a Java beater, just that if we just dismiss based on hear-say (debugging in Blitz isn’t the greatest btw ;)) and conjecture we’re missing an opportunity. From playing with Blitz I’d consider writing my next support library in a different way. I was wondering however quite how much of this stuff JME has already…

Kev

Collision detection is actually one of the nice things I’ve
found so far. A basic version (good enough for most Indie
type games is already present).

Hum yea, a basic one. I wouldn’t even mention a basic one, because it isn’t much work (if simple rect/circle overlap checks are enough… AWT has that stuff).

Why do we use scenegraphs and loaders for 3D rather than
write the whole thing ourselfs?

Yes, we use that kind of things. Therefore we don’t have to write that stuff again and again. Exactly my point :slight_smile:

Blitz is like any other language the only difference is that you start with a pretty usable framework. For a Java2D game it’s copying some files over and paste a block of code… and I can start right away. Everything left to do is writing the game’s logic and wiring pieces together. I don’t really see what I could gain there with Blitz.

[Note: right now I’m doing 2D games only and it won’t change that soon]

Well, I can only suggest you actually try it from scratch, and then try to unlearn everything you know in Java and write the same thing from scratch.

It seems to me that it requires a disproportionate amount of experience to get the same results in Java as Blitz.

Cas :slight_smile:

Didn’t mean to start a screaming matching. I have in one weekend almost completed a game. Mind you it is fairly simple, but then that is exactly the type of games I want to build. I’m sure at some point I’ll find something I can’t do in Blitz.

[quote]hehe I went to www.retro64.com to try out some games, just to leave it again, when I remembered how tedious installers are for small puzzel games you’ll just play for a short while. I guess Webstart, Applets and Shockwave has made me lazy 8)
[/quote]
WebStart is an installer.

[quote]There seem to be two disadvantages:

  1. File size - the produced executables are pretty huge.

  2. Flexibility - seems like all the examples I look at are pretty damn similar looking and feeling. Although this could just be down to the developer…

EDIT: 3) Can’t find any support for standards. No XML processing!!!? Web connections would have to be implemented by hand?

EDIT: 4) Can’t find any support for database access?
[/quote]
1> MY little game is < 1 meg and needs no JVM.
2> I get the impression these guys are no very worried about making killer demos to include with the compiler.
3> It is a language, libraries can be written, if absolutely needed.
4> I don’t see anything here either however a simple ISAM library should suffice for most games and that is easy to write. You don’t need a SQL database on the gamers computer in most cases.

[quote]I’ve been playing a lot with DarkBASIC. I’ve been impressed by it, but frustrated at the same time (I guess it’s like that with anything). I haven’t tried BlitzBASIC to compare, but you might try it out to see what you think.
[/quote]
Thanks I’ll check it out.

[quote]TYPE - seems to be structs for Blitz3D.

Kev
[/quote]
Yep same for BlitzPlus, but if you write littel modules with types and functions that act on the types then you basically have classes.

[quote]For simple games that don’t require complex terrain algorithms, complex AI behaviors or a scene graph its the right tool.
[/quote]
In my case simple is exactly what I want, I’m never going to write a game that is like Doom or Quake. I’m more concerned about Solitare.

I think this is backwards, c++ and Java are the super weapons.

I know the feeling, it took me about eight hours to stop trying to think like I do when coding in Java. Once I let go of that I made real progress.

[quote]I started programming Basic games when I was 8 years old. 1978. Retro-chic is one thing, but that’s taking it a bit far.
[/quote]
Use the right tool for the right job.

Right, so why are you arguing against Blitz being used when it fits the particular problem?

[quote]Besides there ae other things Blitz doesn’t offer. For instance an IDE like Eclipse; a tool for automatic code checking/correction like JML; a package like JUnit to create tests; all the UML tools available for java. This may look like an overhead for a simple game but for a bigger one its a “pain in the ass” saver. :wink:
[/quote]
IDE http://www.proteanide.co.uk/index.php?pid=shots

JUnit has nothing to do with Java the language it’s just a library, same could be written for Blitz.

As far as UML tools I assume your mean UML tools that perform code generation for Java. Otherwise UML has nothing to do with what language you are working in.

I don’t doubt you can do a game with Blitz very easy. You don’t need to convince me of that. I tested some of these easy packages myself and made some simple game prototypes with DarbasicPro, Blender Game Engine and VRML. If your game is simple then Blitz and its framework can be a perfect solution. But i bet you will later want to do something more complex to improve your game and thats why OO is good. Because it lets you build your game incrementaly better than anything else. You may want to forget about Java and try to think in Blitz but i bet that this will just open your mind to come back to learn Java and OO techniques better.

I said i used these easy packages but it would be much better to have some sort of Blitz thing in Java. Then we would have both the advantages of a solid programming environment like Java and the advantages of Blitz for its soft learning curve and the possibility of building game prototypes fast and easy. This would be a nice Javagaming community project.

I think you vastly underestimate the ease with which you can write and refactor games code in BASIC. And also the sheer power that Blitz actually gives you to just get on and write games. Look at Best Friends (Retro64). Another Blitz “effort”. I mean, how long would it take to write that in Java from scratch?

BTW it may come to some as a surprise but LWJGL was designed after looking at Blitz… - get my drift?

Cas :slight_smile:

I was talking to a collegue about writing a Blitz style library based ontop of JME today… the only problem in my eyes is we’d still be dependant on the VM distribution. I realise this doesn’t concern some of you but I to me its a fairly big hit. It would still be nice to write Blitz style code in Java



World world = new World();

Entity player = LoadEntity("alien.md2","alien.skin");
player.setType(MyTypes.CREATURE);
world.add(player);

Entity level = LoadEntity("testlevel.b3d");
level.setType(MyTypes.TERRAIN);
world.add(level)

Collisions.defineCollision(MyTypes.CREATURE,MyTypes.TERRAIN,Collisions.STANDARD_SLIDE);

while (running) {
    // handle key input
 
   World.update();
   World.render();
}


Kev

From my experience most of the time needed to finish a program isn’t the code development itself. It’s the uncountable tasks around: design, architecture, interfaces between the program and its outside world feeded by artists, level designers, musicans, (let’s say data management), tools (this can be excessive), testing, profiling, tuning, debugging, deployment… to name some important ones.

Naturally, the langage is important, because it shouldn’t hinder development but let you shape what’s inside your head and on the design paper. That’s why I choose Java over C++ any day, for example.

In a large development team there’s people for all the different tasks usually, say some handle the data management, some the game logic, some the AI, some the 2d/3d graphics, some the tests, etc. In such teams it’s possible that a few developers really program most of their time - but still they would like to choose a rock solid OO language being able to handle many thousands of lines of code from different people.
However, for small teams or one-man teams, the developer usually has to handle all the tasks alone…

That’s why Blitzbasic won’t help me with my spare time retro game project. Some nice tools [¹] and Java middle-wares would help however. :slight_smile:

[¹] Tailor made for my game of course, hehe.

[quote]WebStart is an installer.
[/quote]
I think the point being made was that webstart is an installer that you don’t see (you click once, then it’s done) as opposed to having to click-click-click…-(read text to choose one of eight different options)-…click-click etc

That happy statement suggests you’ve not done much (complex/powerful) library writing before - a language can make it an absolute bitch to write libraries, or at the other extreme make it beautifully simple and stress free.

Even with all it’s expressive power, polymorphism, etc, java is only 75% easy 25% hard along that scale from one extreme to the other - I’ve used languages that had much better support for writing libraries.

I suspect Blitz makes it really hard? We’d have to ask someone who’d tried doing something major to know…

[quote]In my case simple is exactly what I want, I’m never going to write a game that is like Doom or Quake. I’m more concerned about Solitare.
[/quote]
Great. Just be careful not to start games small that you hope to make big someday (perhaps on version 3 or similar) when you’ll get bit on the ass :(. (been there, done that, bitter forever more :P)

[quote]JUnit has nothing to do with Java the language it’s just a library, same could be written for Blitz.
[/quote]
One would hope so. However, c.f. above comment on library writing - it might turn out to be prohibitively difficult and/or tiresome and fiddly to write / maintain / use depending upon Blitz’s language-level support for libraries.

[quote]I was talking to a collegue about writing a Blitz style library based ontop of JME today
[/quote]
It’s been mooted before a couple of times, hasn’t it, although without much of a strong reception?. Cas has briefly been a cheerleader for it. Is this something the GTG could do particularly well post-JOGL? They’ve got some experience now of releasing a game-dev support lib, maintaining it, managing the project, etc?

Actually, looking at JME, it might be pretty easy just to write. Should I ever get the data off my laptop and finish GB, I’ll probably consider it my next project :slight_smile:

Kev

Consider using SPGL and LWJGL as a base for it.
A lot of Blitzness can be achieved with static import.

Cas :slight_smile:

I have to say I was thinking of emulating Blitz3D not Blitz2D… the problem still lies in the size of the VM tho :frowning:

Kev