Monkey2v1.1.06 now available!
I have just uploaded a prebuilt binary release of Monkey2 V1.1.06 to itch.io here: https://blitzresearch.itch.io/
This is mainly a ‘first pass’ over various problems and issues with the new 3d stuff, which has included a few big, breaking changes (note that mojo3d is still in it’s infancy and there may be more) in addition to various bugfixes and and feature additions.
The breaking changes include…
Mojo3d (and only mojo3d, not monkey.math or std.geom) now uses degrees instead of radians for angular units. This makes it easier to visualize angles when intializing entity rotations and so on ‘by hand’, which is the most common usage of angles when using mojo3d.
Entity properties and methods now default to ‘world space’. For example, Entity.Position now returns an entity’s position in world space, and Entity.LocalPosition must be used to get it’s position in local space. The rationale here is that game logic is primarily concerned with world space coordinates, so these should be easier to use.
I have split RigidBody into StaticBody, DynamicBody and KinematicBody subclasses, all of which extend RigidBody, but each with a simpler interface that features only the relevant methods. I will probably do the same thing to Camera and Light at some point.
As for additions…
I have added a bunch of new properties (eg: Entity.Rx for entity rotation around x axis, Entity.LocalRx etc) and methods (eg: Entity.PointAt) to the Entity class via a set of class extensions (more to come). I have also moved some of the old Entity properties/methods into extensions in order to clean up the core entity source file a bit. This has worked really well, the ‘core’ entity class now only contains a handful of members for dealing with the ‘tricky bits’. This also means many Entity members are now docced in the (new) ‘extensions’ section of the mojo3d docs. I eventually plan to link classes to extensions in the docs, but for now extension docs are separate from class docs.
The physics World class now has RayCast and ConvexSweep methods (still very WIP) that appear to work really well (thanks bullet!). In particular, I have managed to use the convex sweep to emulate Blitz3D style sliding ‘FPS’ collisions, only with capsules instead of spheres. You can in fact pass any ConvexCollider to ConvexSweep (Sphere, Capsule, Cylinder, More?) and it should just work. Being able to use capsules and cylinders means more realistic player shapes of course.
Currently, it works very much the way Blitz3D’s sliding collision worked, and therefore suffers from similar limitations, eg: ‘step size’ limitations, unintentional sliding down slopes etc. But the exciting thing IMO is that it’s written *in* monkey2 so can be tweaked to behave however you want it to! I do intend to improve on it quite soon so that mojo3d will include a useful quake style collision system.
Have a look at modules/mojo3d-physics/test/fpsthing.monkey2 to see b3d style sliding collisions in action, with the original b3d castle model no less! I have tried it with an actual quake level, but I can’t include that in monkey2 due to licensing issues.
I also spent a bit of time on an IAP module for monkey2. Tony from Playniax sort of forced my hand here by actually writing a mobile game. This has been theoretically possible for some time now, but very few people seem to have even tested the mobile stuff, let alone tried to do something serious with it, so it was actually kind of a shock!
The game itself looks really cool, check it out here: https://playniax.itch.io/revengestar
IAP should be ready in a few weeks. It will be a paid module available via itch.io for 29.00.
(And thank you to the user who sent a donation to cover the ios app store fee!).
Anyway, my plans now for the rest of the year are roughly:
* More work on 3d: point light shadows, terrain material, terrain engine, usable animator, physics etc.
* More work on reflection, especially selective reflection. Also, an EditObject for mojox. The combination of the 2 will enable some very cool stuff I think.
* More work on docs, with the goal of eventually publishing a monkey2 ebook.
Ok, not exactly a roadmap but better than nothing?