Mark's 2nd new worklog!
Miscellaneous Forums/General Discussion/Mark's 2nd new worklog!
http://www.blitzbasic.com/logs/userlog.php?user=1&log=1043Quote:
Hi,
Ok, to clarify things a bit:
* Priority 1 is writing a new 3d lib, with an underlying 'b3d-like' design.
* Priority 2 is wrapping it up as a Max module.
* Priority 3 is wrapping it up for other languages.
When I mentioned 'Blitz3D2' below, I was thinking about swapping out the current 3d engine in Blitz3D for the new one - language/IDE remain the same. Haven't given this much serious thought (and probably shouldn't have mentioned it) as Max/3D kind of renders the idea redundant. Still, there may be people who prefer the simpler b3d language and ide? Community response so far seems to indicate this is indeed so, but it still a 'maybe' for now...
And...there is definitely NOT a new language coming!
Some tech stuff (all subject to change of course):
While this engine wont be identical to b3d, there is one thing I want to recapture from b3d: the 'everything is an entity' concept. To be more precise - 'everything with a matrix (ie: with position/rotation) is an entity', and as such has a single parent and 0 or more children.
This breaks many of the 'design rules' I've read over the years regarding scene graphs, but is just sooo sweet to actually use, and that's gotta count for something! I have tried various other approaches and messed with other systems, but these generally lead to a major increase in API complexity for a dubious amount of efficiency benefit.
Physics-wise, Max3d will have ODE support built-in. Support for other physics engines may or may not happen. So far, I've got body (things with mass), geom (collision shapes) and ball-joint entities happening. Currently, they rely on parent/child relationships to decide what to 'connect' to - eg: Adding a child geom to a parent body will link the geom to the body (and adding another child geom to THAT geom will too, etc) - but this could change in future if necessary with 'SetBody' style calls.
Some might find the idea of bodies, geoms and joints being actual scene-graph nodes a little unusual. But in practice, I just find it much nicer to use than a system that separates out the physics stuff - you can sort of 'construct' things in your head more easily.
Rendering wise, the surface/mesh system is also likely to change a bit. B3d surfaces actually contain a 'hidden' internal mesh (b3d 'meshes' are really a container 'meshmodel' for multiple surfaces) and I want to make this side of things public.
This allows for more flexibility painting the same mesh different ways - which is important because the old 'EntityColor/EntityTexture' stuff *will not* be happening. This basically involved 'blending' multiple brushes, but was very clumsy internally, introduced a nasty rendering bottleneck and would be practically unworkable in a multi-shader environment.
In fact, surfaces are currently 'proper' entities and exist solely to connect a mesh to a material (and provide a matrix). If you want a multi-surface model, you need to create a pivot and add a bunch of child surfaces to it.
Bottom line, code to knock up a cube+physics currently looks a bit like this:
mat=CreateMaterial()
mesh=CreateCubeMesh()
surf=CreateSurface()
body=CreateBody()
geom=CreateCubeGeom()
SetMaterial surf,mat
SetMesh surf,mesh
SetParent geom,body
SetParent surf,body
Bye!
Mark Sibly,
Blitz Research Ltd
Rendering wise, the surface/mesh system is also likely to change a bit. B3d surfaces actually contain a 'hidden' internal mesh (b3d 'meshes' are really a container 'meshmodel' for multiple surfaces) and I want to make this side of things public.
So, that might explain why I couldn't build meshes that were compatible with a stencil shadow system! ARGH!!! All this time and I couldn't figure it out. Making a closed mesh in Blitz3D is almost impossible :( Maybe I'm not skilled enough.
cool, liking the updates, keep it up Mark!
Mark's 2nd new worklog!
Whats the deal? you got worklogs on an rss feed or something? :P
I really like the flow of updates that is going on here. I'm really happy with Marks new direction and can't wait to give him my money for said direction.
I really like the flow of updates that is going on here. I'm really happy with Marks new direction and can't wait to give him my money for said direction.
*Claps* well said!
@Mark
Your worklog outlines exactly what most of your users have been asking for since you originally announced a "new" 3d library a few years ago. Honestly, I am quite excited about this new turn of events and can't wait for the results later this year.
Please keep up the communication as it will go a long way in solving the stupid "Where is the new 3D lib" questions.
Thanks and good luck.
Now that is interesting! :)
Hey Mark,
It is glad that you keep us informed now :)
Everything already sounds very mature and very good. A few thing I want to know is there some interfacing with the Engine planned, eg: Callbacks at some
code positions to append extra functionality. With this the integration of third party additions could be made muxh easier.
Physics-wise, Max3d will have ODE support built-in. Support for other physics engines may or may not happen. So far, I've got body (things with mass), geom (collision shapes) and ball-joint entities happening. Currently, they rely on parent/child relationships to decide what to 'connect' to - eg: Adding a child geom to a parent body will link the geom to the body (and adding another child geom to THAT geom will too, etc) - but this could change in future if necessary with 'SetBody' style calls.
Is the Physiclayer written abstract or will the ODE Physics be builtin hardcoded? I'm asking because I would prefer the Newton Engine and want to know the amount of work it cost to integrate it. (Espacially Newton Archimedea is worth looking at).
thx Mark for this nice piece of information.
Nice. Thanks mark!
"Max3D" :D This is great news!, thanks for dispelling some confusion.
When I mentioned 'Blitz3D2' below, I was thinking about swapping out the current 3d engine in Blitz3D for the new one - language/IDE remain the same.
Haven't given this much serious thought (and probably shouldn't have mentioned it) Max/3D kind of renders the idea redundant
Precicely put, and anyway, if a "b3d2" did get created, it sounds like it would be little more "directly compatable" with the old blitz3d than blitzmax+3dcommandset would be (as explained above). So whats the point when max has already laid the foundations as the new blitz language?
I'm really happy with Marks new direction
New? I thought Max with 3D was always the direction it was heading :/
I hope that there will be FBX support as it's widely supported instead of some unknown proprietary format.
..nice..i see light over Blitz community again :)
This allows for more flexibility painting the same mesh different ways - which is important because the old 'EntityColor/EntityTexture' stuff *will not* be happening. This basically involved 'blending' multiple brushes, but was very clumsy internally, introduced a nasty rendering bottleneck and would be practically unworkable in a multi-shader environment.
I'm not sure I understand what's different here. Didn't EntityTexture just go through each surface that was a child of the mesh/pivot and set the texture? I haven't used Blitz3D in so long I've forgotten.
Are you saying it was possible to set a surface texture AND an entity texture, and have the two blend together? So basically for each surface you had to have a second copy to take on the entity texture?
Or are you saying that being able to set a seperate entity color and entity texture, and blend that texture with the underlying color were what caused the need for such duplicate surfaces? That need doesn't extend to vertex colors, does it? So if that is the case, why not just have an entitycolor command set all the vertex colors instead of doing some kind of funky blending? Did you do some kind of trick to make setting colors faster thinking it was a feature which would be used a lot and needed to be faster than setting all the vertices?
I wish I knew more about the internal workings of 3D cards so I'd be able to figure out what you were doing here, but I guess that knowledge would be pretty worthless now what with everything having changed completely with the advent of shaders. Then again, almost everything I ever knew about programming has become outdated at some point. :-)
Sounds like a sensible plan Mark - go for it!
Sounds like things are going the way they need to go. Looking forward to seeing how this develops.
:)
Everyone hold still... smile... I'm going to take a photo of this kodak moment.
CHEESE! :D
Fantastic. I hope the 3D engine is capable of 2D so I can use the 3D 2D from Bmax which is 2D in 3D. I then hope the 2D replaces Max2D so I don't have to buy the 3D for 2D.
I need to lie down for a bit.
Mark:
I'm very happy with the new direction. I always "got" the entity system in B3D, where I did not "get" the scenegraph system that is standard. I'm looking forward to buying myself another christmas present from BRL, or Birthday, or Valentine, or St Patrik, etc...
Max + new engine sounds great to me.
I can see that max is a bit cumbersome\complicated compared to B3D so perhaps a few changes can be made? It's not *that* different but it is a bit more fiddly.
Coding in B3D was (is) like sketching in a notebook - I could just crack on with it and never really needed to think to much about boring stuff like setting up windows etc. Max is not quite that intuitive (although certainly a better language overall)
The big one for me is lists. I just find it annoying having to set up and manage a list for each type. I find myself putting off work that involves creating a new type because it's a bit tedious.
Would it be possible to have an automatic master list for each type the way B3D does it?
Most of the other functionality of max is easy to ignore if you don't like it.
So whats the point when max has already laid the foundations as the new blitz language?
I have never quite figured out what a lot of people have against Blitz Max. Even when I ask people directly I don't seem to get an answer. I just assume they are unaware of just how close to the other Blitz languages it is. I can only assume that some of the features put people off, even though they're optional and you don't have to use them.
I agree with John P that lists are one of the few things that make BM a bit more cumbersome, but if you've ever reached a point in B3D where you wanted more than one list of the same type, you'll soon value the flexibility over the small amount of extra work.
but if you've ever reached a point in B3D where you wanted more than one list of the same type, you'll soon value the flexibility over the small amount of extra work.
To be honest I don't. I've written some fairly complex games (Naked War has a LOT of code) but rarely need multiple lists. I certainly appreicate that Max allows more flexibility but I find the 'small amount of extra work' is exactly enough extra work to make it a pain in the arse to code creatively. A default master list would clear this problem up for me.
@Reactor - rotfl - nice one mate! Send me a copy...
IPete2.
JP: perhaps you could start of with a base class, on which you create all your game objects, and it automatically puts new objects on a master list.. :)
Perhaps I should. Perhaps that's a bit more complicated than B3D? Which is my point.
* Priority 1 is writing a new 3d lib, with an underlying 'b3d-like' design.
AGREE (can't wait!)
* Priority 2 is wrapping it up as a Max module.
I don't care ( I am sorry BMax guys... :) )
Priority 3 is wrapping it up for other languages.
Hmm... Sounds interesting
Priority 1) - I think he means; writing a "3d lib" a new engine & sdk, with a "b3d-like design" (eg. syntax, "entities" etc..), this doesn't nessecarily mean a product release with its own internal compiler, IDE etc. as he categorically states "There will NOT be a new language comming". (& he then goes on to say that writing another "b3d" is made redundant by max+3d)
Priority 2) - the blitzmax wrap naturally comming as the next step (as an unwrapped lib is not much fun on its own, except in c++).
Priority 3) - Wraps for other languages (& a "b3d2" perhaps?, as he did say "maybe").
At least, thats how i am interpreting it :/
Either way its all good. As long as i end up with a Cross platform BlitzMax3D, i dont really care. I dont mind using lists myself, but a type default list in bmax like John Pickford suggested would be useful sometimes.
When I mentioned 'Blitz3D2' below, I was thinking about swapping out the current 3d engine in Blitz3D for the new one - language/IDE remain the same. Haven't given this much serious thought (and probably shouldn't have mentioned it) as Max/3D kind of renders the idea redundant. Still, there may be people who prefer the simpler b3d language and ide? Community response so far seems to indicate this is indeed so, but it still a 'maybe' for now...
Im glad you have been reading the posts i wouldnt blame you if you were sick of people posting about b3d2.
Im still using blitz3d for a long running project with JV-ode and ive got blitzmax which im learning slowly, so intergrated ode in a blitz3d like module sounds like a dream come true!
Id also be one of the many people who would like blitz3d2 because im very slow at programming and i find blitz3d easyer at the moment.
wow, 2nd post in a single week.......
I am stunned.
Still hanging out to see how it manifests. Keep up the positive direction!
I'm in total agreement with John Pickford. He's written some pretty great games, and in blitz3d. It's not the language thats holding you guys back from writing great games!
He's written some pretty great games, and in blitz3d. It's not the language thats holding you guys back from writing great games!
People wrote great games on a 48k spectrum or amiga too but doesnt mean i want to go back there.
I agree with his point about the (optional) default list (really useful idea) but in my opinion BM is if anything LESS fiddily. Methods allow for much more compact and contained code, stricts mean you dont spend hours trying to debug a stupid variable spelling mistake or type mismatch, has a better standard of programming punctuation, line splitting, the list of advantages is endless.
Or simply don't use all that stuff and just code as you would in b3d.
Yeah. Stop being stubborn and learn a better language. B3D will always have its place, but it *at least* needs strict. Godknows how many projects I dropped because i couldn't fix a bug, only to find 4 years later it was a typo.
Max is a nice language. It's not hard to learn it, and its rules provide you with stricter coding ethics.
NOW, no matter how you do it, if you don't have good ethics yourself, you will always corner yourself. B3D made it easy to code but easy to corner yourself if you dont have good ethics, and unfortunately a lot of B3Ders are new coders who will not have those ethics.
Lovely...I can't wait for our new engine.
Nice :D, will have to look at the way Max does stuff after I finish my current project.
I do indeed prefer the simpler Blitz3d over Blitzmax; sorry, but I still use Blitz3d! How long have I been using it? Since beta. Yeah. I loves it. :D
Has to be said...me too!
IPete2.
Yes, I do have BMax but using Blitz3D all the time.
Do you think if max had better docs ie, when you press F1 it came up with a proper description and example code like in b3d, perhaps even with some "migration" notes, then people would warm to it quicker?
I do. - as (at a basic level) it is very similar to b3d's base language.
I agree with you D4NM4N, we need better documentation. I would love to see it in the same template with blitz3d docs.
Do you think if max had better docs ie, when you press F1 it came up with a proper description and example code like in b3d, perhaps even with some "migration" notes, then people would warm to it quicker?
I don't consider myself rookie in any way, I've programmed mainframe computers in PL/1, cobol , 4GL languages and assembler, but I have to say that the way Blitz3D's documentation works, even if I don't remember or don't know which command to use, searching by context is much much appreciated. Not only that, I never programmed 3D before and hardly knew in first place which commands to use. The Blitz3D help file made me learn how to code blitz! Not omiting the code archive.
Hotdocs and
Community Project: BlitzMax Examples in Helpfiles plus the great tutorials helped Bmax.
Do you think if max had better docs ie, when you press F1 it came up with a proper description and example code like in b3d, perhaps even with some "migration" notes, then people would warm to it quicker?
Yes.
Docs are the single biggest failing of BlitzMax.
And actually, the idea of a "ready-rolled" TypeWithAutoList would be a bad idea to include in the base package...
Do you think if max had better docs ie, when you press F1 it came up with a proper description and example code like in b3d
You mean like blitzMax does when you press F1 twice?
Hitting F1 once it puts the syntax in the status bar, hit it twice and it takes you to the appropriate help page.
But F1 doesn't show the description what the command does, except for BRL's own commands. I posted this question some time ago and nobody can answer it:
http://www.blitzmax.com/Community/posts.php?topic=77741
@John Pickford: I agree, it makes the code a bit less readable and more prone to human error, expecially considered I do almost everything with types and I tend to avoid global variables and arrays. To keep both the flexibility and the ease of use I think BMax could use a default/master list unless specified otherwise after the type has been created (this way it would keep backward compatibility as well).
I hope that there will be FBX support as it's widely supported instead of some unknown proprietary format.
I second that, and I will never stop repeating it. Industry formats support is a must!
It would be great to hear a reassuring answer from Mark Sibly. :)
Fbx's support is a bit all over the place from my understanding, but I have Motionbuilder7.5 sitting around ready to be used, so I wouldn't complain if it got sorted.
As long as I'll be able to use the new 3D lib with Emergence Basic, Pure Basic or Power Basic I'll purchase it the moment it appears.
Barney
Take a look at what different modellers support and you'll notice that fbx is almost everywhere. It's the only real crossplatform format out there now and has the most stable implementations in a whole. So if you want to support a wide range of tools and don't want do deal with a pack of vendor specific formats or implement your own proprietary fromat which most likely won't be supported by the modellers, then it's a wise decision choosing fbx.
Just to clarify some misconceptions about the .fbx format.
1. It is propietary and owned by Autodesk.
2. It is a closed format. They have (as yet) not published the specifications for either the ascii or binary versions, and have declared there is no plans to do so.
3. Some 3rd party support of the .fbx format (and most 3d modellers do now export it) has been acheived by reverse engineering .fbx ascii exported files.
4. Autodesk do provide a .fbx SDK for use with C++ applications but has proven to be a nightmare for cross platform support and incompatiabilites across different versions of the SDK.
In short, imho, Mark should not consider .fbx as the main format for boned animated meshes in his new library until Autodesk publish the ascii and binary specs in full to allow proper 3rd party integration.
I do agree he should focus on an exisitng spec rather than inventing another one of his own but at the moment I don't think .fbx is the answer.
HTH
Works in Unity and all the apps i use around Unity. I just know that it was easily implemented in Modo for instance. If you prefer some bloated format with less support and worse importers/exporters then you can play with Collada, as for FBX:
http://usa.autodesk.com/adsk/servlet/index?id=6837478&siteID=123112
never had an luck with FBX as the exporter with Cinema 4d is rubbish theres always something wrong with the mesh or the animation when it's loaded in another application.
2. It is a closed format. They have (as yet) not published the specifications for either the ascii or binary versions, and have declared there is no plans to do so.
3. Some 3rd party support of the .fbx format (and most 3d modellers do now export it) has been acheived by reverse engineering .fbx ascii exported files.
Are you out of your mind? Take a look at the end of my post.
It is the only interchangeable format widely used in the industry: EVERY major modeller supports it, and support is always kept up to date. Of course the specifications are public even if it is closed source and it DOES NOT require any kind of reverse engineering (it is even against the license). And when I say industry I don't mean only the game industry, but the entire CG industry.
Autodesk acquired the format among with Alias, and Alias in the past acquired Kaydara (the former developer of fbx). The format was already a standard when Autodesk bought it, as it was when Alias bought Kaydara.
To clear things up, Mark Sibly should only have to create a converter from FBX to his proprietary format. This way, every major modeller would be supported in a single stroke, including future ones. It's a lot better than writing lots of different exporters, without the burden to update them regularly too.
From here you can download the SDK:
http://usa.autodesk.com/adsk/servlet/mform?siteID=123112&id=10775847
@dorion
No I'm not out of my mind.
There are no published specifications for the format. Care to link to the ascii and binary specs? A SDK is not a published spec.
The SDK is a source of fustration for developers as it introduces numerous incompatabilities across different versions and with no published specs they cant fix them.
If you try and use .fbx files with diffrent applications you'll invariably get problems. Peter Carter's post above is an all too common experience with the fbx format. A valid fbx file exported with one program will not import correctly into another program. Why? Because there is no published spec and the provided SDK versions breaking things regularly.
The SDK contains everything you need, and it didn't prevent modellers to have excellent exporters for it. What you are suggesting is even illegal (meaning that no commercial package can use reverse engineering) and not needed in order to create a working exporter. The fact that it works flawlessly with Max, Maya, Lightwave (which is also updating support in v9.5), XSI and Modo (plus many others) should be enough already.
It is undeniable that it is widely used and accepted: as I said in the past, interchangeable format are essential not only because every artist focuses on a different modelling package, but also because it is common to switch between packages in order to use the best tool for each part of the job. If Kaydara's format wasn't working as supposed, you can bet it wouldn't be used by now in the workflow (television and cinematography in particular require to get the job done with strict deadlines).
Problems with the exporting either depend on the artist's techniques and selected export options, or are the fault of the exporter's developer. There isn't a viable alternative but collada, which is still immature and far less supported at the moment.
Support for such formats really makes the product take a giant leap toward professional development, more so than many bells and whistles which are being mentioned already but mean very little when you can't easily import your scene into a game with all the maps and/or can't import animated meshes properly. Today modellers are almost used as visual editors for the game, and it improves productivity a lot be able to use them properly (it's also ridiculous to hard code much of the stuff you could easily import).
@ardee
C4D has problems with FBX but that's Maxon's fault and the majority of the modellers is working better with it. Tell us which format is working better with the majority of the modellers out there than FBX in your opinion please.
@taumel
I clarified some misconceptions about .fbx, it's NOT open and not perfect (far from it). If it was open there would be no excuse for incompatabilites between applications, but it isn't so there are. I've never said it wasn't widely used in fact I said the opposite. Non commercial enterprises have reverse engineered the ascii format to provide support where they cant use the SDK for license or cross platform reasons.
@ Dorion
I'd expect it to work flawlessly with Max and Maya as they're Autodesk. The truth is compatability from application to application is poor. Great if your pipeline, 3D modeler-->3D engine works perfectly but after extensive testing this is not the norm. There is so much Autodesk (motion builder etc) application specific stuff in the fbx files that 3rd party developers are effectively only using a small subset of all the features available anyway and are tied completely to whatever Autodesk release in the SDK.
I'm sure Mark will have his own thoughts on which format he will concentrate on. Maybe he'll give us his thoughts. It is a very important decision and one that needs level headed discussion and less FUD.
I'd expect it to work flawlessly with Max and Maya as they're Autodesk.
I do not agree. XSI and Lightwave are not Autodesk products and work flawlessly with FBX. When an exporter doesn't work and other external developers can make excellent exporters, you have to admit that you can't blame the format except maybe for the docs.
developers are effectively only using a small subset of all the features available anyway
Only if by 'subset' you mean program specific features (which any modeller handles differently), because most of the important stuff is very well imported (that is boned and morph animations, maps and lights). Anyway, this just makes the job easier, since Blitz Research can choose what to export and just avoid the rest.
I'm sure Mark will have his own thoughts on which format he will concentrate on.
I sincerely hope so, because with B3D he avoided the issue entirely after releasing the format... however, at the time of the release of B3D this issue wasn't as pressing as it is now.
Anyway, I can't see a single reason because supporting either one or two well known formats (forcing everyone else out) is better than FBX when FBX works exceptionally well with well known formats. And you just have to keep track of one format instead of all of them.
The minority would be someone which wants a direct exporter for his product. However, it makes more sense to have a common solution and then having others writing direct exporters to the proprietary format if for any reason they want to do so, than having everyone to write the exporter for his own format (which, being a daunting task, often results in limited exporters which are far worse than an official one) because only a bunch are supported at the discretion of Blitz Research. Of course to have also some direct exporters would be good, but not at the expense of FBX.
I don't think you want to use fbx or dae (collada) directly. They are both general purpose formats that arent optimized for games. But I do think they would be a good starting point for a converter tool that converted data to the engines proprietary format.
That or have a simple world editor with a good loader that populates the engine scenegraph and let you write out your native scene files from whats populating the current scene.
Thats similar to what we have done with FlowED where we plan to support a couple of the most popular ogre scene formats.
You mean like blitzMax does when you press F1 twice?
Yes and No.
Yes:
I meant twice.
and No:
When you press f1 twice you get a 1 line functionality description, often quite cryptic, hardly ever any examples. I think Bmax is great now i took the time to know it and strongly believe it should be the next primary blitz language.
However when migrating i was almost put off it many times by the poor help which is often confusing. If BRL took some time to get this sorted to b3d standard of helpfulness then people would not fear or be irritated bmax quite so much (and find out just how un-scary and un-annoying it really is).
.
I really like the BMax language but am also put off by the docs like most other people here. For example I wanted to find out how to turn off the blurriness you get when loading images. The answer was by using the AutoImageFlags command but you can guess how long that took to find :)
The way I see it is that if users of this community have trouble with BMax in this regard what are new users going to think when they test drive the program?
When I tried the Blitz3D demo for the first time I was instantly in love with the whole package but if BMax had been my first experience of BRL then I would have turned away, not because it is a poor language, far from it in fact, but because of the poor docs.
This also caused me loads of trouble getting my head around Amiga Blitz which also had very cryptic docs if I remember. I was hopeful that after using Blitz3D that had all changed.
It would be interesting to hear Marks views on this as it is quite obviously a major concern with BMax. Will the docs ever be updated to be more similar to Blitz3D?
Jason.
I've tested quite some modellers and their import/export formats and none of them is perfect but under the bottomline fbx is the clear winner in a real world scenario. Propritary formats are a pain due to missing support (hands up who thinks that autodesk, luxology, softimage, maxon,... will add support for a Max3d propritary format or that Mark really writes export/import plugins for those tools) and beeing able to use fbx directly in Unity (amongst other formats) is really beautiful. What you could do is that you add some sort of cleanup code in Max3D in order to get rid of certain junk structures. In the end i think what's working well in Unity could also be a valid option for Max3D. I mean who is playing catchup with whom again?
They are both general purpose formats that arent optimized for games.
What does it mean? it's the artist which optimizes the model and decides how the model is created, not the format. If the file is interpreted correctly and then converted to the engine's proprietary format it is as good as a conversion from another format of your choice. Once converted, the model would only keep the information which you want it to store in the proprietary format. Anyway, collada actually was made for games, even though it isn't as mature and supported as fbx. From the abstract complainings this discussion makes me wonder how many of the people who is arguing against fbx actually had some complex work converted with it, or used it at all. I know for experience that it works well enough. It won't make your geometry, boning, and mapping correct by itself though, so you still have to know your stuff (or modellers limits) before blaming the result. You can't except to have a converted vue scenery working out of the box in your engine, for example, or to use node materials in lightwave instead of baked maps and expect fbx to keep them intact after exporting.
YES! I would like to see B3D-2 myself. The best part about B3D is the simplicity of the IDE, the docs, everything was well balanced.
I wouldn't mind seeing another SDK type release which we can use for more serious work if we want but the general notion that simplicity was B3D's strength is right on. Heck, B3D was just elegant. Hugely powerful and simple, it doesn't get better.
I really wish there was just B3D with low level access so you could take it somewhere other than the PC if you wanted. Still work with the same tool set though.
All I said was that collada was a good data exchange format. The data isn't stored efficiently all being laid out in XML and not really set up optimaly for populating a hopefully efficient scenegraph for a game. But it does provide a good format to transfer all the data to your own engine. Hopefully you would just take what you need and compile it into an efficient binary format optimized for your engine.
What i would like to know out of interest is.Mark says he is building a new 3d engine in the blitz3d style,will the .b3d format change in anyway what so ever.
Be well.
the B3d format would probably have to change since it would probably need to store extra info like mesh edge lists for shadows, binormal info for optimizing and simplifying shaders. Plus materials would have to be extended a heck of a lot to catch up with modern graphics technology. .B3D is a very nice DX7 format but even fixed function materials are extremely lacking by todays standards.
@Evak
I wonder what efficient binary data you exactly mean. The only case i see were this really is an issue is when you're dealing with online 3d content (no webplugin for blitzmax) or really big models data (like for cad visualisation for instance) and due to this want the smallest possible filesizes but in case 1) the whole webplayer content is compressed (also streamed media) and in case 2) this is a totally different area were you won't find any engines like a Max3D, so in both cases no issues.
The much bigger problem you're facing quite often is having a format which is spported by modellers you or the people you're working together can use and not if your final meshsize is 12kb or maybe 14kb. And if you're really caring about such things then you better use some generative algorithms for your meshes instead.
I would really like him to support an industry standard format, like collada.
An industry standard which is implemented badly and no one uses?
suggest anything better?
Read above...
If it comes out for Blitz3D Ill buy, Max I wont, Im sick of Max, its too much like C++ to be enjoyable.
Great news! Can't freakin' wait either!
If it comes out for Blitz3D Ill buy, Max I wont, Im sick of Max, its too much like C++ to be enjoyable.
A) How do you figure that? Its more like a modern Basic language (with oop capability) if you ask me.
B) Whats to stop you writing in the exact same way (structure-wise) as b3d?
Sounds like Mark's got his head screwed on and heading the right way.
I would also love to see a new 3d engine put into Blitz3D. As far as I'm concerned, the Blitz3D language isn't too simple - it's perfectly balanced for games development. Using entities and types is brilliant.
If it comes out for Blitz3D Ill buy, Max I wont, Im sick of Max, its too much like C++ to be enjoyable.
eh?
*Dabz blinks*
I think he means he doesn't like the way BMax is OOP and has different features to B3D, like Strict, TClasses, etc.
I think he means he doesn't like the way BMax is OOP and has different features to B3D, like Strict, TClasses, etc.
And he HAS to use those because?.... Anyway, max isn't oop-only or anything, it simply has the capability, thats all.
For me, (aside from the 3D) its almost like b3d's base language, but comes with some really powerful extras.
As for all this fbx chatter, I've seen a working cross-platform FBX module (for BlitzMax), which apparently works rather well. Tested on all three platforms, and interestingly, performs the same on each. The only caveat I know of was that a DLL needed to be compiled for the Win32 side since the C++ API is MSVC, and therefore was incompatible with MinGW. So instead of having the SDK-provided static libs compiled in that Linux/Mac was able to, you would ship a DLL with your Win32 binary.
From there, I guess it's just a case of either using it to convert stuff to your own format, or use the objects directly in whatever way you need.
Anyhoo, I expect Mark is more interested in his own 3D format - like the B3D one - which gives him exactly what he wants.
Of course, nothing stopping someone else coming up with a converter...
:-p
If it comes out for Blitz3D Ill buy, Max I wont, Im sick of Max, its too much like C++ to be enjoyable.
I fail to see how it is "too much like C++"..
#include <iostream>
using namespace std;
void main()
{
cout << "Hello World!" << endl; cout << "Welcome to C++ Programming" << endl; }Print "Hello World!"
BlitzMax wins by miles (x100) for simplicity!
Anyhoo, I expect Mark is more interested in his own 3D format - like the B3D one - which gives him exactly what he wants.
Of course, nothing stopping someone else coming up with a converter...
As outlined in my posts above, the main concern is how you convert your models to his format. I agree that he should use a proprietary format, but this time he should also provide proper conversion tools as well. In fact, the discussion pivots around either having a single converter from FBX, or one for each modeller. He avoided this matter entirely with B3D, and it became the biggest wall you will encounter in 3D game development with Blitz3D if you aim at something just a little more complex than basic mesh importing. Third party conversion tools are few and usually quite poor, with the exception of the max pipeline.
For me, (aside from the 3D) its almost like b3d's base language, but comes with some really powerful extras.
Well, there is one substantial difference though, since it uses a garbage collector. However, language aside the main issue obviously is that it can't be backward compatible and you have to rewrite your whole codebase (it would happen anyway with a B3D v2 though).
true, true and true. :)
Although, i cant imagine anyone who just uses it as they would b3d need worry about GC as it will probably be handled by the engine anyway (as it would be in B3D under the hood). As for the syntax rewrite, as you say a b3d2 would need it too simply for the fact there are bound to be new ways of doing things with completely different parameter sets.
And he HAS to use those because?.... Anyway, max isn't oop-only or anything, it simply has the capability, thats all.
The people know that programming BM without OOP
is hopeless. Because everyone uses it. And so there
is no sourcecode they can read without learning it.
And they can't ask questions because the anwers will be in OOP.
"Plz, can you translate the code to procedural programming.
I dont't understand it."
Impossible.
To OOP or not to OOP; this is the question.
The answer is to start coding in Blitz3D or BlitzPlus. Once you reach the point where you start wishing you could; manage your code more effectively; create a string, array, linked list, etc on the fly; compile small programs without ending up with huge executables; create modular, self-contained objects; etc; then move on to BlitzMax.
@Volker
That's not true. You can program in BlitzMax the way you want, you can use object orientation but you don't have to.
Agreed, aside from the fact i use types, lists & methods all the time, i dont really get deeply into it either (except prehaps simple relationship stuff), never really needed to, nor do i have to (but is nice to have it there if i want to use it more often, just need to get into the habbit of thinking more Object-ively :).
TBH, With the exception of lists & methods most of my max programs just read like b3d.
The people know that programming BM without OOP
is hopeless. Because everyone uses it.
Many started using Bmax procedurally and many of those who did are still here using OO techniques. Personally, I don't think that means Bmax procedural aspects are poor rather the advantage of OO becomes more evident.
And so there
is no sourcecode they can read without learning it.
or the 'glass half-full' answer, if you want to learn OO and use Bmax to it's fullest advantage then there's a lot of source code.
And they can't ask questions because the anwers will be in OOP.
"Plz, can you translate the code to procedural programming.
I dont't understand it."
Impossible.
Everybody else who came from B2D/B3D/B+ or Bmax without an OO background managed it so it is possible.
Ideally, questions should cover topics short enough that OO techniques are not really a factor. The problems I have seen is when somebody posts their full code and says "Plz fix" and the design is broken rather than any command they're using.
The response is normally "You need to redesign"
To OOP or not to OOP; this is the question.
To OOP in my view.
<edit> changed some terrible grammatical mistakes but not the content.
Many started using Bmax procedurally and many of those of did are still here using with OO techniques. Personally, I don't think that means Bmax procedural aspects are poor rather tha advantage of OO becomes more evident.
Of course you can start with procedural programming in BMax.
But sooner or later you will have to understand OO or you will
waste the potential of BMax and all the modules.
or the half-full answer, if youw ant to learn OO and use Bmax to it's fullest advantage then there's a lot of source code.
When I decided to learn OOP I have taken a look at C++ and Java too.
Terrible to read the code.
Then I found BMax and I am sure it is one of the easiest way
to learn OOP.
To OOP in my view.
I would never ever go back to PP.
To PP or not to PP? That is the question!
OOP's I PP'ed myself.
I think the ideal of Object Orientation is that you could conceivably have any number of objects which process in parallel all at the same time. It would be like having a CPU core for every object running simultaneously. Then if you want to get really oopie (!) then you'd want each part of each object to run simultaneously. Ultimately if you were not to have any procedural (sequential) activities happening within an object, you wouldn't even have programs anymore. So long as the CPU goes from one instruction to the next over the course of time, pure object orientation is impossible. What we actually have is a measure of object orientation laced with proceduralism.
I mean, after all, you might wrap up your code snippets into Methods or Types but at the end of the day within those types a lot is still happening procedurally. Programming will always be at least a little bit procedural. I do believe that the ideal object oriented system, where all objects are processed in parallel immediately, while being impossible to achieve *would* be better than procedural programming, if it were possible.
Meanwhile so long as we move from purely procedural to at least partially object oriented I think that's generally a good move. Having said that, one downside of object orientation is that in order to represent separate objects in a procedural world (which is what we're doing) you create overhead. This overhead actually can make object oriented programs less efficient that procedural programs. There are still some things I like to do more or less procedurally, where flexibility isn't as important, for the speed boost.
I find the concept of Object Oriented code completely out of sync with the processor technology that we find (CISC or RISC), simply because processors run sequentially. x86 processors I find have been misadapted for the OO coding to such extent that it spends most of it's time playing with stacks and registers in an absolutely unefficient way. if you compare x86 to 680x0 back in the days, it was absolutely clear that the 680x0 processors had a better architecture (more registers, no 640K limit, 32 bit, etc). As time went, the x86 got patched up, to a point where the patches overtook the original structure, but still some underlying limits are present. Underlying limits not because the processor is so behind, but because the compilers can't take advantage of the new features. Only switching to 64 bit mode with proper efficient 64 bit compilers would greatly enhance the performance from 32 bit, and what we've known so far in system performance.
http://en.wikipedia.org/wiki/X86-64http://techreport.com/articles.x/8131/2
64-Bit Code only enhances the performance of memory hungry applications. A 64 bit version of Photoshop with very large amount of RAM installed in your system would perform much faster than its 32-bit siblings can do today. 64-Bit versions of Final Cut Studio will also benefit from that technology.
But almost anything else just won't.
Encapsulation is probably the most important OO-feature, and that is translated to simple functional/procedural code by the compiler anyway; so I just don't see the point where it supposedly is out of sync with the processor technology. All that the OO-paradigm does is make things easier to understand and write for a human.
With highly dynamic languages, things are more complex. But those languages serve the HUMAN even more, not the machine. The program is not fast enough any more? Throw more hardware at it. It's cheaper than development time. And that's pretty much the end of the project budget discussion.
Software does not use all those fancy new hardware features? Well, some hardware engineers and Intel should re-consider their designs, then. Obviously, they are serving the wrong customers. But it still does not matter as long as their damn CPUs are faster - and CHEAPER - in the end.
But almost anything else just won't.
Floating point instructions should (such as 3D renderings and audio processing).
However, enough with OOP, I want Mark Sibly's word on 3d formats! ;)