Cocos3D Development Roadmap

This post outlines the intended release of new features and functionality to Cocos3D. Please note that all delivery timeframes are estimates, and do not reflect commitments on the part of the Cocos3D development team.

If you have a feature that you would like to see moved up in priority, consider sponsoring the development of that feature. Contact us for more information about development sponsorship partnerships.

If you have any suggestions or requests, we invite you to add comments below.

  • Cocos3D 2.0
    • Support for OpenGLES 2.0 and GLSL shaders.
    • Integration with Cocos2D 2.1.
    • Mac OSX support.
    • Android support.
    • Asynchronous model and texture loading.
    • Cube maps.
    • Render to texture.
    • Modular shader sources (#import statements)
    • Compatibility with Cocos2D v3 (coming soon).
    • Final release expected Q2/2014.
  • Cocos3D 2.1
    • Additional 3D model file loaders.
    • Shadow maps & decal shadows (shadow volumes added as part of 0.7.0 on 2012-04-12).
    • Remove support for Cocos2D v1 and OpenGL ES 1.1.
    • Expected delivery: Q3/2014.
  • Future versions of Cocos3D
    • Multiple simultaneous cameras on scene (split views).
    • GLKit compatibility & integration.
    • Automatic batching.
    • OpenGL ES 3.0 support.
    • 3D physics engine integration.
    • SceneKit compatibility.
    • Automatic mesh LOD.
    • GLSL optimizer.
    • Remove support for Cocos2D v2.
    • Expected delivery: 2014.

110 comments to Cocos3D Development Roadmap

  • Anonymous

    Since shaders won’t be possible for quite a while, can you suggest some strategies to create similar effects in the fixed-function pipeline (ES 1.1)? In 2D all sprites are square, so shaders aren’t needed for non-mesh/non-square geometries. In 3D, it’s hard to imagine a scene without a programmable pipeline (ES 2.0). Thanks!!

    • Thanks for your comments.

      Granted OGLES 2.0 is more feature-rich and flexible than 1.1, but your question is somewhat open-ended. Can we flip it around to make it more specific, please?

      Can you identify some of the specific things you want to do, but don’t think will be possible in OGLES 1.1, so that I (and others…please weigh in here everyone…there’s a lot of real-world OGLES experience out there) can try to address them with suggestions.

      I recommend that you also post those questions as a topic in the community-driven cocos3d forum, to make use of a much broader pool of real-world expertise regarding what’s worked for others.

      Thanks…

      …Bill

      • Anonymous

        @BillH,Re:Shaders. I apologize Bill, and I retract the question. Thanks for the great work you’ve done, it’s awesome to be able to import POD files and just go. The question was indeed an open-ended best practices question. Feel free to delete my comments. Thanks!!! I’m sure I’ll figure a hack to get my desired effect, and show you when it’s on the appstore! ;-) THANKS!

        • No trouble!

          Good luck with your app. If you have any questions, don’t hesitate to ask, or check in with the forum.

          And we most definitely want to hear about it when your app hits the AppStore!!

          Thanks…

          …Bill

  • [...] A 3D particle system is coming. Have a look at the cocos3d Roadmap for more info about planned features. Please see the cocos3d Programming Guide for how to safely [...]

  • Joe P

    I’d like to suggest that boned/skinning be moved up in the road map. Since most of the information is available in the POD it probably won’t be too hard, oolong uses the same sdk and could be used as reference, I am actually going to take a crack at it myself but based on typical 3D needs particles, multi-texturing and boned/skinning should be highest priority. Keep in mind, this is your show – I just thought I’d toss in my two cents on what is keeping me from using cocos3d right now.

    Really love the engine so far, it’s as simple to use as cocos2d and I can’t wait to make an app with it. :)

    • Thanks for the input, Joe. It’s quite valuable.

      Would you see the need for skinning as higher than the need for a physics engine?

      Does anyone else have thoughts on the relative importance of physics? A true gaming engine will definitely need a full physics engine…but perhaps it is not as high a priority as the other needs.

      Thanks…

      …Bill

  • Joe P

    Hey Bill,

    It really depends. If you’re making a game that doesn’t have 3d characters than physics will obviously be higher priority. For me, I am making something that does contain characters but no real time physics. So obviously, physics are lowest priority with 3d particles / skinning / multi-texturing being the highest. Most indie developers who will make use of cocos3d will not have access to 3d character assets and will tend to make games that contain no characters. I bet I am the only person who wants skinning over physics right now. :(

    I investigated other 3d engines available for iphone and they were either just powerful content tools and not an proper engine (oolong), some were engines but were bloated and slow with no low level access (unity) or worst yet they wanted 25% royalities (unreal). It seems Cocos3d is posed to become the best 3D engine for iphone. So, I am just going to move forward with cocos3d to manage my 3d, my solution is to render out my animated 3d characters onto 2d sprite sheets (doom style) and if I get lucky and skinning becomes available in cocos3d before I complete my development cycle then I can easily switch.

    I tried looking at how you handle the POD files last night but I am just not very good at Objective-C and I quickly realized it was going to be beyond me. (my eyes went cross eye’d trying to read Objective-C)

    Adjusting the billboard code to properly sort with other 3d objects is a much more obtainable goal for my Objective-C skills so I am moving forward with that. If I had a better understanding of Objective-C I could probably help and contribute to the project instead of being that guy who makes feature requests and does nothing to help. :)

    Overall, I am really excited to see someone creating useful tools, keep up the great work sir. :)

  • Hey Bill, This cocos3d is really good job. I don’t have that much experience of 3D field, but I released cocos2d games lately. Zero4Racer Pro .
    I would like to study this technology and also spread this to the Japanese iOS Developers. I would like to translate some part of your page and post on my blog Do you mind if I post japanese translation?

  • I hope more support will be there ready to test and deploy apps using this really cool upgrade to cocos2d

  • Bill,

    Really appreciate your work on this, I’ve been able to load my own models into the template project after some stumbling with the notion of what a ‘tag’ was, turns out it was something you name the object in the 3d graphics program. Anyway really excited to see the progress here and wanted to thank you. Personally I’m looking forward to the particle stuff, I hope there is some consideration on keeping the same paradigm as far as loading in particles as plist’s which can be generated by apps such as particle designer, although I realize that will take effort on both sides.

    Thanks!

    Nick

    • Thanks, Nick.

      Actually, the node tag is automatically generated. It’s the node name that you would set in your graphics editor, and reference in cocos3d.

      Thanks for your input on the particle generator. It was quite interesting, and we’ll definitely take it into consideration as we develop that component.

      …Bill

  • When are you planning on adding retina support?

  • Hi Bill, glad to see you moving forward with this. I was pretty lonely out there in ’09 adding 3D physics to Cocos2D:
    http://www.cocos2d-iphone.org/forum/topic/841

    And eventually did release a game that used SIO2interactive.com 3D object loader with Cocos2D and bullet:
    http://www.playngive.com/blog/2010/5/11/cocos2d-on-top-of-sio2.html

    Not sure there’s anything I can help you with, but let me know. Keep up the good work!

    –yarri

  • I can’t understand what you mean by ./install-cocos3d.sh -u -f -2 “relative-path-to-cocos2d-sources” in README.txt. I tried installing it with the script in my unzipped cocos2d-iphone-0.99.5 directory, then installing cocos2d-iphone-0.99.5 using the included script. Please help, since I can’t figure out whether or not cocos3d should be installed in the directory where cocos2d-iphone-0.99.5 is installed (which I don’t know).

  • Alberteddu

    Hi, Bill

    This is a great project. Awesome work! I’m really looking forward to this.
    And, this roadmap seems very promising. Can’t wait :-)

    Keep up the great work.

    —Alberto

  • JP Guevara

    Hi Bill,

    I would like to help implementing the bullet physics.
    I made it work with a basic game and planning doing some CC3PhysicsWolrd, what do you recomend???

    -
    JP

    • Hi JP…

      We’d be happy to have your help!

      The first thing to do is open up a design discussion. Let’s do that in the cocos3d forum. That way, we can get input and potential collaboration from others as well.

      Can you open a new topic up there, and start a discussion going, please? I’ll contribute to it as well.

      Thanks…

      …Bill

  • Gary Poore

    Thanks for taking the time to create this project. It’s about time there was a 3d engine that wasn’t either a thinly vieled reinvention of the low level apis or a bloated engine that takes you too far away from ‘real’ coding.

    Priorities wise i think you’ve got it about right but I think physics should come before GLES2 support. I’d see support for shaders as a secondary requirement over core functionality like physics.

    Great work, looking forward to following the progress.

  • Billy Rukh

    HEY BILL! Thanks for the help! So I started to use cocos3d but I’m in need for a physics engine :( I know that it states that it’s going to be released on 0.8 but is there anything else I can do?
    Thanks Bill.

    Billy Rukh

  • Hi Billy…

    You could try asking in the cocos3d forum about what others are doing for physics.

    Also…each CC3Node instance has a boundingVolume, which automatically provides both spherical and oriented-bounding-box structures around the node. You could leverage the boundingVolume to perform simple collision detection.

    …Bill

  • Diego Zamprogno

    hello Bill,
    congratulations for the excellent work …
    One question. In my game I need a multitexture material…
    The release of version 0.6 is close or is it better if I implement it myself?
    Are you interested to an help?

    • Hi Diego…

      Realistically, we’re probably about a month away from the 0.6 release.

      If you do undertake to develop a multi-texture design before then, please feel free to submit it to support@brenwill.com. We might be able to include some of your work in the release (with appropriate acknowledgment of course).

      Thanks…

      …Bill

  • C Custer

    Just wanted to say thanks for all your hard work.
    I’m looking forward to new releases, specifically the physics engine update.

  • Andy Fox

    Hi Bill,

    Having a ton of fun using Cocos3D in anger for one of my clients. Thanks for everything you’ve done so far.

    I just wanted to follow up on Diego’s post above regarding multi-texturing. You mentioned the 0.6 release was about a month away, which was about a month ago now, so just looking to see where are, as right now the m-t support would be extremely useful. I’ve done work on it previously using straight OpenGL, but would of course much prefer using a completed Cocos3D method set.

    If you have any updates, that’d be much appreciated. Happy to beta test if things are getting close.

    Best Regards, Andy

    • Hi Andy…

      We’re working on multi-texturing right now.

      As you can see above, there’s a lot in the 0.6 release, and we’ve had to move the release out a bit because of it.

      We might be able to get a sneak-peek release out by the end of June.

      …Bill

  • Andrea Leganza

    Hi bill, are you getting better performances (>fps) into the latest dev version?

    About physic engines, i’m using box2d without problems, it was really simple with the only drawback to call the box2d wold->DrawDebugData() method inside the draw method of the cc3layer.

  • Andrea Leganza

    thinking about fps the best improvements should be get using mipmappings, don’t you think?

    • Hi Andrea…

      You should be able to do mipmaps already through cocos2d‘s CCTexture2D class, which is used by cocos3d‘s CC3Texture class.

      Regarding box2D, if you haven’t already done so, you should consider posting your findings to the cocos3d forum. I’m sure it would be appreciated.

      …Bill

  • Diego Zamprogno

    News on the “sneak-peek” for the multitexture?
    My attempts to implement it are not satisfactory :-(

  • I would like to suggest moving the Mac OSX support up the list as well. Cocos2D already has this and it would be nice to have our Cocos3D applications as easily ported to Mac OSX.

  • Hi Bill,
    Any update on when you may expect version .8?
    Have you made any headway with the Bullet implementation?

    Thanks,

    John

  • Eoin Norris

    Are there any examples for 3D particles? I dont see it in the mash up.

  • James Orman

    I’ve been looking closely at the performance example program. I’ve noticed that the higher the number of nodes, the lower the fps becomes, rather than being based on the number of faces. So it’s possible that somewhere in the objective C code there is a bottleneck from casts and high level object oriented code. Also when looking at the matrix multiplication, there is a call to kmat and some casts into kmat and then back into glmatrix. Since, matrix multiplication is heavily used, I suspect that hard coding some C code into the matrix multiply should speed things up. Also, I’ll try out the strassen algorithm. Since matrix multiply is an O(n^3) operation and O(n^2.8) could be an improvement.

    Since a 4×4 is used so often, n = 16 . n^3 = 4096 operations. n^2.8 = 2352 operations. 4096 / 2352 = Around 1.7X speed improvement should happen.

    • Hi James…

      I encourage you to delve into possible performance issues, and I’d love to hear your feedback and suggestions.

      As I’m sure you are aware, the CC3Performance, demo has a button for controlling whether the nodes are moving or not. The matrix calculations are performed only when nodes are being transformed (moving). so the difference between the FPS when the nodes are moving and when they are not will give you the overall impact of transformations in general, and certainly an upper bound on how much improvement can be made through tuning transforms and matrix calculations.

      Also, the larger the number of nodes, relative to the face count, the greater the number of calls to the OpenGL engine, which has a significant impact on performance as well.

      …Bill

  • James Lee

    Hi Bill,
    This engine is amazing! Thanks for your great work!
    But I think the support of gles 2.0 is kind of late..
    I think opengl es 2.0 has been the most need for ios and other platform, can you please make gles 2.0 possible for cocos3d? Thanks!

  • Hi Bill,

    Many thanks for putting this together, great fun to play with. I’m building a game that has the potential for a lot of occlusion (a first person tilebased game) – I’m about to implement my own game level occlusion, before I do have you any plans to build in occlusion filtering or is this not on the roadmap?

    Best

    • Hi Ben…

      No, we don’t have occlusion on the roadmap yet, so we don’t have plans to introduce it in the near future.

      If you do work on something along these lines, I’d be more than happy to consider including it in a future release of cocos3d, with credit to your work, of course.

      …Bill

  • Hello Bill,

    I’m currently a cocos2D programmer and i follow your progress on cocos3d with much interest as i wish to develop a game using this framework
    I’m disapointed so to see that the release of the physic engine has been postponed. It is essential for developping game to have a physique engine ready to use
    Is there a possibility to move it up on the roadmap?

    thanks and regards

    Benoit

  • Thanks for a great API. Just got Cocos3D up and running, and it seems to help me avoid dealing with a lot of the low level API’s of OpenGL ES that I’ve spent a lot of time on already.

    I would like to develop my app, so that users can add their own models to the app. Collada/.dae support would really make my Christmas :)
    So could something like the following method be added

    [self addContentFromDAEResourceFile: @"Users-model.dae"];
    

    Christian

    • Hi Christian…

      Adding DAE or SketchUp support is just a matter of someone making the effort to do so.

      If you’d like to have a stab at it, feel free to do so, and we can add it to the library. If you don’t have time, it’s something we’ll look to add sometime towards the springtime.

      In the meantime, your users will need to generate POD files.

      …Bill

  • shaun

    Continuous level of detail for large meshes – such as terrains – would be a nice feature. Allow the user to create (and persistently store) a precomputed b+tree with groups of polys allocated to nodes, then determine which nodes are in the camera frustum and only render those nodes.

    • Hi Shaun…

      cocos3d does have a B-tree-based structural node hierarchy, and does performs frustum culling automatically.

      So, you can load more than you need, and cocos3d will handle the visual culling for you automatically, at minimal processing cost.

      However, for very expansive terrain maps, in the interests of saving memory, you would also probably also want to add a simple dynamic loader and unloader that is associated with the camera location on your world grid.

      …Bill

  • [...] to the Cocos3D development roadmap OpenGL ES 2.0 support will be added until version 2.0. At the moment the ETA is “2012″ [...]

  • [...] to the Cocos3D development roadmap OpenGL ES 2.0 support will be added until version 2.0. At the moment the ETA is “2012″ but [...]

  • Pavel Malay

    Is there an easy way to “Identify location of touch event on an object.” using cocos3d 0.6.2 ?
    I’m developing 3D shooter game, and i want to show player, what parts of a model were hit by his shots.

    • Hi Pavel…

      The easiest way is to use the unprojectPoint: method of CC3Camera to create a ray, and then transform that ray into the local coordinates of the node, using the transformMatrixInverted method.

      That will give you a ray in the local coordinate system of the node. You can then use intersection math to determine where on the boundingBox of the node the ray intersects.

      …Bill

  • Pavel Malay

    2 Bill Hollings
    Thank you for your response :)

  • Guy Moreillon

    Just starting with Cocos3D, but I encountered a strange problem: using the basic project template, whenever I used more than 3 nested method calls on my custom CC3World class, XCode would not show me the call stack in the debugger when stepping into the innermost method. I lost 3 hours on this to finally find that the compiler used in the project template is LLVM GCC 4.2. Changing that to the default compiler (Apple LLVM compiler 3.0) fixes that problem. Note that the problem is only apparent while debugging on an actual device, everything’s peachy in the emulator.

    Is there any particular reason for using GCC rather than the Apple’s compiler for Cocos3D project?
    What strange problems am I going to face later, now that I’ve switched compilers?

    Thanks

    • Hi Guy…

      No reason other than legacy.

      Thanks for pointing this out. I’ll change the settings in the next release.

      …Bill

      • Guy Moreillon

        OK cool, thanks for the quick answer.
        Oh one more thing I bumped against: OpenGL profiling with Instruments doesn’t work for some reason, the app dies as soon as it’s started by Instruments. I have no clue why though.

        Thanks for this awesome framework!

  • Magda

    Hi,

    how do you predicted, when additional #d files will be supproted (in my case fbx/dxf loader)?

  • James

    Hey Bill,

    I was wondering tif it would be possible to contribute. I know a lot of people were complaining about the lack of model support or requesting certain models.

    http://assimp.sourceforge.net/index.html

    ^– I was thinking of using that to add model support to cocos 3D as it adds a lot of models.

    Additionally theres another library iSGL 3D. Are there any plans to collaborate with them?, as the creator has no time to finish it but It already has features like occlusion that would be useful for cocos3D and bullet physics. Together I think would make a very powerful game engine.

    • Hi James…

      Once the version 0.7 is released, we are looking at creating a github and opening the development up to a larger community.

      In the meantime, I would be happy to discuss your interest in participating, and we could look to roll any changes out through the existing release structure.

      And thanks for bringing Assimp to my attention. I was unaware of it, and it looks quite promising. And, as you can see above, additional resource loading is one of the next features we plan to address, so your comment is quite timely!

      So, if you are interested in working on integrating Assimp into cocos3d, I’d be happy to discuss it with you, and advise you on direction. The `CC3Resource` framework is designed to be pluggable, so such an effort should be fairly straightforward.

      Please send me a note at support@brenwill.com to follow up on that if you are interested.

      Regarding iSGL3D, it is indeed an impressive library, and I am aware that it contains a number of advanced features that are not currently provided by cocos3d.

      However, we do not have any plans to merge libraries, or collaborate to any large extent. I think that would be too cumbersome a venture, given the respective architectures and approaches. Clean architecture is paramount in our design (as it appears to be so in iSGL3D too), and I would not want to compromise that in either library for the sake of expediency.

      However, as development proceeds, we can look to swapping specific code features and adapting them between the libraries if it makes sense.

      …Bill

  • Samiullah Khawaja

    Hi,

    I am working on a 3D project using cocos3d. I notices some limitations in the order the transformation is applied. The concept of the center of rotation and actual location of the object is a bit mixed. It becomes sometimes difficult to rotate an object around its axis and set its location to some place and vice versa.

    I saw some similar queries in the forums. Is there a way I can contribute to fix this?

    Thanks.

    • Hi Samiullah…

      The pivot point for rotation is the same as the point used to locate the object relative to its parent. In both cases, that point is the origin (0,0,0) of the local coordinate system of the mesh.

      In cocos3d, you can modify this by adding your mesh node to a parent structural CC3Node. For instance, if you want to move the rotation point of a particular node, you can add the mesh node to a parent CC3Node, and give it a location offset.

      This has the effect of moving the pivot point you want to the origin of the parent node. If you then rotate the parent, it will rotate the child around your new pivot point.

      With that in mind, what additional requirements would you suggest?

      Please respond, and make further comments and suggestions in the cocos3d forum, so we can collect input from the broader user base.

      Thanks…

      …Bill

  • Hey, thanks for your work — From reading the overview, I like the design decisions that have been made. I don’t see any plans for porting to C++… Though I am currently an iOS developer I strongly value portability, so I’m going to start work on porting a subset of your code to C++. I’ll keep you posted on how progress goes and hopefully the “cocos3d-x” concept doesn’t die off a couple of weeks after I start work. :)

Add Your Comment

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <pre> <q cite=""> <strike> <strong>

You can enter source code snippets this way

[lang] your source code [/lang]

where lang is a source language format (eg. text, objc, java). You can find the full list of language formats and additional configuration options here. The source code will be colored according to the language syntax. Don't forget the [] square brackets.