kfprimm's MaxB3D Mod(s) - Any Examples?

BlitzMax Forums/BlitzMax Programming/kfprimm's MaxB3D Mod(s) - Any Examples?

Russell(Posted 2011) [#1]
Why have I not heard of the MaxB3D module?

Are there any precompiled examples out there that show what it can do that I can test out? And how does it differ from miniB3D or Blitz3D/SDK?

Thanks!
Russell


AdamRedwoods(Posted 2011) [#2]
kfprimm was nice enough to take the ol MaxB3D community edition that was started and maintain it, and even add to it.

Warner's engine, MaxB3D, and miniB3D i would say are related to each other so are relatively compatible. Just try the examples from miniB3D, although you may have to make minor adjustments.

Warners engine and MaxB3D both have more features that miniB3D. MaxB3D I think has a DirectX option.


kfprimm(Posted 2011) [#3]
Hey, thanks for noticing!

At this current stage, I don't have any precompiled examples. A lot of stuff is not fully tested/functioning. To be honest, it is not production ready.

However, there are a number of examples in each module's doc folder. Here are some function examples. (Many have been converted from their B3D counterparts!)

One of my primary goals with MaxB3D is to make everything as a modular/abstract as possible. A lot of the functionality that isn't specific to MaxB3D is located in my prime.mod module scope.

It is also totally object-oriented, but there is a module that provides functions, MaxB3D.Functions. I also plan to add a module to restore B3D-like functions as well, MaxB3D.Retro.

MaxB3D is totally API independent, you can actually run it without opening a graphics context! Good for a server environment.

Currently, I have an OpenGL and D3D9 driver. I will probably add a D3D11 driver as col has done the base work by writing a D3D11 module.

Also, I modelled the mesh loader system after the way pixmap loaders work. This means that someone can write a mesh loader as a module, and all users will have to do is import the module to get the functionality.

As for how is differs, the function naming convention has changed and a few other things, see https://github.com/kfprimm/maxb3d/wiki/Moving-from-Blitz3D-or-MiniB3D. In doing this, I hope to make it feel more modern and make it a bit more flexible. For example, PointEntity now accepts an TEntity or a float array with coordinates to a location to point to. This removes the need to create a pivot, position it at the desired coordinates, pass the pivot to PointEntity, and then free the pivot.

I also have an abstract physics and shader system in place, as well as numerous other small features. However, much of these are unfinished. As a side note, the shader system is actually in prime.mod, and will eventually be usable with Max2D by itself.

In terms of functionality in comparison to others, everything else is probably much more complete. For example, B3D style collision code is in there, but it is not functioning properly. Also, I have my own 3D audio system that integrates right on top of BRL.Audio, but the OpenAL driver is not working correctly.

And Adam, I wrote MaxB3D from the ground up. There is no community! I only used MiniB3D as a reference for the GL stuff and a general idea for how to accomplish a couple of things.

If there is interest, perhaps I will try to tackle a few big issues and put out a packaged pre-release in the following week.

Otherwise, you're welcome to grab prime.mod and MaxB3D and give it a go yourself.

If you compile it, it will complain about needing PUB.MaXML. The modules that need PUB.MaXML are not used by MaxB3D, so you can delete them if you wish.

Maybe some more documentation on the module would help others in the future!

Last edited 2011

Last edited 2011


Russell(Posted 2011) [#4]
Absolutely there is interest! :) I checked out the git hub and it looks like there is a lot of potential there. How big of a dent do you think you can put in it in the next week? I guess I should say, percentage wise, how far along are you now on the whole package?

Also, does the Newton functionality require any extra files/dlls? I love Box2d, but of course it is only 2D...

Thanks for all of the hard work you've already done!
Russell

p.s. Documentation is key, also, and one of the things that can take the longest to get "right". One of the reasons I liberally, almost ridiculously, comment my code.


kfprimm(Posted 2011) [#5]
Unfortunately, I have not been using the GitHub issue tracker as much as I could be so it is difficult to give an estimate, but I'd say in terms of core functionality, I'm probably about 70% there. A lot of loose ends need to be tied up.

I am going to try to take care of the last remaining core issues, such as picking, before a release. In any case, look for a release Friday at the latest.

On Linux, and presumably OSX, Newton is compiled directly into the executable. So nothing extra. However, on Windows, newton.dll is required. However, it is already included in the repo (I believe). For some reason I don't remember, it would throw some compile errors when building on Windows from source. I think that is because it is built (typically) with MSVC.

As a side note, in theory, Box2D could be used as a physics driver. Hmm, maybe...nah! I must avoid feature creep! Perhaps later.

Last edited 2011


Russell(Posted 2011) [#6]

As a side note, in theory, Box2D could be used as a physics driver. Hmm, maybe...nah! I must avoid feature creep! Perhaps later.


Who was it that said "Movies are never finished, just abandoned"? Same thing could be applied to programs: At some point, we have to just say "Ok, it's finished." (and then under our breath "..for now"). ;)

I would say, don't worry too much about adding features that are outside of your project's main goal, which I presume is 3D. Besides, we already have box2D available to us and could, I assume, fairly easily use it with MaxB3D if necessary, right?

I look forward to see what you have completed on Friday! Good luck!

Russell


kfprimm(Posted 2012) [#7]
Alright, sorry for the delay! Had those things they call "real life" and "work" get in the way.

I've made a lot of progress over the past few days. Took care of a lot of the things I had been putting off and managed to squash a number of bugs (but no doubt, have introduced a few more!).

Anyway, the only thing that is holding me up is an issue with D3D9 alpha 'fullbright' rendering.

I should have a 'preview' release together in the next day or two.

In the meantime, if you're comfortable with building modules yourself, download MaxB3D and my prime.mod modules, and give them a go.


Russell(Posted 2012) [#8]
Looking forward to giving this a try!

Russell


simonh(Posted 2012) [#9]
Excellent work kfprimm. Keeping a close eye on this.


Leon Drake(Posted 2012) [#10]
absolutely wonderful.


GW(Posted 2012) [#11]
has anyone ever actually built and tested these modules??

Last edited 2012


kfprimm(Posted 2012) [#12]
Me! :)

I probably need to update the README, but grab:
https://github.com/kfprimm/maxb3d (as maxb3d.mod)
https://github.com/kfprimm/prime.mod
https://github.com/kfprimm/gfx.mod

Throw them all in your mod folder and rebuild your modules. They should all compile out of the box.


GW(Posted 2012) [#13]
Just checking. None of the modules will build on windows. BMK farts because all of the files have malformed newlines.

Last edited 2012


kfprimm(Posted 2012) [#14]
Ah, thanks. I was unaware of that issue as I use msysgit on Windows and have it set to convert to CRLF when checking out and to LF when committing.

The easiest solution is to install msysgit (if you don't have a git client installed), and clone it from GitHub.

Other than that, find a utility to convert all the line endings, or wait for a proper release from me. Can't give an accurate time estimate on that though, as there's still so much to do.

If you want to follow the development, you'll probably want to take the git route as things move very fast.


Spacechimp(Posted 2012) [#15]
Is anyone working on providing documentation on this?