Wrappers and BlitzMAX

BlitzMax Forums/BlitzMax Beginners Area/Wrappers and BlitzMAX

kiami(Posted 2006) [#1]
I have tested some 3D and physics wrappers for BlitzMAX. My feeling, by looking at the codes, is that they confuse BlitzMAX. That feeling might come from my lack of skill in game/graphics programming. I really like to know if that is the case. Look at Blitz3D. The codes looks reasonable to me and a lot can be done in its environment, and it doesn't look like wrappers that are written for BlitzMAX. To me, a good 3D or physics for MAX needs to have a good and clear look code.

However, among these "ugly" wrappers, TV3D is the worse, and Lisa is the best. Actually, TV3D looks better in Visual Basic than in MAX, since you don't expect much in Visual Basic. Lots of hocus pocus to just code a cube!

Now, here is my problem. If ultimately, assume MAX can do 3D, I have to put all coming functions into my own OOP wrap, then perhaps all I have to do is to use one of these wrappers rather than using Blitz3D or waiting for "MAX3D". I hope you understand my problem, and I appreciate your comments or guides.

One more thing. I know programmers needs to make living. If I pay for these wrappers, I will only do so to promote the programming language "community" that I am in. But these programmers must also understand that I am doing so for that purpose, they will make money by the amount of their loyalty to the community, or I hope so.

from a hobby game programmer!


Smokey(Posted 2006) [#2]
well the tv3d wrappers is free but tv3d is not
I think the best is to code in bmax do a wrappers if you want but if I was you then I would wait for max3d because it will worth it.


WendellM(Posted 2006) [#3]
If ultimately, assume MAX can do 3D, I have to put all coming functions into my own OOP wrap, then perhaps all I have to do is to use one of these wrappers rather than using Blitz3D or waiting for "MAX3D". I hope you understand my problem, and I appreciate your comments or guides.

I'm wandering in the woods (or is it a desert? <g>) right along with you, but that sounds like what I intend to do. I plan to use Irrlicht via GMan's wrapper until switching over to Max3D. To make this easier, I plan to "wrap the wrapper" with my own functions (probably similar to Blitz3D's, since they're familar to me) so that I can just modify my wrapper to use Max3D functions in place of Irrlicht functions. There'll doubtless be some manual cleanup/recoding required, but I hope to minimize it by never calling an Irrlicht function directly.

I would wait for max3d because it will worth it.

I'd have agreed with you last year, since that's what I did then. I'd even decided to wait until the end of this year for Max3D. But since it now appears (to me only, which might not match anyone else's view) that Max3D won't do what I need it to until several months into 2007, I've decided not to wait for 3D in BlitzMax any longer. It'll take some work going with a wrapper then switching what's been written with it over to Max3D later, but at least this way I can do something in 3D with BlitzMax.


Gabriel(Posted 2006) [#4]
That feeling might come from my lack of skill in game/graphics programming.

Yes, I'm afraid it does.


However, among these "ugly" wrappers, TV3D is the worse, and Lisa is the best. Actually, TV3D looks better in Visual Basic than in MAX, since you don't expect much in Visual Basic. Lots of hocus pocus to just code a cube!

And there's the proof.

How ugly or beautiful TV3D is has absolutely no bearing on the wrapper. The wrapper copies the syntax of the engine almost perfectly. In fact, I had to go to a lot of work to make it function identically to how TV3D works in other languages. You can port code back and forth between VB, C# and BlitzMax with little or no effort, and I have to say I'm proud of that because it makes it a lot more useful that way.

If you don't like TV3D's syntax then blame TV3D. It's pretty insulting to blame me when my wrapper is a near-complete clone of the original though. Now if I'd imposed my own vision on the wrapper and forced you to go around the houses in a way in which TV3D did not, then I would very much deserve criticism, but please lay the blame at the right door.


LarsG(Posted 2006) [#5]
I don't think he was blaming you directly Gabriel..
I think he just meant that the 3D syntax of TV3D/wrapper may be difficult for him to understand..


Gabriel(Posted 2006) [#6]
Well that may be so, but I read his post through carefully three times before replying, and I don't think so. His post is clearly addressed to wrappers, and authors of wrappers. He even goes as far as to say that TV3D looks better in VB. If that's the case then there must be some differences between my wrapper and the native TV3D API. If that's the case then I'd really like to hear about them because I would like to fix them. It's supposed to be as close as humanly possible.


H&K(Posted 2006) [#7]
@Gabriel,

I dont think he ment to have a go at your wrapper.

He is saying is that if he wrapped TV3D he would use better syntax than you. Thing is I dont think he will wrap it at all let alone better than you.

However, as you said your wrapper is made to be as cloase to TV3D as can be. My understanding is that you have done a good job of it. Ive never used TV3D, but if I was moving from VB to Bmax, then I would want the syntax the same.

What medi is saying is that he doesnt like TV3d, not that he doesnt like your wrapper. (No, thats what he wanted to say, your right in that he does seem to directly blame the wrapper for TV3ds syntax rather than TV3d itself.)

What he is saying about your wrapper tho is right, it was not designed to be in "sync" with Bmax, that is because he cannot see that it was written to make TV3d cross language


Smokey(Posted 2006) [#8]
Gabriel your wrappers seem very good, but I did't try it because I must buy tv3d or wait for public version of v6.5 and for what I hear .... It's not for tomorrow.


kiami(Posted 2006) [#9]
I think you are reading too much into what I wrote. I didn't want to insult anybody, and in technical area, I really don't look at names. What a programmer or a designer do is a pride for her/him and should be. For a user, the matter is solely technical. And I am a simple user. I can effectively relate talks with products, but I avoid them in technical area as much as I can. Politics in technical area is a “sin” for me.

Please read what I wrote as something written from a technically non-expert. In this way, you might understand me better. So, those who took me optimistically are those who understood me. Those who took me pessimistically, they did it because I mistakenly wrote a judgmental sentence about TV3D, and I especially apologies to Gabriel. I didn’t know he wrote the wrapper. Please notice again, as he mentioned too, that all I wrote was from the point of view of non-expert user. Perhaps, if one day I become a better programmer, I would find his wrapper a good one.

Generally speaking, technical capabilities of those who write wrappers are unquestionable and their works are admirable. One of you wrote that I may not be able to write my own wrapper. That might be true, and actually I never tried. I usually design simple classes and I am happy with them as they do the job efficiently for my own purpose. I don't enjoy writing codes for OpenGL or Direct X or other higher level engines, unless someone pay me. Meanwhile, I go for simplicity and fun, and pay to those who take the efforts that I don't.

You all have fun and progress.


Brucey(Posted 2006) [#10]
Ideally, a wrapper for BlitzMax would expose an API in a BlitzMax way - I feel.
The less hoops the programmer has to jump through (like having to use pointers to access certain data-structures), the better, and the easier it will be for said programmer to maintain *their* code.
It's certainly what I try to do with my wrappers.

Let the programmer concentrate on writing their program :-)


JaviCervera(Posted 2006) [#11]
ColdSteel syntax is similar to Blitz3D. The next update of ColdSteel will include the new Mac and Linux BlitzMax modules (apart of course from the old Windows module).


kiami(Posted 2006) [#12]
Jedive,
I tested your BlitzMAX module. As for the example, what you put in readme for BlitzMAX, csLibInit() must be csCoreInit(), and csLibClose() must be csCoreFinish(). But when you run the example, it calls the graphic and in a second jumps out. I tried to use csDrawLine(..) to see a line before jump out, I couldn't see anything. So, it seems ColdSteel BlitzMAX is not ready yet. Also, I couldn't see any 3D primitives, at least for playing around.

However, your goal to provide BlitzMAX-like function names is good. Also having few lines of code to open graphic screen for drawing sounds good to me.
Here is what I tried:
Import usr.ColdSteel

csCoreInit()

csDisplayOpen 800 , 600 , 32 , 1 , 0
	
csDrawLine(200,200, 150,150)

csDisplayClose

csCoreFinish()



H&K(Posted 2006) [#13]
Medi??????????

The goal should be to provide objects


JaviCervera(Posted 2006) [#14]
I tested your BlitzMAX module. As for the example, what you put in readme for BlitzMAX, csLibInit() must be csCoreInit(), and csLibClose() must be csCoreFinish().
Oops! Thanks for pointing that out! In previous versions, it was csLibInit() and csLibFinish(). When I changed it for 0.9.3, I forgot to change the readme for each language. The documentation is correct though.

But when you run the example, it calls the graphic and in a second jumps out. I tried to use csDrawLine(..) to see a line before jump out, I couldn't see anything.
That code open an engine windows and immediately exits. csDrawLine() does not work because all rendering functions must be within the csSceneBegin() and csSceneEnd() functions. A correct example for that would be:

Import Usr.ColdSteel

csCoreInit

csDisplayOpen 800 , 600 , 32 , 0 , 0

While Not csKeyHit(CSKEY_ESC)
   csSceneBegin(0, 0)
   csSetColor csGetColor(0, 0, 0, 255); csDrawRect(0, 0, csDisplayWidth(), csDisplayHeight())   
   csSetColor csGetColor(255, 0, 0, 255); csDrawLine(200,200, 150,150)
   csSceneEnd()
Wend

csDisplayClose
csCoreFinish


So, it seems ColdSteel BlitzMAX is not ready yet.
Check the exmaple I have posted. ColdSteel works perfectly in BlitzMax.

Also, I couldn't see any 3D primitives, at least for playing around.
No, ColdSteel does not support creation of 3D primitives yet. You have to load a mesh from the disk.


kiami(Posted 2006) [#15]
Thanks Jedive. I got something to begin with.

But, H&K,
Well, I don't like objects over object and again objects over new objects and so on. That is logical overkill. I like a progamming environment that gives me some functions that I can build my own simple objects without too much logical expansion and referance. I have seen some people write good simplfied object library out of Blitz3D or BlitzMAX for a particular purpose. One example is "wave" discussion and efforts on physics. It is possible to exapand such simplicity. There is no need to make that more complex. H&K, you try to draw a line between a good design and a bad design, then let me learn.


H&K(Posted 2006) [#16]
Maybe you do, but dont go round saying that to be good in Bmax it wants "BlitzMAX-like function names", because it doesnt.

To mesh with Bmax it wants Object functionality. And then you can do what you want with it


kiami(Posted 2006) [#17]
H&K,
I think my point is clear by now and Jedive understood my point and responded by pointing out to her/his work: ColdSteel. If I build a car to export to England, I won't put steering wheel in the left side!


H&K(Posted 2006) [#18]
Jedive understood my point


I understood your point as well, I just think you are wrong


kiami(Posted 2006) [#19]
I will wait for a while! Time is a cure somtimes.


H&K(Posted 2006) [#20]
Waiting until my onset Senility wont make you right, it will just mean I agree with you


kiami(Posted 2006) [#21]
I still think you don't get it!


Brucey(Posted 2006) [#22]
your goal to provide BlitzMAX-like function names is good

which to me just seems like you are taking a core API and changing the function names to something else for Blitz...

An API might have something like :

drawALine( gfx_context, x, y)

The Max way would be to have a TgfxContext object with a method called drawALine(x, y).

anyhoo... each to their own ;-)


kiami(Posted 2006) [#23]
It is known for long long time that the major cost (used to be 80%) of producing software is not its actual coding, but is its support. So, you may get a wrapper for $20, but it might really worth 2 cents from the view point of the buyer, if there be no or bad quality support or upgrade for it. So, when a wrapper is $50 dollar without support and Bliz3D is $100 with lots of support, then you need to think not twice, but hundred times unless you have enough money to put $50 in trash can. I think wrappers worth less than $10 without support and for encouragement only.


Gabriel(Posted 2006) [#24]
Would you mind making it clear that you're not talking about my TrueVision wrapper here? Because you already got my dander up once by describing my wrapper as "the worst of the ugly" wrappers ( apparently because it does a near perfect job of giving you an exact clone of the underlying API ) Since you have not specfically discussed any other wrappers but are now jumping back on this thread to make ambiguous comments about $50 and no support or upgrades, I'd hate for you to get my dander up all over again.

My wrapper is free unless you want source code and priority support ( IE: you don't get the right to nag me about things if you get it free ) and I've already released more than half a dozen updates, and fixed every bug so far reported as well as several not reported. I'd hate for people to think you were talking about my wrapper, because you're not. And I'd hate for me to think you're talking about my wrapper for that reason and a couple of others.


kiami(Posted 2006) [#25]
You are saying your wrapper is free. And you are saying that you provide support and updates. So, I shouldn't be talking about you. And I am not. I have never bought your wrapper. Also, since people use this forum for selling products related to Blitz software, as a potential buyer, I have right to express my thought about what they offer. If you think your service and product is good, why don't you admire my sense of humanity to raise the level of consciousness of a potential buyer? Don’t be defensive. Be proactive, for example, say: “I agree with medi and that is why I do my best to produce the best wrapper.” Or say no I don't agree with medi and I think $10 is too low. I have my own "couple of others" thought but I wait for your response.


Gabriel(Posted 2006) [#26]
Am I being unfair in wondering whether you were sniping at my wrapper here? Quite possibly, but it can't come as a huge surprise after your earlier comments. Furthermore you wouldn't have been the first person to claim that my wrapper isn't free.

Do I agree with you? Well that's just it. I can't tell if I agree with you or not, because I don't really know what you're talking about. The only wrapper you've discussed specifically is mine, and since neither you nor I are under the impression that my wrapper has to be bought or goes without support, I don't know which one(s) you're referring to.

It does sound as though you have a specific wrapper ( or wrappers ) in mind here. Perhaps if you gave an example of the wrapper(s) you've downloaded or purchased that let you down and how they let you down it would help, because you've kinda gone off at a tangent in that last post, after a 2 week gap.

Of course, in general terms, I think it's good when wrappers or indeed any libraries are either free, or well supported, but you and I may have very different ideas of support. Some people think that fixing bugs and updating if anything new breaks is it good support. I would be one of them. Others think that adding a lot of new features never promised is good support, and I wouldn't be one of them. I think that's exceptional support, and I wouldn't expect it. If I got it, I would be pleasantly surprised.

So yeah, give me a hint what a poorly-supported wrapper is like and I'll let you know.


H&K(Posted 2006) [#27]
A wrapper is worth exactly what it would cost you to do it yourself.

Lets say I allocate 1000hrs to a project I expect to make $10,000 (Not a big return, but its a hobby). So each "hour" of work to me is $10

Now I couldnt write a compiler in 8 hours, so Bmax is good value for money. And Im not working on a 3d project so I can wait for Bmax3d. However If I wanted 3d I would concider a wrapper UNLESS I could wrap it myself in a shorter time.

Now as Ive said the Bmax "style" in my opinion is via Member function/method access, and you think its via Global Functions. But if I felt like you I would get one of the others and I would simple re-wrap it. And then I would shut up about it.

(Also, I agree with Gab, his is the only wrapper you have critisised by name, and he HAD TO DO HIS LIKE THAT, because its maintaining TV3d syntax across all platforms)

If you have a problem with another wrapper, then name it.


Gabriel(Posted 2006) [#28]
A wrapper is worth exactly what it would cost you to do it yourself.

I couldn't have put it better. Fifty bucks of my time is not much time at all, so even an unfinished wrapper or one that needs me to add a few features myself can still be good value if it's several orders of magnitude cheaper than doing the whole myself.


kiami(Posted 2006) [#29]
To H&K,
I think Forum moderator must kick you out for this:
"I would shut up about it"
Watch your language and behave civilized. What make you think that I can't say such a think to you? Don't be sure, and take your gangster attitude out of here Mr.

To Gabriel,
1 - It is not my fault that your wrapper looks not good to me. Does assembly language codes looks good to you? An assembly language code looks great to the coder. Perhaps what you have done may look good to someone else, but you can't tell me why I express my opinion. Let people make their own decision especially beginners in game programming.
2 - Actually this discussion is telling me that some come to this forum to sell their products. I thought this forum is for learning especially for beginners. Imagine you guys fill every corner of this forum and try to sell not to help!! Why you sellers don't go to more advanced users and sell them.
3 - The implicit business logic of wrapper-sellers dictates to come in to sell, not to help, because the more they help, the fewer beginners may not need their wrapper.
4 – My suggestion to Blitz Research is to create a separate area for those who want to sell. Some technical game programming and software engine forums don’t allow discussion beyond the designated subjects.
Do you want me to say more?


H&K(Posted 2006) [#30]
I think Forum moderator must kick you out for this:
"I would shut up about it"
Watch your language and behave civilized.
1) Watch what language? There is no offensive language there at all.
2) Why would a moderator Kick me out for saying that once Id written a wrapper for me, I would shut up about it?

What make you think that I can't say such a think to you? Don't be sure, and take your gangster attitude out of here Mr.
No idea what this was supposed to mean.


Gabriel(Posted 2006) [#31]
Do you want me to say more?

By all means. I'm going to read every word of it and I'm not going to respond to any great degree. If you knew how you were coming across, however, you might choose not to. I don't believe that to be the case though, so please do go ahead. I'd hate you to think that you had to hold back on my account.

All I want to say is that I don't want you to buy the source and support for my TV wrapper, and that - should you ever do so - your transaction would be refunded immediately.


kiami(Posted 2006) [#32]
Gabriel,
Are you from TrueVision3D to advertize for them? Why you go ballistic? Suppose you say no, how would I know? All I know is that you are preying in beginners area of this forum. I am smart enough with my money.

H&K,
Good. You didn't insult me. I just wanted to make sure.


Gabriel(Posted 2006) [#33]
Are you from TrueVision3D to advertize for them?

I do not work for, nor am I in any way affiliated with the developers of TV.

Why you go ballistic?

If I went ballistic, you'd know about it. This is me in "slightly irked" mode at best.

Suppose you say no, how would I know?

Suppose I say no to what? How would you know what? I don't have a clue what you're asking.

All I know is that you are preying in beginners area of this forum.

You need a reality check. I didn't start the discussion of my wrapper, you did. Just because it's the beginner forum doesn't give you free rein to slag off my work without me getting a right to reply. If you don't want to see me react this way, then the simplest solution is to be a good deal more polite and a huge deal more accurate in future.


H&K(Posted 2006) [#34]
You dont "Make sure" by calling "Draw"

I didnt insult you, I told you to putup and shutup.

Obviously the subtlety of the non offencive phraseology was totaly over your head. I appologise completely for this lack of social tact, in that I shouldn't have assumed that you were of an intelligence to understand me.

I promise in any future posts to you I shall be as unabiguous as possible and endeavor to say things as simply and as direcly as Im able


kiami(Posted 2006) [#35]
I think it is you who need reality check. In business, people criticize products and you need to learn to tolerate.


kiami(Posted 2006) [#36]
To Mr. H&K,
Why do you kiss Gabriel's boot? You didn't write any wrapper.


H&K(Posted 2006) [#37]
pmmmummmmmmmmmah @ Gabriels boot

You didn't write any wrapper
How do you know? As I have said, but probably you didnt understand. If I wrote a wrapper I would shutup about it.

Im not attacking you for attacking Gabriel, Im attacking you cos you attacked me. But you probably didnt realise did you? Im really sorry for understanding what you wrote better than you did

Truce?


Gabriel(Posted 2006) [#38]
In business, people criticize products and you need to learn to tolerate.

And for the fifth time in one thread, I'm not in business. If you want to pay me to accept your abuse, I'm afraid it's going to be out of your price range.

If you're into learning, may I suggest putting manners and reading at the top of your list.


kiami(Posted 2006) [#39]
H&K,
No I am the winner, because you couldn't make me insult you. Sorry!

Gabriel,
Thanks for your advise. You would do the same.


H&K(Posted 2006) [#40]
Don't be sure, and take your gangster attitude out of here Mr.


Thats an insult. However you probably didnt realise


LarsG(Posted 2006) [#41]
wow.. this thread is going to be locked any second now..

btw:
I just wanted to say that it seems to me that stan23 clearly doesn't understand the workings of TV3D, and is blaming Gabriel for not wrapping the engine in a more easy-to-use package, more similar to B3D...

Gabriel is providing a *free* wrapper to a 3rd party engine.
He does, however, provide you with an option to buy support for his wrapper, which is admirable.. :)

Stan23; don't shoot the messenger, just because he brought you a message in a language you don't understand..


kiami(Posted 2006) [#42]
This area is for beginners. I suggest to beginners to assume LarsG is correct and I don't understand TV3D. Now, Try all 3D wrappers for BlizMAX. Make few classes that you need to have those 3D functionality in them and use them. have technical judgment, ask yourself why you have come to BlitzMAX for game programming, and ignore all others.

This is my last message in this thread no matter what comes after.


kenshin(Posted 2006) [#43]
You should have apologised medi. TV3D is excellent, as is the wrapper. $40 is dirt cheap for bug support on a product as complex as this. Gabriel has spent months fixing the remaining bugs on this wrapper. You name another product where you get personal support for months on end at a price like that.

If you want to find a 3D wrapper for BlitzMax where there's an equivalent or more expensive price-tag and no support, then go and find Aurora or BasicGL. If you said the same things about them I would agree with you completely.

You've sniped a product which you didn't buy, don't understand, and then failed to apologise. If you were to use the same tactics regarding B3D or Max3D (when it's released) then this thread would have either been locked, deleted, or at least highly 'edited' :\


gman(Posted 2006) [#44]
when making wrappers there are pretty much two paths to take. the first, is doing what you feel is improving on the design but taking the wrapper API futher away from the original API. the second, is making it as near as the original API as possible given the differences in languages.

like gabriel did with TV3D, i have always chosen the latter. there are several advantages to this approach, some of which are: you can essentially reuse most code examples, you can use the documentation that comes with the API, and most importantly, since are probably not many naming differences in the types/functions you can easily ask for and use help from the original API's forums. all this is not true if you write your own wrapper API. not only do you provide the wrapper, but you must provide all the other items as well. for folks doing this on their own time, this is a key design decision.

its a tricky line the wrapper folks walk. we must constantly determine if bugs are wrapper related or in the API itself. most often we are very knowledgable in the API itself, but are novice/intermmediate on its usage and this definately leads to misunderstandings sometimes. bugs in the wrapper are likely to occur as more often than not we dont have tests of all functions in large APIs. we do the best we can on our own personal time and as a whole, we have done very well as there are lots of cool, successful wrappers out there.

gabriel has chosen to charge for support of his wrapper. there is a lot of coding that goes into a large wrapper and many times its not a simple as just exposing a function from the original API. there is a distinct line between problems with the wrapper and problems with the API so why is this not valid? while the pay support grants you the ability to get your bugs discussed and fixed quickly, it does _not_ prevent you from getting updates. if you choose the free route, while you do not have any say in getting bugs fixed, you still recieve releases in which all known bugs are resolved. there is no obligaton to drop down $$. this is a good model IMO.

now this whole mess started off as an uninformed misunderstanding by the original author and its unfortunate that gabriel is the one that was singled out. he does really fine work and it should not be tainted by topics such as this.


VIP3R(Posted 2006) [#45]
Well said gman.


Gabriel(Posted 2006) [#46]
Thanks guys. I appreciate the kind words, and support.


Who was John Galt?(Posted 2006) [#47]
Never ceases to amaze me how a small minority continue to kick people in the teeth for offering the fruits of their labour to the community for FREE.

Suggest you write your own wrapper medi and offer it up for free before you start complaining again.


Damien Sturdy(Posted 2006) [#48]
Without reading the above past a certain point:

I have alot of respect for people who pcreate these wrappers.

Some wrappers are easy, quick, conversions from one system to the next, like a direct wrap of ODE to Max.

but to create the full functionality of ODE with added usability and ease-of use of say, JVODE, is more work. Viper, nice one on that.
Gabriel, I've not looked at your TV wrapper, but you've done it, and for free at that, good work.

Currently i'm using SOW- Ogre, wrapped by Chris C.

It's pretty damn functional, and although alot of it might be direct conversions from Ogre to max I think he's put alot more effort into ease-of-use too. EG He's wrapped it all into neat max-like objects so that Entity.Translate(0,1,0) does what you expect, and so on. I can tell you now that the max source is in no way small, and that doesn't include the C/#/++ side programming!
The guy put himself out there for us and we only have to ask, and he adds what we need. This is FREE- He doesn't have to but does it out of the kindness of his own heart.

Yet, you get people in the community complaining about these folk! Complaints about FREE work they have done and GIVEN away.

Medi: just think before you type. What you have said could have been said in nicer ways that would not have offended the people above.


Thats just my two cents.