We are proud to officially announce the development of Codea Craft. There have already been several unofficial threads, twitter posts and videos based on pre-alpha versions of the update. We are now ready to release more information and answer questions related to this update. Codea Craft will be added to the official roadmap soon.
What is it?
Codea Craft is a new addition that simplifies and extends the 3D capabilities of Codea via an entirely new API and set of subsystems.
World() - The Codea Craft world, containing all the objects within it
Entities - Flexible objects in the world that can have a number of components
Components - Special modular components that can simulate physics, render graphics and more
Cameras - Physical representation of camera with support for changing FOV, orthographic rendering, raycasting and more
Mesh - Supercharged replacement for the mesh class
Model Loading - Support for loading .obj models (with future support coming for FBX and skinned meshes)
Materials - A completely new system for controlling the appearance of objects with support for lighting, textures and more
Rigidbody - Simulates 3D rigid body physics
Physics Shapes - Various 3D shapes for simulation including boxes, spheres, cylinders, cones, convex hulls, meshes and compound shapes
Physics Joints - Various 3D constraints for simulation including hinges, welds, ball-socket and more
Voxels - An entire sub-system dedicated to voxel rendering, customisation and interaction
Math Improvements - support for quaternions and associated helper functions, such as slerp, angle axis constructor and more
Comprehensive Noise Library - Tree-based 3D smooth noise including perlin, rigid multifractal and many others
New Example Projects - example projects showing how the new features work with step-by-step guides
When is it Coming Out?
There is a tentative release date for the end of the year but nothing solid just yet. Closed-beta will begin soon.
Will it be Free?
While we love giving out free updates wherever possible, Codea Craft represents an extraordinary amount of work on our part. We aren’t sure how monetisation will work at this stage but we want to make this fair and reasonable for both new and existing users. We are open to suggestions at this early stage.
I don’t see why adult Codea users can’t pay full price, it’s not a huge amount of money, I assume. however, I would suggest a discount coupon for students, if that’s possible, as they are very important in driving the success of the app.
And yes I agree with @Ignatz - I have no problem paying the going rate for this app, Codea is still the single most used app on my iPad (not including iBooks 8-))
I’d be interested to see how this will integrate with / complement the existing Codea app and how exporting apps to run natively will work.
If Codea Craft is being integrated with Codea then it might make sense to add it as an extra IAP, which could open up a whole new direction for Codea with extra downloadable modules / asset packs etc etc
@John - Thanks for clarifying that, I thought it would be a standalone product (a bit like Codea scratchpad), the fact that it’s a Codea update is great news.
And I don’t mind a reasonable IAP to purchase the extra functionality - god know’s I’ve more than my fair share of use of Codea over the years
@Ignatz Yeah this is more about how to charge for a new feature in a way that’s fair to us and our existing user base.
@TechDojo, your suggestion to add the feature as IAP isn’t a bad idea, the only drawback is that user’s wont be able to test-drive the new features or load up forum projects that use it. I was thinking that the new examples would be read-only but still functional if Codea Craft isn’t unlocked. That way the examples can still show you what features you will get.
@TokOut, yes this is an update to Codea specifically (not a standalone product). If you are part of the beta then you are free to submit example projects to us although there’s no guarantee they will be added (or we may ask you to fix or comment them as necessary).
I do like that its build in into Codea! But I kinda dislike the idea of an API (pack) inside of another API. I also dislike that it has its own Mesh() function and a different syntax (funtions beginning with capital letters)
I think Codea Craft should be added as an IAP (but free viewer). This would be the best compromise I think.
There’s currently 22 names listed as beta testers. I’m not sure how many of those names are still current users/beta testers. I’m just posting what I saw listed on the Codea home page. I have no control over who’s selected as beta testers, so don’t ask me to include you.
I believe this game will be a huge success across multiple communities:
Young kids will have interactions with unique shapes
Older kids can enjoy coding their own Minecraft type game, thus making this more popular
However, most people tend to go for the origional idea. Try adding custom a
schematics into the game to make it unique to itself. Minecraft was an entirely new idea, how will this be similar and different? Make this stand out from other games, maybe add a coding tutorial in the game to help better understand.
@TokOut, @se24vad - I’m not 100% sure on the final syntax but at the moment you have to use the Lua require function to load the Codea Craft libraries, so none of the new features will clash with existing projects.
Currently it looks like this:
function setup()
-- load Codea Craft table and export into global namespace
require 'codeacraft':export()
world = World()
end
Alternatively you could do this:
function setup()
-- store reference to Codea Craft table to avoid crowding global namespace
cc = require 'codeacraft'
world = cc.World()
end
@se24vad The use of capital letters for classes is supposed to mimic the naming convention used for user classes. This does look a bit strange compared to the standard syntax codea uses. All function names are still lower case, only classes (such as World, Entity and Components) are named this way. I may consider changing it for the sake of consistency but then you can’t really name things as variables of the same name (i.e. world, mesh, material), which encourages uglier shorthand names (i.e. wrld, msh, m, mat, etc…)
The World class itself may end up being automatically created and executed when using Codea Craft. Right now you have to create it and update / draw it manually each frame.
function setup()
-- load Codea Craft table and export into global namespace
require 'codeacraft':export()
world = World()
end
function draw()
world:update()
-- Do your updates here
world:draw()
end
This game already looks great. So lets take some time to let John and his crew do the work, we will in the meantime use this wonderful app to create our own Codea Crafts
just add a in app purchase menu for people that straight out want to purchase it and add a button to access a list of surveys or ads basically that a user can select, do them, and gain enough points to purchase the app with that, after purchase make the app update to remove both buttons. Either way you would get paid, but people that can’t afford it can still have the opportunity to get it.
This looks absolutely fantastic. An absolutely phenomenal feature set which really plays to Codea’s strengths I feel. It’s as if Unity has arrived on the iPad!
I think an IAP upgrade would be very fair.
Glancing through the feature list, I have a quick question, does it come with support for working out which 3D object has been touched? Is this what is meant by “raycasting” in the “camera” section (similar to Camera.ScreenPointToRay in Unity or SCNView.hitTest in SceneKit)? Although @Ignatz and @UberGoober managed to implement mapping of 2d touches onto the 3d scene, it was something of a marathon effort from them to get this working.