The best tool/language for programming 3D games that I have ever tried -- and I've tried many, many tools. Blitz3D beats Unity, Unreal, Leadwerks, S2, Tombstone/C4, and more that I can't even remember in one key area for me: productivity. I can just write some very simple commands out and get really great results very quickly.
Those other tools/frameworks are great for what they are able to do as well of course but right now my focus is on getting stuff to actually show on the screen as quickly as possible -- and Blitz3D lets me get whats in my head out on the screen the fastest of all of these.
It was so easy to build, basically no steps were required other than 1) check it out 2) press build solution. You end up with Blitz3D.exe in a _release subfolder, ready to go. It's possible I already had any dependencies installed but if so they can't be very hard to find. Give it a try if you're remotely able to work with C/C++!
Thank you, Mark! I love Blitz3D!
p.s. Some useful tools:
I recommend using Blender 2.79 in order to be able to produce .3ds files that can be read by Blitz3D.
You can also use fragMOTION for model editing and exporting to DirectX's .x format -- which includes all textures in one file.
I have had good results from Material Maker 1.3 for stylized textures, which lend themselves nicely to the Blitz3D renderer.
IIRC, the multiplayer networking functions were removed when Blitz3D was open sourced as the underlying DirectPlay API was not supported by MSVC2017 (Blitz3D was originally built using 'classic' MSVC 6). Plus, I think running a Blitz3D app that was built with DirectPlay support (ie *all* Blitz3D app's pre-open sourcing) caused an annoying 'do you want to install DirectPlay' popup on recent-er versions of Windows.
I've just checked and the source files are still in there so it may still be possible to build Blitz3D with multiplayer support again if you can get hold of the appropriate SDK files (static libs, headers etc) and they're compatible with the Windows SDK stuff used by MSVC.
But, to be honest, it's probably not worth trying as multiplayer in Blitz3D was never that great or even very well tested. I certainly don't remember any multiplayer Bltitz3D apps being released - please let me know if I'm wrong anyone!
Thanks for the detailed answer, I really appreciate it! I will just use an old version I found on archive.org.
I'm still very inexperienced with Blitz3D, but I'm trying to recreate an old multiplayer shooter game that I used to enjoy playing. It was definitely good enough for that and I don't remember any problems.
But of course, being P2P, it brings a lot of negatives.
I too had some users, not being able to run EXEs compiled with 1.9n-ish version, due to unsupported "legacy" directPlay, even if not used by the EXE.
BTW. did you ever encounter the excessively slow line drawing command issue?, (like here on win10, dx 12, amd radeon R3). I wrote a substitute, but there may be a speed issue with dx7 2D in dx12.
BTW2 I guess DirectPlay is not really required, as it can be substituted by TCP and UDP. Which I guess is what most people would do in the first place anyway.
Hello guys! Thanks for the amazing program. It's what got me into game development and software engineering back in 2004-2005. Many years later I found myself struggling with unity's slow and heavy development cycle. Then I decided to return back to Blitz3D and I am glad I did so. I have been advancing this amazing piece of software to quite modern standards. But right now I am facing a problem with texture flags. Can anyone help me? I need some sort of a combined- or a special flag. Somebody mentioned a flag 49 for my case, but then the mesh disappears completely.. Let me explain. I want to create a low resolution cubemap, but it causes seam issues. I remember there was a edge seam fixup solution somewhere, but I don't remember if it was in Blitz3D or Unity. Anyhow, how to approach this problem? Do I have to modify the cubemap texture at runtime, or whats the complete set of texture flags? Thanks. And many thanks to you Mark, without your amazing program, my life would be completely different. Note: my first project involved Tokamak physics and I have been working with physics ever since. I am mostly focused on realistic vehicle simulations. And I am once again playing around with tokamak and physx. Then I decided to upgrade the visuals to pbr standards, and this is where I got the edge seam problem.
Here are some screenshots of my pbr solution. It's using Xors3D for shadowing only, everything else is directly portable to original B3D DX7.
The issue is not very visible, but at certain angles the edge seam is very harsh. Take a look on the second image, front left tire, it has a very sharp edge, while it should be blurred instead.
-Ravel. The author of MoDyEn physics extension for Unity3D
"Many years later I found myself struggling with unity's slow and heavy development cycle. Then I decided to return back to Blitz3D and I am glad I did so."
In my opinion, old Unity 5 was the most successful then it modern versions. Why you turn back to Blitz3D? It is interesting...
Yes, Sir, Unity 5.6 is great. It has all the features that you need. Most importantly I work offline, so Blitz3d is reliable, I can boot it up whenever I want to. Unity requires internet connection etc. to load the license and as soon as something changes in the services of your computer, it requires internet connection again. That is such a waste of talent... Secondly my technological knowhow is at a level where I can build my own world editors and integrated development environments. So I personally see Blitz3D more advanced. But it requires more effort. Thats the beauty of it.
Thanks for the answer. That is why I liked Unity 5, it is enough to download the installer (but the truth is that it required registration online, which is of course a minus) and then it complete to work. Without any installations of modules and other settings.
P.S. And of course C# captivates ... somehow it is closer to real development than BASIC. Although this is a matter of taste.
I do understand your point of view sir. I do like Unity 5 and I have been using it ever since it released.
My personal preference right now is b3d because it is way faster in terms of prototyping. In unity yo often get lost in the editor environment and forget about the actual coding. This causes a major setback and it obviously generates automated code that is not always as effective as intended.
In basic you have the option to write your own advanced interpreter actually, with object oriented programming in mind. There are several C# like interpreters for b3d allready. The advantage of native C# is that you get access to the system .NET classses, which is great indeed.
Also with unity you have a closed asset system which is not ideal for my case. I prefer to manage my own files the way I want. The build prints are also way smaller with b3d. A Unity project usualy weights around 1-5 gb because of all the meta data. With b3d it only depends on how many files you have and how much they weight.
hmm interesting. Thank you for the paper. I will take a look at it. But in the meantime I actually figured out a small workaround for it. Just need to figure out whats the fastest way to solve this issue. After all I am drawing just 6 textures, I can play around with them hehehe... I am planning to use nearby pixels approach. it should actually work...
Thanks! Camerazoom for edge seam fix? ...uhm, well right now I got a solution working with a baked static ambient cubemap. So it looks quite decent for static lighting. But have to figure out how to make the ambient cubemap smooth. Right now its just a 2x12 image with 2x2 sided cubemap. So the lower row is mostly black pixels and the upper row is the sky color. The front facing side is having brighter pixels to simulate the light direction. I used the ATI cubemap gen to generate the image from the skybox image. It works very good and it makes all the models look modern. I will post a small article about it, once I have finished some fun stuff with it.
Hey, guys,I have a doubt in Blitz3D, how to disable the bilinear filtering in the textures, because I'm creating a 3D game in pixel art, and using the "ClearTextureFilters()" function is not having any effect, the texture is still "blurred", does anyone know howdo this?, thanks for your attention.
But does it only work in BlitzNG and not in "Blitz3DSetup1108" which is what I prefer to use, or does it work in "Blitz3DSetup1108" and I didn't know how to make it work?, thanks a lot for answering.
Hi, you need to use 'Or' to combine multiple flags together (which sounds very counter-intuitive!) For example, this works for me:
tex1=CreateTexture(w,w, tex_color Or tex_mipmap_OFF)
By using a comma here, you're actually creating a 1024 'frame' texture!
You can also use plain additon to combine flags, ie: '+', but then you have to be careful to only use each flag exactly once. Still, I think this is what most b3d coders used, and it makes a bit more logical sense I guess.
In retrospect, I think Blitz3D should have had '|' and '&' and maybe '~' operators too.
Hi Mark, wow, this is cool. If you knew this in 2000, you could have advertised it like "will provide free Updates for 23+ years". ^^
Still using Blitz3D frequently. There's too much bloatware around these days. I remember for a pretty long time Blitz3D used to fit on a 1.44 MB floppy. I used it recently for a terrain mesh generator that makes meshes for a WebGL engine. No way I'd have such a nice terrain in WebGL without Blitz3D.
I've been browsing the various incarnations of the Blitz websites lately (before the internet archive gets taken down...) and wow they were fun days - before all the 'monetization' bullshit crept into gaming. I should NEVER have got involved in the mobile scene, that sexy hardware was just too tempting though.
The 'mugshots' thread (from *22* years ago!) here especially bought back lots of warm fuzzy memories, possibly before even your time though?
Hi Mark! Sorry for responding so late. I was kind of roaming the prairie in spring time. I hope you're fine! Yes indeed those were great times. I must have been there already since a few years, I remember threads about the towers in the forum in 2001. I guess, like in all industries politics began to play important roles, in order to get crazy funding that would wipe any competition from the market. Like Unity, that cost 2 billions so far, but cashed in way less. Investors primarily wanted to monopolize, as that promised more control over a new medium. Anyway, in my view.
Being literally senior programmer by now, I tend to follow more of a Guru approach. I think it was Confucius who said "The wise man is sitting at the river shore, and the sooner or later the dead body of his enemy is floating by". Not that I had any enemies tho - I have authorities ^^ well you know me, always on the brink of a coup d'etat.
I come to the conclusion that any undertaking, enterprise or company can be destroyed with a lot of money. A lot of money attracts crooks and usually does not give a place for specialists.
Hi all, I finally fixed the double spacing in the IDE issue and have uploaded a new Blitz3D 1.109 installer.
I built this on Windows10 so there *may* be issues if you're still on 7, 8 or 9, although I think I built the 1.108 installer on Windows10 too so who knows...
I would like Blitz3D be accessible for download as a zip archive. The antivirus protection system swears at the exe archive file. It was also not possible to unpack the exe file as an archive using 7 zip (sometimes this works with an exe file, but not in this case).
I would also like to know where i can download the latest 1.109 version of B3D.dll ?
I've run into an issue today. When I try to open Blitz3d on my Win10, the icon shows in the taskbar, but no IDE screen appears, and the taskbar thumbnail preview is blank white.
When I right-click the task, there's the options: ide.exe, and the usual pin to taskbar & close window. Clicking ide.exe the first time gave me an error saying the blitzpath environment variable wasn't found. So I created that.
Now when I try to open Blitz3d, I get the same results. But when I right-click the task icon and choose Ide.exe again, it opens another task pointing to C:\Program Files (x86)\Blitz3D\help\index.html. But that task doesn't show anything either.
I just tried downloading and installing the latest version here with no luck.
I boot this up from time to time for the nostalgia. I started learning how to program using B3D back in ~2003. I doubt I'd be coding as a career if I hadn't came across it. Nice to see it's still knocking about! :)
No idea sorry although I've just uploaded a new build so you might want to try that as it should be the latest/greatest version available.
Skimming through the comments to your posts, I'd recommend making sure the code isn't trying to set an 'exotic' graphics mode of some kind (eg: 16 bit color) in fact probably safest to try to get it running in windowed mode first.
I haven't gone back to the page I linked, to refresh my memory of what's been said, and it's also been a while since I was actively chasing this, so apologies if I either repeat myself or speak incorrectly. I have yet to find a solution.
If I recall correctly, the program does work correctly, even under Windows 10, if run under just the right circumstances -- "windowed, with the Debugger enabled," I think it was. This suggests to me that maybe that particular combination causes the program to run in a sort of "controlled" or "captive" environment where Blitz3D has control and provides a DirectX (7 or 9 or whatever) environment that got compiled/linked into Blitz3D itself when it was compiled, "back in the 90s" or whenever -- whereas running the program "full screen" and/or without the Debugger -- and especially as a standalone .exe! -- makes the program dependent on the environment provided by the OS and its current DirectX (11?) environment. That, then, places the blame squarely on "them" in that they seem to have broken, or at least changed in a fundamental way that breaks this program, something in DirectX itself. Considering how few lines of Blitz Basic code are actually involved in The Part That Doesn't Work Any More (tm me), it ought to be fairly straightforward for someone (such as yourself, perhaps? -- who knows DirectX well enough to have created Blitz3D in the first place) to look at exactly what's going on and what's changed. Feel like looking into it for me? Pretty please? :-)
If you or anyone else are able to investigate that and nail down the exact details, someone might be able to submit a bug report sufficiently specific to get attention. I expect that reporting "this one specific feature of program written in a language processor that was written in the 1990s, doesn't work on Windows 10," isn't going to get much traction. I'd still report, it, though, if I knew where DirectX even comes from, and to whom to report it; is DirectX a Microsoft thing? I can't believe I don't know.
Anyway, thanks again for the reply. I'll pop back in here either if I have difficulty finding/installing/using the new build, or if it doesn't fix the problem.
For one thing I don't have a copy of it any more, for another it was 99% the same as the Blitz3D that *is* up on github so even if I did have a copy I probably wouldn't bother.
The fact that I used Blitz3D in the title violates the copy rights? Another name would not make sense, since this project is associated with Blitz3D SDK. Do you give me permission to use this name?
This written for B3D.dll, I would like to add this DLL directly to the repository. It would be very convenient to use. But it probably violates copyright.
I don't like that the B3D.dll doesn't have network and file functions, it doesn't even have a random number generator... I would like everything to be included into the library, such as in Monodevelop for example.
Do I understand correctly that if you rename runtime.dll from Blitz3D to b3d.dll, then everything will work? I think there are fundamental differences in the work.
If you want to use Blitz3D runtime in your own projects, I would probably recommend statically linking with the 'bbruntime' static lib. Just building the blitz3d solution in msvc2022 produces a bbruntime.lib in bbruntime/Release which should be all you need. The bbruntime_dll project is a bit useless as-is, it's designed to be linked with blitzcc compiler output - it doesn't actually export any symbols - the blitzcc output code is 'injected' into the dll as a resource, and linking is actually performed at runtime.
You'll also need header files, which you can either include directly from the blitz3d project, or copy the headers from bbruntime (and any other required dirs) into a standalone 'include' dir. Either way you'll need to set up a buinch of include dirs so the compiler can find them.
If you have a copy of Blitz3D SDK, I don't really mind what you do with it (an acknowledgement would be nice). I only ever sold a handful of them many years ago. I thought it actually kind of sucked as a C++ SDK and my heart was never really in it.
Hi Mark! I am taking part in a game jam with a small dev community in Spain and will use Blitz3D and Maplet for it (it's a retro compo, most of us are using "legacy" technologies, and I like the idea of the game working on Win9x).
Do you happen to have the specs of the .maplet format by chance? I'd like to extract the information of the lights from it to use it in the game.
Thanks!
BTW, I love playing with Blitz again! I used it for a long time a couple of decades ago, used to visit BRL's forums under the nickname "Jedive".
Unfortunately, I managed to lose the source code to Maplet shortly after finishing it so I have no idea how it works any more.
Probably possible to hack the file format but unlikely to be easy. But knowing early 2000's me, it's likely to use an 'IFF' style file format, eg: chunktag/chunksize/chunkdata...etc etc, where chunk tag is a fourcc 'character code' like 'LIGT', 'PRIM' etc Just guessing really though!
Definitely, software version control systems were not very established back then lol.
Unfortunately, I have tried what you suggested, but there are not easily identifiable tags within the file except for "BB3D" and "_BSP" at the beginning of the file.
Since the amount of lights won't be very big (it's a small game for a compo), I think I'll just write their position, color and radius manually on a separate file and use that.
Great to see that you are active and I am really looking forward to see your future projects (although I assume they won't be related to Blitz/Monkey!).
I was wondering about Maplet and saw this comment. What a weird coincidence. I am wondering if you remember what language you wrote it in, perhaps it can be ‘decompiled’. Though I won’t try it myself as I have little experience in programming, this info might be good for somebody.
I mean, I know basic is pretty simple as the name BASIC implies. Blitz Basic uses a different dialect like the language of Spanish is between Mexico and Spain. (And yes, that's a thing; they both speak Spanish, but use a different dialect.)
But I do need to ask 2-3 big questions. 1. Has ANY game recently been published using Blitz basic with a proper Polish and sold for any amount of $5 (USD) and above?
~Note: By Proper Polish, I mean bug's worked out, game operates correctly with a lack of bugs. ETC.
2. Is anyone building a game with it right now? Mind you, I know folks mostly get this to fool around with code or to teach their kids how to program games or simple programs, I get it.
3. Yeah, back to the beginning comment, any classes how to use it today? Like a general education to use and push it to the absolute limit. How to render something you made in Blender and throw it in there or how to make a 3D model in it? if the 3D Modeling tool's in Blitz suck, is there an alternative?
I'm asking out of pure curiosity. Mind you, I would like to know everyone's thought's about it.
You've probably heard of SCP: Containment Breach if you've heard of Blitz3D, or at least I'd hope. It's a pretty damn good game and made with yours truly, Blitz3D. No, it's not quite recent, but it's seen a Steam release of the multiplayer mod, and (not counting the latest version on Steam because it's become sort of a buggy mess, I'd recommend checking out the ModDb page here) is quite polished.
To answer your second question, I am, but I guess I don't have any real authority in the game world yet. I just like using older engines. I'm working on a minecraft-type clone in Blitz3D, which will be interesting to see if it works and fast enough to be enjoyable.
To answer your third question, I would say your experience with it depends on how complicated your normal programming adventures are. Honestly, I find the language very basic (ha, but it is BASIC so it is to be expected) and you can't do things like function dereferencing. Also, if you like writing nice and neat code, get ready to use your Tab button (or if you're a psychopath and use the spacebar) like crazy, there's no auto-indentation. For modelling, you can most certainly use Blender. It doesn't natively support .blend files, but it does support .3ds and one other file format for 3D models (something like that), which Blender supports. Hell, you can even write your own model file implementation, but I would not do that for a few reasons, mainly that's a lot of work and you'll have to do a lot of stuff in BASIC, which isn't exactly fun (at least, not for me).
Now, as for making games for modern day, just as with any programming language, it's not about the actual code, it's about the how. I believe that you can make a fully-fledged triple-A game (well, you most likely won't have hyper-monetization and thank god for that) in any programming language. Even brainfuck. Actually, that seems kinda fun now. A brainfuck CPU, with a... oh I'm going on a tangent again.
If you need me to clarify anything, please, let me know :)
I have used it back in the day to make my first games. There are maybe some old forums around with some nice tutorials since that was a thing back then. blitzforum.de is a german website with a lot of german blitz ressources, but I don't know about english equivalents.
I learned it by mostly looking at the examples and being active a lot in those forums.
While it's pretty outdated, the main difference to modern game engines is probably the lack of a world editor so for every bigger project you need to build you own. You literally have just your code and that's about it. It's great for building simple games tho or learning programming in general.
Besides teaching you how to program in BASIC (namely using BlitzBasic), there are multiple examples on there for some classic games and game types (Mario, Tetris, Asteroids, etc.). It's still a work in progress, and always has been, but there's plenty of info on it as it is... But anyways, check it out if you like.
← Return to tool
Comments
Log in with itch.io to leave a comment.
The best tool/language for programming 3D games that I have ever tried -- and I've tried many, many tools. Blitz3D beats Unity, Unreal, Leadwerks, S2, Tombstone/C4, and more that I can't even remember in one key area for me: productivity. I can just write some very simple commands out and get really great results very quickly.
Those other tools/frameworks are great for what they are able to do as well of course but right now my focus is on getting stuff to actually show on the screen as quickly as possible -- and Blitz3D lets me get whats in my head out on the screen the fastest of all of these.
I am using a version built with Visual Studio 2022 based on this repo: https://github.com/blitz-research/blitz3d_msvc2017
It was so easy to build, basically no steps were required other than 1) check it out 2) press build solution. You end up with Blitz3D.exe in a _release subfolder, ready to go. It's possible I already had any dependencies installed but if so they can't be very hard to find. Give it a try if you're remotely able to work with C/C++!
Thank you, Mark! I love Blitz3D!
p.s. Some useful tools:
I recommend using Blender 2.79 in order to be able to produce .3ds files that can be read by Blitz3D.
You can also use fragMOTION for model editing and exporting to DirectX's .x format -- which includes all textures in one file.
I have had good results from Material Maker 1.3 for stylized textures, which lend themselves nicely to the Blitz3D renderer.
Thanks for the kind words!
Hi, just uploaded v1110 which fixes a crash caused by the use of textures with alpha but no color, for example, Adam Gore's 'grass' demo.
Thanks for the update!
In the latest version, networking functions such as "JoinNetGame" do not seem to work.
IIRC, the multiplayer networking functions were removed when Blitz3D was open sourced as the underlying DirectPlay API was not supported by MSVC2017 (Blitz3D was originally built using 'classic' MSVC 6). Plus, I think running a Blitz3D app that was built with DirectPlay support (ie *all* Blitz3D app's pre-open sourcing) caused an annoying 'do you want to install DirectPlay' popup on recent-er versions of Windows.
I've just checked and the source files are still in there so it may still be possible to build Blitz3D with multiplayer support again if you can get hold of the appropriate SDK files (static libs, headers etc) and they're compatible with the Windows SDK stuff used by MSVC.
But, to be honest, it's probably not worth trying as multiplayer in Blitz3D was never that great or even very well tested. I certainly don't remember any multiplayer Bltitz3D apps being released - please let me know if I'm wrong anyone!
Thanks for the detailed answer, I really appreciate it! I will just use an old version I found on archive.org.
I'm still very inexperienced with Blitz3D, but I'm trying to recreate an old multiplayer shooter game that I used to enjoy playing. It was definitely good enough for that and I don't remember any problems.
But of course, being P2P, it brings a lot of negatives.
I too had some users, not being able to run EXEs compiled with 1.9n-ish version, due to unsupported "legacy" directPlay, even if not used by the EXE.
BTW. did you ever encounter the excessively slow line drawing command issue?, (like here on win10, dx 12, amd radeon R3). I wrote a substitute, but there may be a speed issue with dx7 2D in dx12.
BTW2 I guess DirectPlay is not really required, as it can be substituted by TCP and UDP. Which I guess is what most people would do in the first place anyway.
Hello guys! Thanks for the amazing program. It's what got me into game development and software engineering back in 2004-2005. Many years later I found myself struggling with unity's slow and heavy development cycle. Then I decided to return back to Blitz3D and I am glad I did so. I have been advancing this amazing piece of software to quite modern standards. But right now I am facing a problem with texture flags. Can anyone help me? I need some sort of a combined- or a special flag. Somebody mentioned a flag 49 for my case, but then the mesh disappears completely.. Let me explain. I want to create a low resolution cubemap, but it causes seam issues. I remember there was a edge seam fixup solution somewhere, but I don't remember if it was in Blitz3D or Unity. Anyhow, how to approach this problem? Do I have to modify the cubemap texture at runtime, or whats the complete set of texture flags? Thanks. And many thanks to you Mark, without your amazing program, my life would be completely different.
Note: my first project involved Tokamak physics and I have been working with physics ever since. I am mostly focused on realistic vehicle simulations. And I am once again playing around with tokamak and physx. Then I decided to upgrade the visuals to pbr standards, and this is where I got the edge seam problem.
Here are some screenshots of my pbr solution. It's using Xors3D for shadowing only, everything else is directly portable to original B3D DX7.
The issue is not very visible, but at certain angles the edge seam is very harsh. Take a look on the second image, front left tire, it has a very sharp edge, while it should be blurred instead.
-Ravel. The author of MoDyEn physics extension for Unity3D
"Many years later I found myself struggling with unity's slow and heavy development cycle. Then I decided to return back to Blitz3D and I am glad I did so."
In my opinion, old Unity 5 was the most successful then it modern versions. Why you turn back to Blitz3D? It is interesting...
Yes, Sir, Unity 5.6 is great. It has all the features that you need. Most importantly I work offline, so Blitz3d is reliable, I can boot it up whenever I want to. Unity requires internet connection etc. to load the license and as soon as something changes in the services of your computer, it requires internet connection again. That is such a waste of talent... Secondly my technological knowhow is at a level where I can build my own world editors and integrated development environments. So I personally see Blitz3D more advanced. But it requires more effort. Thats the beauty of it.
Thanks for the answer. That is why I liked Unity 5, it is enough to download the installer (but the truth is that it required registration online, which is of course a minus) and then it complete to work. Without any installations of modules and other settings.
P.S. And of course C# captivates ... somehow it is closer to real development than BASIC. Although this is a matter of taste.
I do understand your point of view sir. I do like Unity 5 and I have been using it ever since it released.
My personal preference right now is b3d because it is way faster in terms of prototyping. In unity yo often get lost in the editor environment and forget about the actual coding. This causes a major setback and it obviously generates automated code that is not always as effective as intended.
In basic you have the option to write your own advanced interpreter actually, with object oriented programming in mind. There are several C# like interpreters for b3d allready. The advantage of native C# is that you get access to the system .NET classses, which is great indeed.
Also with unity you have a closed asset system which is not ideal for my case. I prefer to manage my own files the way I want. The build prints are also way smaller with b3d. A Unity project usualy weights around 1-5 gb because of all the meta data. With b3d it only depends on how many files you have and how much they weight.
Wow, that looks fantastic!
I do remember the seamless cubemap texture problem, but only from the GL days. There was an extension to deal with it in GL...
https://developer.download.nvidia.com/opengl/specs/GL_ARB_seamless_cubemap_per_t...
...but according to a quick google, D3D didn't get a fix for this until D3D9-ish.
I can't think of a way you could fudge this by distorting cube faces either so sorry but I think you're stuck with it in B3D.
But it all looks pretty seamless from here anyway!hmm interesting. Thank you for the paper. I will take a look at it. But in the meantime I actually figured out a small workaround for it. Just need to figure out whats the fastest way to solve this issue. After all I am drawing just 6 textures, I can play around with them hehehe... I am planning to use nearby pixels approach. it should actually work...
Looks amazing! Did you try camerazoom?
Thanks! Camerazoom for edge seam fix? ...uhm, well right now I got a solution working with a baked static ambient cubemap. So it looks quite decent for static lighting. But have to figure out how to make the ambient cubemap smooth. Right now its just a 2x12 image with 2x2 sided cubemap. So the lower row is mostly black pixels and the upper row is the sky color. The front facing side is having brighter pixels to simulate the light direction. I used the ATI cubemap gen to generate the image from the skybox image. It works very good and it makes all the models look modern. I will post a small article about it, once I have finished some fun stuff with it.
Hey, guys, I have a doubt in Blitz3D, how to disable the bilinear filtering in the textures, because I'm creating a 3D game in pixel art, and using the "ClearTextureFilters()" function is not having any effect, the texture is still "blurred", does anyone know how do this?, thanks for your attention.
Hi Plim, have you tried texture flag '1024'? According to this commit...
https://github.com/blitz-research/blitz3d_msvc2017/commit/0e48d376bd6075420b42da...
...this very useful feature was added in 2018 by someone called Dave Camp - thanks Dave whoever you are!
Hi Mark, it's an honor to talk to you, yes I used:
"Const tex_mipmap_OFF = 1024"
Ex:
ground_tex = LoadTexture( "imgs_Base/chadrez.png", tex_color + tex_alpha + tex_mipmap_OFF)
But does it only work in BlitzNG and not in "Blitz3DSetup1108" which is what I prefer to use, or does it work in "Blitz3DSetup1108" and I didn't know how to make it work?, thanks a lot for answering.
Hi, would you mind posting some runnable example code I can copy/paste into blitz3d 1108?
Of course :)
Const tex_color = 1 ; Color texture
Const tex_alpha = 2 ; Alpha texture (Include alpha channel data)
Const tex_mask = 4 ; Masked texture (black is transparent)
Const tex_mipmap = 8 ; Create texture mipmaps
Const tex_clampu = 16 ; Restrict U texture coords from "bleeding over"
Const tex_clampv = 32 ; Restrict V texture coords from "bleeding over"
Const tex_envshpere = 64 ; Load texture as a spherical environment map
Const tex_vram = 256 ; Force texture graphics to vram
Const tex_highcolor = 512 ; Forces texture graphics to be 32-bits per pixel
Const tex_mipmap_OFF = 1024 ; Turn mipmap OFF
Graphics3D 800,600,0,2
SetBuffer BackBuffer()
ClearTextureFilters()
light=CreateLight()
RotateEntity light,45,45,0
cube=CreateCube()
w=256
tex1=CreateTexture(w,w, tex_color, tex_mipmap_OFF)
For i=0 To 10000
Color Rand(255),Rand(255),Rand(255)
Plot Rand(0,255),Rand(0,255)
Next
EntityTexture cube, tex1
CopyRect 0, 0, 256, 256, 0, 0, BackBuffer(), TextureBuffer(tex1)
camera=CreateCamera()
CameraRange camera,0.001,50
TranslateEntity camera,0,0,-1.4
While KeyHit(1)=0
TurnEntity cube,0,.1,0
RenderWorld()
Flip
Delay 10
Wend
End
Hi, you need to use 'Or' to combine multiple flags together (which sounds very counter-intuitive!) For example, this works for me:
tex1=CreateTexture(w,w, tex_color Or tex_mipmap_OFF)
By using a comma here, you're actually creating a 1024 'frame' texture!
You can also use plain additon to combine flags, ie: '+', but then you have to be careful to only use each flag exactly once. Still, I think this is what most b3d coders used, and it makes a bit more logical sense I guess.
In retrospect, I think Blitz3D should have had '|' and '&' and maybe '~' operators too.
Bye!
Mark
Hi Mark, wow, this is cool. If you knew this in 2000, you could have advertised it like "will provide free Updates for 23+ years". ^^
Still using Blitz3D frequently. There's too much bloatware around these days. I remember for a pretty long time Blitz3D used to fit on a 1.44 MB floppy. I used it recently for a terrain mesh generator that makes meshes for a WebGL engine. No way I'd have such a nice terrain in WebGL without Blitz3D.
All the best, Dieter
Well, I did vaguely promise 'lifetime' updates!
I've been browsing the various incarnations of the Blitz websites lately (before the internet archive gets taken down...) and wow they were fun days - before all the 'monetization' bullshit crept into gaming. I should NEVER have got involved in the mobile scene, that sexy hardware was just too tempting though.
The 'mugshots' thread (from *22* years ago!) here especially bought back lots of warm fuzzy memories, possibly before even your time though?
https://web.archive.org/web/20011012145251/http://www.blitzbasic.co.nz/cgi-bin/s...
Bye!
Mark
'monetization' is real bullshit...
What's about the 'lifetime' updates? When will Vulkan be included? :)
Im joking... )
UPD: By the way, I looked at your sources and really find a Vulkan in one of the projects ...
Hi Mark! Sorry for responding so late. I was kind of roaming the prairie in spring time. I hope you're fine! Yes indeed those were great times. I must have been there already since a few years, I remember threads about the towers in the forum in 2001. I guess, like in all industries politics began to play important roles, in order to get crazy funding that would wipe any competition from the market. Like Unity, that cost 2 billions so far, but cashed in way less. Investors primarily wanted to monopolize, as that promised more control over a new medium. Anyway, in my view.
Being literally senior programmer by now, I tend to follow more of a Guru approach. I think it was Confucius who said "The wise man is sitting at the river shore, and the sooner or later the dead body of his enemy is floating by". Not that I had any enemies tho - I have authorities ^^ well you know me, always on the brink of a coup d'etat.
Take care, yet have a wonderful time!
Dieter
I come to the conclusion that any undertaking, enterprise or company can be destroyed with a lot of money. A lot of money attracts crooks and usually does not give a place for specialists.
Perhaps of course I'm wrong...
Hi all, I finally fixed the double spacing in the IDE issue and have uploaded a new Blitz3D 1.109 installer.
I built this on Windows10 so there *may* be issues if you're still on 7, 8 or 9, although I think I built the 1.108 installer on Windows10 too so who knows...
This is nice news.
I would like Blitz3D be accessible for download as a zip archive. The antivirus protection system swears at the exe archive file. It was also not possible to unpack the exe file as an archive using 7 zip (sometimes this works with an exe file, but not in this case).
I would also like to know where i can download the latest 1.109 version of B3D.dll ?
I've run into an issue today. When I try to open Blitz3d on my Win10, the icon shows in the taskbar, but no IDE screen appears, and the taskbar thumbnail preview is blank white.
When I right-click the task, there's the options: ide.exe, and the usual pin to taskbar & close window.
Clicking ide.exe the first time gave me an error saying the blitzpath environment variable wasn't found.
So I created that.
Now when I try to open Blitz3d, I get the same results.
But when I right-click the task icon and choose Ide.exe again, it opens another task pointing to C:\Program Files (x86)\Blitz3D\help\index.html. But that task doesn't show anything either.
I just tried downloading and installing the latest version here with no luck.
Anyone have any idea what is wrong?
Thanks
Never mind! Just successfully uninstalled and reinstalled.
Has anyone tried using chat GPT to update the code and make it work with better graphics and DX12?
Very cool, but am I the only one who has problems with the IDE? It just changes the font when I type in something after opening a saved .bb file :/
It's normal, i think bc you copy-pasted something
The source code also given here. How nostalgic:) hope someone great will revive Blitz3D with modern features but still in BASIC
I boot this up from time to time for the nostalgia. I started learning how to program using B3D back in ~2003. I doubt I'd be coding as a career if I hadn't came across it. Nice to see it's still knocking about! :)
Hi Mark, and everyone else!
I'd be interested in hearing your thoughts on the strange behaviors outlined here: https://itch.io/t/1985876/still-not-perfect-on-windows-10
Cheers,
Xet
No idea sorry although I've just uploaded a new build so you might want to try that as it should be the latest/greatest version available.
Skimming through the comments to your posts, I'd recommend making sure the code isn't trying to set an 'exotic' graphics mode of some kind (eg: 16 bit color) in fact probably safest to try to get it running in windowed mode first.
Hi Mark,
Thanks, I'll look for the new build.
I haven't gone back to the page I linked, to refresh my memory of what's been said, and it's also been a while since I was actively chasing this, so apologies if I either repeat myself or speak incorrectly. I have yet to find a solution.
If I recall correctly, the program does work correctly, even under Windows 10, if run under just the right circumstances -- "windowed, with the Debugger enabled," I think it was. This suggests to me that maybe that particular combination causes the program to run in a sort of "controlled" or "captive" environment where Blitz3D has control and provides a DirectX (7 or 9 or whatever) environment that got compiled/linked into Blitz3D itself when it was compiled, "back in the 90s" or whenever -- whereas running the program "full screen" and/or without the Debugger -- and especially as a standalone .exe! -- makes the program dependent on the environment provided by the OS and its current DirectX (11?) environment. That, then, places the blame squarely on "them" in that they seem to have broken, or at least changed in a fundamental way that breaks this program, something in DirectX itself. Considering how few lines of Blitz Basic code are actually involved in The Part That Doesn't Work Any More (tm me), it ought to be fairly straightforward for someone (such as yourself, perhaps? -- who knows DirectX well enough to have created Blitz3D in the first place) to look at exactly what's going on and what's changed. Feel like looking into it for me? Pretty please? :-)
If you or anyone else are able to investigate that and nail down the exact details, someone might be able to submit a bug report sufficiently specific to get attention. I expect that reporting "this one specific feature of program written in a language processor that was written in the 1990s, doesn't work on Windows 10," isn't going to get much traction. I'd still report, it, though, if I knew where DirectX even comes from, and to whom to report it; is DirectX a Microsoft thing? I can't believe I don't know.
Anyway, thanks again for the reply. I'll pop back in here either if I have difficulty finding/installing/using the new build, or if it doesn't fix the problem.
Chris
Is the download right here on this page, the new release? Or is it elsewhere?
Hi, Mark. I would like to know why the sources of the Blitz3D SDK are not publicly available on Github?
For one thing I don't have a copy of it any more, for another it was 99% the same as the Blitz3D that *is* up on github so even if I did have a copy I probably wouldn't bother.
Spread for your judgment, my experimental mini project:
https://github.com/Blitz3DFASM/Blitz3DFASMSDK
The fact that I used Blitz3D in the title violates the copy rights? Another name would not make sense, since this project is associated with Blitz3D SDK. Do you give me permission to use this name?
This written for B3D.dll, I would like to add this DLL directly to the repository. It would be very convenient to use. But it probably violates copyright.
I don't like that the B3D.dll doesn't have network and file functions, it doesn't even have a random number generator... I would like everything to be included into the library, such as in Monodevelop for example.
Do I understand correctly that if you rename runtime.dll from Blitz3D to b3d.dll, then everything will work? I think there are fundamental differences in the work.
If you want to use Blitz3D runtime in your own projects, I would probably recommend statically linking with the 'bbruntime' static lib. Just building the blitz3d solution in msvc2022 produces a bbruntime.lib in bbruntime/Release which should be all you need. The bbruntime_dll project is a bit useless as-is, it's designed to be linked with blitzcc compiler output - it doesn't actually export any symbols - the blitzcc output code is 'injected' into the dll as a resource, and linking is actually performed at runtime.
You'll also need header files, which you can either include directly from the blitz3d project, or copy the headers from bbruntime (and any other required dirs) into a standalone 'include' dir. Either way you'll need to set up a buinch of include dirs so the compiler can find them.
I can't handle it, I'm not that great of a programmer... \
And msvc2022 won't even fit on my PC. I usually use something compact like Dev C++ :)
Could I put the B3D.dll library on github? Or Blitz3D SDK is it still paid?
Of course, it would be cool to use the original editor and slip FASM instead of blitzcc when compiling. But it requires huge competencies.
For example if user open *.bb file run blitzcc, if user open *.asm file run FASM.
You didn't answer anything about the naming and copyrights.
If you have a copy of Blitz3D SDK, I don't really mind what you do with it (an acknowledgement would be nice). I only ever sold a handful of them many years ago. I thought it actually kind of sucked as a C++ SDK and my heart was never really in it.
Hi Mark! I am taking part in a game jam with a small dev community in Spain and will use Blitz3D and Maplet for it (it's a retro compo, most of us are using "legacy" technologies, and I like the idea of the game working on Win9x).
Do you happen to have the specs of the .maplet format by chance? I'd like to extract the information of the lights from it to use it in the game.
Thanks!
BTW, I love playing with Blitz again! I used it for a long time a couple of decades ago, used to visit BRL's forums under the nickname "Jedive".
Hi JaviCerva/Jedive!
Unfortunately, I managed to lose the source code to Maplet shortly after finishing it so I have no idea how it works any more.
Probably possible to hack the file format but unlikely to be easy. But knowing early 2000's me, it's likely to use an 'IFF' style file format, eg: chunktag/chunksize/chunkdata...etc etc, where chunk tag is a fourcc 'character code' like 'LIGT', 'PRIM' etc Just guessing really though!
Thanks for your reply, Mark!
Definitely, software version control systems were not very established back then lol.
Unfortunately, I have tried what you suggested, but there are not easily identifiable tags within the file except for "BB3D" and "_BSP" at the beginning of the file.
Since the amount of lights won't be very big (it's a small game for a compo), I think I'll just write their position, color and radius manually on a separate file and use that.
Great to see that you are active and I am really looking forward to see your future projects (although I assume they won't be related to Blitz/Monkey!).
Hello Mark/Blitz Research,
I was wondering about Maplet and saw this comment. What a weird coincidence. I am wondering if you remember what language you wrote it in, perhaps it can be ‘decompiled’. Though I won’t try it myself as I have little experience in programming, this info might be good for somebody.
Thank you for your reply in advance!
Sincerely a fan,
NetherFolkDev
Any classes how to use it?
I mean, I know basic is pretty simple as the name BASIC implies. Blitz Basic uses a different dialect like the language of Spanish is between Mexico and Spain. (And yes, that's a thing; they both speak Spanish, but use a different dialect.)
But I do need to ask 2-3 big questions.
1. Has ANY game recently been published using Blitz basic with a proper Polish and sold for any amount of $5 (USD) and above?
~Note: By Proper Polish, I mean bug's worked out, game operates correctly with a lack of bugs. ETC.
2. Is anyone building a game with it right now? Mind you, I know folks mostly get this to fool around with code or to teach their kids how to program games or simple programs, I get it.
3. Yeah, back to the beginning comment, any classes how to use it today? Like a general education to use and push it to the absolute limit. How to render something you made in Blender and throw it in there or how to make a 3D model in it? if the 3D Modeling tool's in Blitz suck, is there an alternative?
I'm asking out of pure curiosity. Mind you, I would like to know everyone's thought's about it.
You've probably heard of SCP: Containment Breach if you've heard of Blitz3D, or at least I'd hope. It's a pretty damn good game and made with yours truly, Blitz3D. No, it's not quite recent, but it's seen a Steam release of the multiplayer mod, and (not counting the latest version on Steam because it's become sort of a buggy mess, I'd recommend checking out the ModDb page here) is quite polished.
To answer your second question, I am, but I guess I don't have any real authority in the game world yet. I just like using older engines. I'm working on a minecraft-type clone in Blitz3D, which will be interesting to see if it works and fast enough to be enjoyable.
To answer your third question, I would say your experience with it depends on how complicated your normal programming adventures are. Honestly, I find the language very basic (ha, but it is BASIC so it is to be expected) and you can't do things like function dereferencing. Also, if you like writing nice and neat code, get ready to use your Tab button (or if you're a psychopath and use the spacebar) like crazy, there's no auto-indentation. For modelling, you can most certainly use Blender. It doesn't natively support .blend files, but it does support .3ds and one other file format for 3D models (something like that), which Blender supports. Hell, you can even write your own model file implementation, but I would not do that for a few reasons, mainly that's a lot of work and you'll have to do a lot of stuff in BASIC, which isn't exactly fun (at least, not for me).
Now, as for making games for modern day, just as with any programming language, it's not about the actual code, it's about the how. I believe that you can make a fully-fledged triple-A game (well, you most likely won't have hyper-monetization and thank god for that) in any programming language. Even brainfuck. Actually, that seems kinda fun now. A brainfuck CPU, with a... oh I'm going on a tangent again.
If you need me to clarify anything, please, let me know :)
Also, I love your metaphor of dialects. A very simple yet powerful way to put it!
I have used it back in the day to make my first games.
There are maybe some old forums around with some nice tutorials since that was a thing back then. blitzforum.de is a german website with a lot of german blitz ressources, but I don't know about english equivalents.
I learned it by mostly looking at the examples and being active a lot in those forums.
While it's pretty outdated, the main difference to modern game engines is probably the lack of a world editor so for every bigger project you need to build you own. You literally have just your code and that's about it. It's great for building simple games tho or learning programming in general.
My Basic Programming Tutorial is still operational.
http://wolron.com/programmingtutorial
Besides teaching you how to program in BASIC (namely using BlitzBasic), there are multiple examples on there for some classic games and game types (Mario, Tetris, Asteroids, etc.).
It's still a work in progress, and always has been, but there's plenty of info on it as it is...
But anyways, check it out if you like.
juicy
hoooo
scp containment breach was made on this
true