Saturday, October 9, 2010

Update

Hi,

Ok, a few people helping out with bmx2 development have expressed concern that the BRL community are expecting something far more 'BlitzMax like' with respect to bmx2.

So, in a probably futile attempt to reduce confusion levels somewhat...

* Bmx2 is NOT, erm, BlitzMax 2! bmx2 is just the code name for the next BRL programming language.

* Bmx2 is, however, fairly similar to BlitzMax in terms of language syntax.

* Bmx2 is MUCH smaller than BlitzMax, with far fewer modules. There are only currently about 10 'core' modules - most of these just deal with simple algorithmic stuff like lists, maps, math, random etc. There are no PngLoader modules or anything like that, no stream system or audio/graphics driver subsystem. Stuff will be added over time, but I want to be careful this time around not to let it all become a big nasty 'mega system' the way BlitzMax did - I want the core to remain VERY lightweight.

* Bmx2 will also include a very simple 2D gamedev module. And by 'simple' I mean SIMPLE! This is so that it can work on a wide range of target devices. This module will initially only include functionality that is available on ALL target platforms. The 2D module is not 'part' of bmx2 in quite the same way the brl.max2d module was 'part' of BlitzMax - it's very much separate and optional (although currently there's not a lot you can do without it!).

* Bmx2 will also include a very simple IDE written in the 2D module, but I expect seasoned developers are likely to turn to something like notepad++ (what I'm currently using) or Ziggy's next super duper IDE. The included IDE will really only be designed to get people up and running - I'm not planning to get into the IDE 'biz at all, but in the spirit of keeping the product fully 'self contained' (as all BRL products have been) some sort of IDE is a must.

Finally, here's a little YouTube vid of bmx2 in action - nothing too fancy, mainly just proof of concept stuff including giving the new touch commands a workout, although I do like the look of delidash!



And don't forget, all this code runs just the same on HTML5, Flash, XNA and Android...

Thanks to jonpittock for that!

(And no, that's not 'real' 3D at the end there - just a nifty little raycaster).

Bye!
Mark

17 comments:

  1. Sounds intriguing !
    I assume we will syllable bw able to bolt on our own modules?

    Keep up the good work :)

    Dan

    ReplyDelete
  2. This is so awesome. Gonna buy BlitzMax so I can get into the language and hopefully port my games then quite fast over to "bmx2"

    ReplyDelete
  3. Hi Mark

    With mobile devices in mind do you have provision for locking/unlocking/forcing screen orientations?
    The last thing I want to see is the screen layout go bonkers just because the user rotated their device

    ReplyDelete
  4. good update
    can you rotate images like in blitzmax?

    ReplyDelete
  5. With every iphone xcode project you have a nib file. As one method it is possible to LOCK the orientation of an application by changing the property in the nib file. A very easy thing to do. I did it in the Delidash project seen in the video.

    Don't misunderstand me stating that as an official solution though, it is just something you can do with ALL xcode projects!

    ReplyDelete
  6. Thanks Jonathan
    In Android the orientation lock can be set via android:screenOrientation in the manifest file.
    However, I don't know whether bmx2 will keep overwriting this file at every compile?

    ReplyDelete
  7. I'd love to get an early peek at this. I've previously sent an email about doing so - have have experience on a number of platforms as well as blitzplus/blitzmax. Cheers, matt

    ReplyDelete
  8. really looking forward to bmx2!

    Any possibility to get more info on the simple 2d game module? Would be nice to know so one perhaps can make a blitzmax game that will be fairly easy to convert later.

    ReplyDelete
  9. I have a couple questions:

    BMX2 (I still like Blitz-Babel or Blitz-peronto) is basically a domain specific language code generator, right?

    In other words, does BMX2 just output source files? Does it attempt to re-create the preferred structures where applicable.. (i.e. MSBUILD compatible files such as .csproj, .sln for C#/XNA). It doesn't attempt to automatically run the compilers, etc for the various platforms you're targetting, right?

    I assume the SDKs are only required to compile since you are leveraging APIs within them?

    Too bad about Apple/iPhone. I imagine you are being bound by the developer agreement not to leak their Objective-C API calls (which seems to be what you're up against here). Any ideas on how to get around that? I know the author of MonoTouch was posed with much the same issue, and Novell put a disclaimer on their FAQ webpage to combat that. Of course, they only ship the binary, so bindings to the proprietary APIs aren't completely visible. Are your "core" libraries for each platform native to the platform? I'd think you would be able to hide their APIs behind your implementation pretty well that way if you are.

    ReplyDelete
  10. Hi,

    >In Android the orientation lock can be set via android:screenOrientation in the manifest file.
    However, I don't know whether bmx2 will keep overwriting this file at every compile?

    No it doesn't, unless you do a 'clean' build.

    Tinkering with the native template/project code is fully supported to allow you to make low level target specific tweaks.

    > In other words, does BMX2 just output source files?

    Yes - it modifies existing source files in (native) target projects.

    > It doesn't attempt to automatically run the compilers, etc for the various platforms you're targetting, right?

    It can.

    When you build an XNA app, it generates a main.cs C# source file and then (optionally) runs msbuild on the project. It then (optionally) runs the output app (if possible - currently with iPhone you need to either click on the app icon in the emulator, or actually build/run from within xcode to test on real hardware).

    > I assume the SDKs are only required to compile since you are leveraging APIs within them?

    The SDKs AND the build tools. We just generate the source.

    > Too bad about Apple/iPhone

    All seems to be sweet on that front now. Apple have given their go-ahead for use of 3rd party tools and translators such as ours - good on them!

    > Are your "core" libraries for each platform native to the platform? I'd think you would be able to hide their APIs behind your implementation pretty well that way if you are.

    There is indeed (well, there MUST be) a 'native' side to our APIs, but there's probably no real way to hide what tool is being used to generate an app.

    If apple change their mind again tomorrow, it'd be trivial for them to run all submitted apps through a program that simply scanned the binary for a sequence of 'signature' bytes indicating what was used to generate it.

    But hopefully android will continue to keep them honest in that respect!

    Bye,
    Mark

    ReplyDelete
  11. How difficult would it be to include GameCenter and iAds in the games?

    ReplyDelete
  12. Hi,

    There will be no built in support for GameCenter, Ping, iAds or other 'platform specific' features in V1.0.

    To use these, you'll need to write - or convince someone to write! - some 3rd party modules, sort of the way skidracer has done with steam for bmx.

    ReplyDelete
  13. TBH the gamecenter etc is simple enough to write a wrapper for or even add into the end product, I have a include to allow facebook and GameCenter in GD projects. GameCenter and Facebook connect are VERY well documented.

    ReplyDelete
  14. cant wait to see how this all comes together. Very cool looking and seems fast

    ReplyDelete
  15. Got time to post an update Mark? You're killing us with the wait! :D

    ReplyDelete
  16. Perhaps he was referring to January 2012? XD

    ReplyDelete

Note: Only a member of this blog may post a comment.