Uses for BlitzMax

BlitzMax Forums/BlitzMax Programming/Uses for BlitzMax

Brucey(Posted 2007) [#1]
Just out of curiosity, is anyone working any NON-game related projects with BlitzMax, and what kind of projects are they?

GUI, console, etc?


Just wondering ;-)


Scaremonger(Posted 2007) [#2]
I'm working on a CGI library to allow the creation of compiled CGI WEB applications.

I have some uses for this myself; but others could include SOAP for updates, Text based RPG, Web-services, High score databases etc...

Initially this is for IIS (Under windows). but I'll see where it goes from there.

So far I am supporting RFC compliant Request and Response objects, and I also have Cookie and User based session support..

I aim to be publishing it in the next few days, so watch this space (www.itspeedway.net).

---
ALSO

I am working on a GUI that is fully event driven, fully extendable and is based on forms instead of screens/windows. It is likely to be a while before this gets published.


CS_TBL(Posted 2007) [#3]
I'm currently programming a private texture generator in BMax, textures and modifiers include seamless and non-seamless effects. All functionality is event-triggerend from the core instance, the actual texgen functions are normal functions, not part of any class and listen to a specific eventnumber that accounts for them. This means I can just create another function, addhook it, and it automagically works. Help-description is also done IN those functions, so these texgen functions are really stand-alone. Ofcourse they do have access to the texgen core so they can access the image buffers (which are only mem, not really an imagebuffer like a pixmap) and some core functionality like drawing boxes, rects, bresenham lines, individual pixels, etc. (note that it can draw these things over the edges, it's all wrap-around)

current textures include:

Clear
Filled Box
Pixel
Horizontal line
Vertical line
Bresenham Line
Bezier line
Openbox
Draw VectorGFX (wireframe style, based on a given definition)
Horizontal lightrays

and modifiers include:

Diffuse
TopLeftRelief
SetChannels
Invert
Intensitymove
Dither
Bittrunc
ChannelCopy
Blur
ChannelShift
Block
Tile
Sinedistort
SinedistortRGB


On the todo:
Perlin noise
Anti-aliased line
Vertical lightrays
Image copy
Indexed color
Exporters for non-bitmap formats

Whatever comes up in my mind -it will never bloat the code, as each function works on its own-

The whole (ascii-)script is compact, can be stored as a string in your code, so in the end one can create images without the need to incbin media. The script allows textrues to be performed multiple times with changing parameters. (It takes one such repetition statement and 1 plot texture to create a starfield)


Gabriel(Posted 2007) [#4]
I'm making a completely integrated game editor for my game engine, with separate tabs for actors, entities ( including physics ) level, particles, sounds, prefabs, behaviours, GUI and pretty much everything the game can do. I haven't yet integrated any kind of scripting, so I don't yet know if I'll need a script tab as well. But it's possible, just depends how versatile my "behaviours" prove to be.


Perturbatio(Posted 2007) [#5]
I've done several small CGI apps in it, mailer, form processor, etc. I've also made some utilities for my work, like one that strips the MSWord krud out of HTML documents.


skn3(Posted 2007) [#6]
I am writting a peer to peer network in blitzmax. It is for my job. We need a solution that can be running in a network structure like so.

[admin control panel] --> [master server] --> [client server] --> [client workstation] --> [client server] --> [php server]

Basically a "bot net". Network of remotely accessible computers. The network facilitates things like remote command prompt, file upload, scheduled updates, etc

The client workstation will report scheduled updates to teh client server. In turn the client server will then save those updates to a php based server and email the client the status of the update. The idea being that all computer healthchecks will automatically run and warn us/the client if there are problems that need fixing.

Its all very complicated, probably about 100 different source files so far and nearing 10,000 lines of code. (not really that much considering).

I have been boiling down my code alot and nearly everything is reusable. A fully working peer-to-peer tcp module that can be reused with simple event based programming. Wham-bam-thank-you-mam!

Function Event_NewRoutedCommand:Int(nroutemap:Int[],ncommand:Int,npacket:tpacket,nfromip:Int,nfromport:Int,nextra:Object)
	'a new command was recieved from the server
	Select ncommand
	End Select
End Function

... event called when a packet needs routing through a client/server...

What Im working on today (and taking a little brain rest by posting here) is a process based plugin system. Basically it will call a list of executables and monitor the output via std in/out. Spit the contents into an update zip file and wham it off somewhere on the network.

So thats what I have been doing.

Blitzmax is great for doing this. I have noticed however that bug testing in blitzmax can sometimes be a nightmare!!!


Tachyon(Posted 2007) [#7]
Tools I've made in Blitzmax/MaxGUI to support my game: an Isometric map editor, Dialogue Tree editor, and a Contact Sheet maker (because Photoshop's doesn't do the job correctly).


Winni(Posted 2007) [#8]
An NNTP client and server for OS X. That basically is the reason why I want multi-threading support in BlitzMax so badly. And one of the reasons why I still look at C-Sharp/Mono and began reading up on Objective-C/Cocoa.

However, I cannot use BlitzMax at my daytime job, and since there are several other things on my plate as well (that do not involve programming), I do not have as much time for Max as I'd like to have.

I really like BlitzMax, but without proper support for multi-threading and only limited Cocoa support, it is kind of a restricted development tool if you want to go beyond games.


ImaginaryHuman(Posted 2007) [#9]
I'm making a generic software environment within which editors, software and games can be created. It's a bit like a high level operating system. Upon its foundation I'll be able to make GUI's, games, applications, graphics/animation programs, etc.. all sorts of things. I'm making it as highly flexible and to have as much potential freedom as possible. You can think of it as a game editor, or an IDE, or a development environment, or a game or an application, or whatever.

It doesn't have to be used for games but it will provide good features to allow for realtime interactivity and to create and edit games and their resources. The main focus to begin with will be 2D but I aim to also branch out into 3D. It will include a cool networking system and support for collaborative editing/interaction. Since the core of it is really quite simple, kind of like a kernal in an operating system, everything built on top of it will be editable - in realtime while it's executing.

It includes an efficient multitasking script/batch system with automatic learning. Stuff created in it can be highly object oriented but it doesn't have to be. It is also going to do a lot of graphics processing and rendering like Photoshop or a paint program since I have a strong interest in graphics, plus animation and image generation. Sort of a graphical arts and design platform. It will have a very extensive library of features and all sorts of tools will be created with it.

I think it will also support generation and editing of BlitzMax programs, but that isn't its native format and I don't intend to be compiling or interpreting Blitz sourcecode. It's BRL friendly ;-) I am thinking it will be more of a higher level game-editor-toolset-frontend for BlitzMax, although it really is a standalone product.

I hope eventually to create some really nice games, tools and applications with it, which will also serve as interactive tutorials. The sourcecode is going to be module-based and at the moment I'm working on a multidimensional linked-list module, where each link stored multiple objects and where each object has its own linked list of objects. This will form some of the foundation of the object oriented design and allows for almost infinite design options. It also supports some of the `holographic`-like thought system that it's based on.

I might release the `platform` itself with a basic toolset as a free product and then charge for the more advanced applications and games that I write with it. I haven't exactly decided yet. I think it's going to be pretty exciting. I have some games in mind that I would like to create with it, as well as some graphics applications.


FlameDuck(Posted 2007) [#10]
I'm working on a unit test suite and a couple of reengineering tools.


Grey Alien(Posted 2007) [#11]
Some people are making educational titles.


Triforce Guardian(Posted 2007) [#12]
That's true, Grey Alien. I've made a few programs to do the maths for me. All I would need to do is copy it since I'd make it able to show everything that was needed to be done to get the answer. So I know that I knew how to do the stuff.


Brucey(Posted 2007) [#13]
A lot of very interesting stuff on the go then!

I'm always amazed at the variety of ideas people have.

I seem to get caught up in making modules, rather than doing any "real" project. But it does expose me to a lot of different APIs, which I guess can be useful.


EOF(Posted 2007) [#14]
I eventually want to create a picture/sound association thing for our young daughter.
Something whereby she can see lots of images of animals and clicking on one of them produces the noise which the animal would make.

I'm also dabbling with a mini gui system (Win32).
Mainly for producing very small tools (30k)
I've got quite a lot of gadgets running so I'm fairly happy with the results so far.


computercoder(Posted 2007) [#15]
I have a focus to build a game, but like many others here, I end up building the tools (ie editors, etc) that support the development to the game itself. Eventually a game might spawn out from all the madness of the tools! As of late, and prolly for the past 6 moths+ I've been dabbling with a 2D World Designer. Basically a Mappy remake with some extra benefits (cross platform for one)

I want it to do a few things:
- Create a nice map with multi-layers that also can parallax scroll
- Detect what tiles do with other tiles
- Define the tiles (as in what properties they have)
- if a tile is a "portal" into another world, and where at does it port you to
- track all tilesets needed

There are some other things I want it to eventually do that just are really needed yet. I started writing a game and built an entire world before I decided to build the designer. There were simply too many missing parts within the game and level maps are hard to scratch up by hand!

Its working so far, but it needs features. If I can stop finding walls, I might get it finished! :) -- Walls are things that come up while finishing a part of code and realizing it would be better if... (you fill in your ideas here)

I suppose I should update my website with the latest revision of it :P


LAB[au](Posted 2007) [#16]
I am making software to play live music, synthetized and sample based, displaying a corresponding music 3D visualization.

In Blitz3d, I made interactive projections using motion recognition (from a webcam), and a DMX control panel. I use Blitzmax/Blitz3d to make architectural realtime simulations as well.


Barbapapa(Posted 2007) [#17]
I am doing Architectural Viz and some times I can persuade a client to do a realtime walkthrough instead of a fully rendered animation. First time I will do it with BMax/MiniB3d, but I won't be shy to purchase BLitz3D if there are any issues.

Besides that I plan to convert my hearing test to BMax and am also prototyping a different type of massive multiperson contact arena, but letter will need some time as time is what I got too little ;)


hub(Posted 2007) [#18]
I'm a french hobbist programmer. I'm making a classic vertical shooter game. i'm coding the level editor with maxgui so you can realise levels without any line of code. User can choose language for the game between english or french. But the editor isn't translated. I prefer bmax to bplus for 2d programs.


CS_TBL(Posted 2007) [#19]
After finally getting rid of some brutal memleak, here's some giger'ish texturegen result:


and its script ^_^
v,128,128iv127>8r,1,,,-2,-2,-2v,,128,,255,255,255t1m15v-3,8z,6,16m12m12v2,,1,2,0m12#1m12v6,2m1v-1,1,,,1,-1m9v,8,8,8m5v32,32,32m6

And lightbeams going through an object..


Techstuff/sci-fi:


ooh, lightbulb!



CS_TBL(Posted 2007) [#20]
How dare I brag about my texture-gen! ^_^

A candle!



Kepu(Posted 2007) [#21]
I am rewriting (converting) my QWCad program to blitzmax .
My previous version was written in VB , I am using it weekly . maybe now I have also enough time to create more 3d features ( might have problems with printer and plotters)


Mark Tiffany(Posted 2007) [#22]
The community IDE.


Grey Alien(Posted 2007) [#23]
CS_TBL: Nice!

In Bplus I made a little program for my youngest son. It showed a picture with a word and also said the word (sample of me). Then he could press space to cycle through the images or press the first letter of a word associated with a picture. He really like it. I also shut down all windows keys so he couldn't get out and create Desktop havock.


Azathoth(Posted 2007) [#24]
I was going to get around to rewriting an unfinished virtual machine I made in PureBasic to BlitzMax, but kind of been putting it off.


bradford6(Posted 2007) [#25]
I was going to write a time management program but...


Blitzplotter(Posted 2007) [#26]
I've been working (on and off) on an educational app for about 18 months (started in Blitz 3D - ported to BMax), hopefully it may be ready for beta testing in the near future....

@bradford... (:-)


bradford6(Posted 2007) [#27]
...I never seem to get started on it.


CS_TBL(Posted 2007) [#28]
*brag*

script:
v512,384i*1v16,16iv1,1,1,#2t24v,m34*
v1,.06,155,98,98,20,200,,,-12,,1t30
v2,2m14m14v1,.06,155,95,55,20,400,,,-12,1t30
v1,1m14v,,512,384,,,255,,,127,,,63,,,31,1t23
v.005,175,165,155,,,,1 t26


result:



Koriolis(Posted 2007) [#29]
What I used BlitzMax for so far:
- a CGI application running scripts
- a debugger interface
- a script editor. Well I didn't write it, it was offered to me and until now I simply rewrote the whole syntax highlighting using an RTF writer plugged right into the Rich Edit control that a TextArea wraps (windows only). The normal Text formatting functions of MaxGUI were simply way too slow (more than 10 times slower than my method).
- an http server (not remotely complete, but serving pages quite well anyway, and with CGI support).

That's about it. I didn't use BlitzMax that much yet, as until now I mainly program C++ code to be used from BlitzMax, rather than BlitzMax programs per se

@CS_TBL: very nice. As far as I'm concerned, you can keep on bragging. Please do it :)
Wait, private? Oh what a pity :(
OK, finally stop bragging it's like waving under my nose a candy I'll never have.


CS_TBL(Posted 2007) [#30]
Dunno, this texgen is actually the 4th generation of the series. Gen1 was quite n00b, gen2 was quite nice, and I used it a lot to generate GUI-buttons 'n stuff. Gen3 was far better, but still became a mess due its size. All 3 were made with B+, and all filters were in one big Select-EndSelect. In an IDE without code-folding you can make a guess about my motivation to work with such an ugly brute.

Gen1..3 truly aren't worth releasing!

Generation 4 however is different. No huge Select construction, but a rather small engine that handles the script, sends out events, and each filter is a seperate function that has one variabele representing the engine, so that one has access to all relevant stuff.

From the start I hoped it would work out but (knowing myself) I didn't expected it to, hence I estimated it would become a big junkyard better to keep :-) . Currently tho, with over 60 textures and modifiers, things are looking fine. There's still no code bloat. Minus the primitive GUI there're about 4400 lines of code right now, over 1700 for textures, over 1500 for modifiers. And if I don't include the textures- and modifier-files then the app just works.. it doesn't do anything useful (e.g. nothing), but it works.

The nice thing is that anyone could make a filter, as there's *very little* one needs to know. Even the filter-helptext is inside the actual filter-function!
So, this simpleness might make it interesting for release, under the condition that users actually contribute public filters. :-) A public filter is as simple as posting the function, and nothing more. In a number of cases one might want to change some core functionality, in this case, each such core function is a method in a class.. quite simple all. What this core class does is house a few basic graphical instructions that one always needs on various places, such as drawrect, bresenhamline, drawpixel, limit, blockaverage, etc. etc. Eventually, when filters start to look like eachother it might be a good idea to thin them out and move their code to this core class.
Note that there're no native gfx instructions in the whole texgen, everything is just manually filling mem. The only image-related function is the ToImage method which converts a buffer to an image. So, native stuff like drawing lines and rects is all native code. This makes the whole thing quite portable even..

So, I need to soup up a number of things, optimize more, make more filters, perhaps inprove the GUI.. but I will consider a public release, as long as ppl contribute with new filters!

Its current list o' modifiers:
Diffuse '0
TopLeftRelief '1
SetChannels '2
Invert '3
Intensitymove '4
Dither '5
Bittrunc '6
ChannelCopy '7
Blur '8
ChannelShift '9
Block '10
Tile '11
Sinedistort '12
SinedistortRGB '13
Blockblur '14
Solarize '15
Max '16
Min '17
Brightness '18
BrightnessRGB '19
Sinecolor '20
Scanlines '21
Hmirror '22
Vmirror '23
PaletteMatcher '24
Binary8 '25
Diffuse8 '26
<under construction> '27
Limit '28
Rotozoom '29
Spherezoom '30
Sinestar '31
8M '32
PaletteFinder '33
Move '34
Mix '35
Normalize '36

And textures:
Clear '0
Box '1
Plot '2
Xline '3
Yline '4
Line '5
; Line2 '6 <disabled>
Bezier '7
Openbox '8
DatastreamRGB '9
DatastreamI2 '9
VectorGFX '11
SetStreampointer '12
; Rays '13 <disabled
Hrays '14
; Radialsines '16 <under construction>
Randompath '17
MSX1palette '18
C64palette '19
C64palette2 '20
C64palette3 '21
DatastreamI1 '22
4PointGradient '23
PerlinOctave '24
Buffercopy '25
Envmap '26
Sines '27
Buffercopy2 '28
Buffercopy3 '29
Vectorlandscape '30
Tunnel '31
Light '32



ok, one more brag :P

Perlin noise
Tunnel
Light
Buffercopy3 (with scaling)




Koriolis(Posted 2007) [#31]
So, I need to soup up a number of things, optimize more, make more filters, perhaps inprove the GUI.. but I will consider a public release, as long as ppl contribute with new filters!
That's no problem at all. I can already see myself spending hours playing with the beast :)