Would you release a game coded in Blitzmax?
Miscellaneous Forums/General Discussion/Would you release a game coded in Blitzmax?
Inspired by my
Speedtest thread...
It seems that Blitzmax doesn't get along too well with on-board graphics that are typically associated with laptops. The results as I write this tend to suggest that a program will run 5 to 10 times slower on a laptop than it would on a desktop system with dedicated graphics.
Having put several months of work into my current Blitzmax game, this concerns me greatly.
Is my concern misplaced? Is this problem as extensive as I think it could be?
I would hate to release a game then get 90% chargebacks because the game simply does not run fast enough to be playable on the 'average' system.
I appreciate that a minimum specification must be set and you can't write a game that will work on any PC in the world, but still... I'm worried.
Thoughts please...
It depends on what the game is. I wouldnt expect HL2 to run on a crappy laptop (like mine), but equaly I am really annoyied that Civ iv wont run on it.
That is if its a game that is "Graphics driven" then OK fair enough, if on the other had it isnt. (Civ as said, Ufo Aftermath etc), then its unacceptable
As I said in the other thread, this isnt a thing with Bmax, it simply because my computer (sis chips) is/are crap.
I can't vouch for laptop testing as I've done none myself, but I can certainly agree that certain older systems or systems as you say with on board graphics or other unusual sorts of configurations can work horribly in Blitzmax.
I'm kinda sorry Dave that you have had to find out the hard way about some of Blitzmax's issues.
I've written and completed 2 games in Blitzmax so far, one of which needed minimum system specs. I had o spend 3~4 weeks converting one of those games into B3D +NSprite from Blitzmax, didn't take too long with search and replace etc. But it was a bit still a right old pain.
I often voice my concerns about Blitzmax being slow for seemingly trivial things, but whenever I do, I get flamed with mountains of claims from people saying it's wonderfully fast. So I just give up and leave people too it, they know best. All I know is, I have 2 identical versions of my game, one written in Blitzmax, and the other written in B3D and NSprite, They are almost 99.9% the same, NSprite does a good job of emulating all the nice gfx things about Blitzmax, barring the old skool style of coding instead of Blitzmax's great OO style I can live with it.
The difference is, one of them runs at 60fps on my P2 333Mhz and the other runs at about 3~4 fps. 2D gfx shouldn't be this slow on certain PCs, and in B3D you get FMod and other things that weren't broken in the first place. But I suppose on the upside, this issue is bound to decrease as newer hardware comes out and Blitzmax improves. I'm not sure whether you should be worried or not, but I'm not planning on making a 3rd game in Bmax, that's for sure. Back to B3D for me.
Is my concern misplaced?
Depends on what kind of lifecycle you expect for your product. If you're expecting a 6 month lifecycle, then yes. If you're expecting a 7 year one (most common) then no. By the time your game will have acheived mainstream penetration, there's a good chance the same will be true for non-crappy graphics chipsets.
Is this problem as extensive as I think it could be?
No. People who intentionaly buy crappy laptops are not buying it to play games on in the first place.
That is if its a game that is "Graphics driven" then OK fair enough, if on the other had it isnt. (Civ as said, Ufo Aftermath etc)
Ofcourse if it's a turn based strategy game it doesn't really need to run at 3000+ fps.
@Flame,
Ofcourse if it's a turn based strategy game it doesn't really need to run at 3000+ fps
Thats the main critism of Civ iv, it simply wont run on anything less than 1gig and 512Meg Graphics. (stupid Fraxis)
If people play the demo and it works they'll buy it and if it's slow they won't so you won't get loads of refunds (is that what you meant by chargebacks?). My puzzle game seems to have a good framerate on my crappy on-board graphics laptop, and I'm gonna keep release BMax games cos I'm not going back to non-OOP BPlus or B3D.
GfK, have you tried a Blitz3D version of your speedtest?
I can see why you're worried though. If your game is going to be targeted at the "average" PC then it will be integrated video cards you'll be up against, be it desktop or laptop PC's.
If I were to run your speedtest on a laptop bought last year, I bet it would run a whole lot faster. But, it really depends on your target audience.
My laptop can run Quake III very well, so why doesn't a simple thing like your speedtest fly along? - Back to what I said in the beginning, I'd like to compare with a B3D version.
If I were to run your speedtest on a laptop bought last year,I bet it would run a whole lot faster.
Err, I bought mine in November, its not how old it is, its that onboard chips are crap
Up until about a year ago, nearly all of my work was done on a p3 laptop. And now its on a p4 laptop, so yah i'd do it.
GfK, have you tried a Blitz3D version of your speedtest?
Just.
Desktop:
Blitzmax - 1100FPS
Blitz3D - 1500FPS
Laptop:
Blitzmax - 90FPS
Blitz3D - 235FPS
If you're getting that much speed difference then I'd say something is very wrong with how BlitzMax does it. *cue flames*
ijm using max for the language and external libs for graphics, it works fine like that.
i've had a few people test their pre-release completed games on my laptop, ATI onboard this time, and it would drop to 1fps.
funny that, the same has happened with a newer X1300 card too....
Yeah, the laptop problems I can more or less accept since its pretty old now.
My desktop PC has a Radeon 9600 in it, but Blitz3D still manages to be 37% faster. There's no way I should be getting such a vast difference.
BB3D code below - its a bit mashed together (as was the Blitzmax version since I'm just testing the concept of tiled images) but it's to all intents and purposes the same. Give it a try (with debug off).
Const gWidth = 640
Const gHeight = 480
Graphics gWidth,gHeight,16
bkg = LoadAnimImage("bkg.jpg",128,128,0,48)
Const hScale# = gWidth/1024.0
Const vScale# = gHeight/768.0
Const hStep% = 128*hScale
Const vStep% = 128*vScale
Global drawCount = 0
Global t = MilliSecs()
Global lastdrawcount = 0
ScaleImage bkg,hscale,vscale
While Not KeyDown(1)
drawcount= drawcount + 1
DrawBackground(bkg)
Text 20,20,lastdrawcount
Flip False
If MilliSecs() > t+1000
lastdrawcount = drawcount
drawcount = 0
t = MilliSecs()
EndIf
Wend
Function DrawBackground(hnd)
Local X% = 0
Local Y% = 0
Local maxFrame% = 48-1
Local imgFrame% = 0
For Y = 0 To GraphicsHeight()-(ImageHeight(hnd)*vScale) Step vStep
For X = 0 To GraphicsWidth()-(ImageWidth(hnd)*vScale) Step hStep
DrawBlock hnd,x,y,imgFrame
imgframe= imgframe + 1
If imgframe > maxframe Then imgframe = maxframe
Next
Next
End FunctionCurrently toying with reverting back to Blitz3D permanently...
Err, I bought mine in November, its not how old it is, its that onboard chips are crap
If it's that bad and still in warranty I'd take it back. A brand new laptop less than 12 months old should not have similar graphical performance to a laptop thats 4+ times older.
When BlitzMax first came out I had two problems with speed on an Intel integrated graphics system - my laptop and main computer were very fast so no problem. I bought the computer for testing slower systems that might be in use - wish I'd kept it actually.
Firstly, there was no DirectX support at the time - only OpenGL. I remember running a program at 1FPS! Updated the drivers and things really improved - in other words OpenGL support can vary - which are you using OpenGL or DirectX?
Secondly, I found square textures should be used at no larger than 256 X 256 (BlitzMax uses 3d texture mapped quads for it's 2d). Otherwise the Intel graphics were very slow.
These 2 things made a massive difference to the speed of my program.
Another thing that might help is this DX9 driver code that someone wrote which can be found here on the board.
Especially to intel, this should be like day and night, as Intels DX7 drivers are nearly as worse as the OpenGL ones ... (on my 7600GT it does not make a real difference between OpenGL and DX9, DX7 logically is about 30% behind ^^)
Similar results for me.
I create bmax code which does the same as the B3D code.
With the DX7 driver I got the same results as most other people : 1200 Bmax 1800 B3D.
The DX9 driver made a difference : 1700.
The OGl driver improved upon B3D : 2000.
This is on my 9600 desktop rather than a laptop.
<edit> Just noticed Skid's update in the other thread re:solidblend which seems to make performance slightly worse.
I sure would release blitzmax stuff, regardless of laptop performance. You can't blame blitz for hardware slowdown.
Similar results for me.
I create bmax code which does the same as the B3D code.
With the DX7 driver I got the same results as most other people : 1200 Bmax 1800 B3D.
The DX9 driver made a difference : 1700.
The OGl driver improved upon B3D : 2000.
This is on my 9600 desktop rather than a laptop.
<edit> Just noticed Skid's update in the other thread re:solidblend which seems to make performance slightly worse.
I just tried the same code with GL instead of DX - GL costs me 200fps for some reason.
Try synchronising the BlitzMax modules. I had the same problem on my old laptop, but when I synchronised the modules it got much faster.
Tried that - all up to date.
BB3D code below - its a bit mashed together (as was the Blitzmax version since I'm just testing the concept of tiled images) but it's to all intents and purposes the same. Give it a try (with debug off).
It's not the same. Max2D uses 3D hardware to render 2D, Blitz3D is using 2D hardware. An equivilant test would be to use quads in B3D.
@Michael,
Thats a realy stupid thing to say, the whole point of the thread is that Bmax isnt that fast on old graphics cards. And you turning round and saying, "But look you are using a system on B3d that is faster, so you should use this other method that isnt"
The whole point of these posts is that you effectivly have to use quads in Bmax
If you want to post something useful, post how to make Bmax faster, not how to make B3d slower.
I mean obviously you are right, but that doesnt mean we should change the way B3d is tested. The test is, this is the fastest way to do it on each, and b3d is faster
Yes, the B3D test should be using nSprite or something. Otherwise you are being horribly unfair. =]
Oh piss off. It's not a system in B3D that's faster, its a system in B3D that's different. Max2D uses 3D hardware for a reason - realtime scaling, alpha, blend effects. Want to benchmark those in B3D? Yes, this test will be significantly slower in Max2D. That's not a bug, not a mistake, it's by design.
And that of course isn't directed at the deceased.
@ I know that Michael, but the test is this is the fastest way to do it in bMax, and this is the fastest way to do it in b3d. And then you say it isnt fair, because the method we used for the b3d test is faster.
Well dipstick, thats the point.
An equivilant test would be to use quads in B3D.
Im just as fast as A F1 racing driver, if we make him take the Bus. it just wouldnt be fair to let him drive a F1 car, would it
I made no comment on it meaning that Bmax was slower, or worse. The simple statement the comparison makes is that you can do it faster on a non 3d computer in B3d. But be my guest, write a version were it is slower in b3d, it probably isnt hard
And, but he can correct me if Im wrong, the dead man is being sarcatic @ you
Calm down! Calm down!
Grow up.
down... up.... whats the difference in a 2D app in B+ and BMax then... that would be the real test
Bmax uses 3D hardware to do 2D stuff.
B+ does not (does it? No, surely not...)
So wouldn't that be almost exactly the same comparison (for 2D stuff) as B3D vs BMax?
it's that bad and still in warranty I'd take it back. A brand new laptop less than 12 months old should not have similar graphical performance to a laptop thats 4+ times older.
Eh? Warranty gives you some recourse when when there are flames shooting out of the side of your laptop, melting your screen. They don't tend to cover "I changed my mind and would rather have something beefier instead"
Anyway - blitzmax performs very well on decent hardware. the catch is that a good chunk of laptops, especially older ones, have attrociously bad video drivers. I have an old tower that's 400MHz, 64MB RAM, with a voodoo3 3000 16MB video adapter, and it can handle BlitzMax just fine. I also have a 600MHz laptop using an ATI Rage onboard display adapter (the even crappier version without the 3D acceleration module) and it is absolutely horrible.
Would I release something with BlitzMax?
Yes. But (there's always a but), make sure to mention that a hardware accelerated 3D adapter is a minimum requirement.
You can also weed out some of the worst systems by listing something like 1GHz+ as a recommended system, even though the CPU isn't as important as the video adapter.
If you're worried about this, you can always release a demo/preview version as well, and see what kind of feedback you get from that.
(Speaking of which... Is there any way to detect whether or not a video adapter has its own onboardmemory, or uses shared system RAM? The latter is usually a giveaway of a sub-standard video card...)
Well, my notebook DOES run with an ATI X300 Mobility 128 MB, if that's good enough for Blitz games. Sure, I'll try out a game or a screen saver, and see what happens. Been a while since I did something on a notebook with Blitz, I've been more of a desktop junkie of late. Just didn't feel confident that the big configuration that I have on the notebook would compare to the desktop that well. I may probably outdo myself, and surprise myself at the same time to know that this COULD be the way to go.
Is anyone genuinely expecting to sell a game to someone who hasn't upgraded their PC in more than five years?
@FlameDuck
yeah... online cash casinos... They want anyone with a credit card. (You didn't say software, and you didn't say it couldn't be pay per play... they are indeed selling the 'game' to people... many of which have old as dirty PCs.)
LOL you've opened a can of worms there Gfk.
The point is, for most things 3d is slower and BlitzMax uses 3d for everything (unlike all other Blitz languages). But it has compensations like realtime scaling and rotation as well as lovely alpha blended sprites which give a game a much more polished and professional look - it inevitably comes at a price - speed.
The point is, for most things 3d is slower and BlitzMax uses 3d for everything (unlike all other Blitz languages). But it has compensations like realtime scaling and rotation as well as lovely alpha blended sprites which give a game a much more polished and professional look - it inevitably comes at a price - speed.
Wot he said.