Jump to content
  • Advertisement
  • 11/11/09 04:01 PM
    Sign in to follow this  

    Unity Summer of Code Post Mortem: External Lightmapping Tool


    Myopic Rhino
    We talk to Polish developer and Informatic student Michal Mandrysz about the creation of his External Lightmapping tool for Unity, a project selected for this year's Unity Summer of Code competition.
    How would you describe your project to someone who had never heard of it before?

    The project is about creating an easy way to improve the scene look by adding pre-computed lighting and shadows from external applications. Basically the system creates a powerful bridge between the Unity game engine and rendering engines such as VRay and Mental Ray. This means that Unity game developers will now be able to create lighting and shadows of a quality seen in architectural visualizations incredibly easy.

    What is your background and experience game development, Unity or coding in general?

    I'm a second year Informatics student at Wroclaw University of Technology. I'm widely interested in Science and Technology, focussed mainly around Mathematics, Physics, Computer technology and Biology. As a young child I always wanted to make my own game and I tried to learn DirectX at that time, but I needed more mathematical background at that time, so I've turned into mathematics and physics for some time. Later I've started to develop some software (simple game engines, calendars etc. ) using multiple languages (python, java, c++, c#, maxscript, as3, php) for my own usage from which I've published only a small part. Idealist is one of the examples that will be shipping to shops on days.

    A Scene Pre-Light Mapping
    What inspired the idea behind your project?

    Some time ago I was earning money on freelance scene rendering and when I first saw Unity I thought to myself that it would be great to have such beautiful lighting on which I worked before in Unity.

    What does your project bring to the table that isn't available already?

    Well, everyone has its own light mapping workflow- some less painful than others, but my system minimizes the amount of work needed to bake the scene not only the first time, but also later on when changes are needed.

    Unity - Summer of Code

    How would you describe Unity to someone who has never used it before?

    I would say that Unity is a great tool that both greatly minimizes the amount of work needed when developing games and simplifies amazingly the workflow with other tools (I think that's what the name is about !) such as Photoshop, 3d Studio Max, Maya and so on.

    Using Unity you can spend more time thinking about what your game should be about, rather than spending it on figuring how the engine behaves.

    What originally attracted you to use Unity?

    Actually, my friends and I were searching for an good game engine with a quickly growing learning curve and after trying many engines we decided to pickup Unity.

    Which platforms do you target with Unity when making games?

    Well, Unity currently works almost everywhere, but I would target PC and IPhone mainly.

    What inspired you to enter Unity's Summer of Code competition this year?

    My friend Piotr Szwach (great music composer and programmer) encouraged me to send my proposal and I'm really grateful him for it.

    Would you have created your project without the competition?

    Probably yes, but the other and easier way, which wouldn't be such effective. The competition made me put more effort in its quality also.

    What does being selected as a final project in the Summer of Code competition mean to you?

    A priceless feeling that my effort wasn't fruitless and this is most important to me.

    Setting up the lightmapping

    Development - Post Mortem

    After you had the original idea, describe the process you took in prototyping the idea and finally bringing it to completion...

    On the beginning I had to make sure that I'll not get to any roadblocks, so I've planned everything and so the development wasn't that hard. However later on when I'd got some initial feedback I decided to make the system more general and extendable in future. Whilst the system grew the development got a little bit harder and sometimes made me searching for solutions for hours and even days.

    How did you go about testing the project?

    This was one of the hardest parts of the project. I've had to do numerous tests to make my system work, but really soon I've started to send the project at beta stage to people interested in the project. Lucas (my mentor) also did some testing and was giving me a really quick feedback.

    What do you feel went well in the project?

    The project really simplifies the lightmapping process and can save a lot of time. I really like the feature for saving light, rendering and material presets that I've implemented in 3d studio max.

    What didn't go so well?

    I didn't know that there are such huge problems with FBX importing compatibility in 3dsmax, as I developed the system it turned out that only the latest FBX plugin for 3dsmax imports the ASCII FBX file in the right way.

    What were the issues you had with the FBX importer?

    I would feel much better if FBX would have had even the simplest possible documentation when comes to ASCII format. What was probably even worse is that it's easy to find some kind of documentation for the newest FBX 2010.2 version, but there's no chance of finding the old ones.

    If you were to go back and do your project again, what would you do differently?

    I would probably develop a binary FBX exporter which has more chances on being compatible. However the good news are that supposedly someone at Unity is already working at some kind of a FBX exporter which could be later plugged into my system instead the current one.

    What would you do the same?

    I think that there's not much to change now - so probably I would do everything the same way.

    Back to Max for rendering
    Which part of the project did you find the most interesting or fun?

    Testing gave me a lot of fun. The cycle: "Export scene" -> "Tweak lights" -> "Rebake all" -> "Come back and see the changes" -> "Export scene".... is pretty fun actually.

    Which part of the project did you find the least interesting or fun?

    Reverse engineering Autodesk FBX format was fun, but also very hard and sometimes irritating, so I think that it was the worst part.

    Did you have enough time to complete your project?

    Luckily, yes. My family was pretty tolerant in this case and I could start my project almost at any time and end up late at night.

    Is there anything else you'd like to have added or spent more time on if you had the time?

    Yes, providing the FBX exporter would be binary I would love to extend the system to Modo - which currently is my favourite modelling tool.

    Is there any advice you'd like to offer any developers based on your experience in this project?

    Yes - Do not focus on adding new functionality but rather keep figuring out how to make the old ones faster, more solid working and more user-friendly.

    Have you ever developed an addon for Unity before?

    Yes, for instance a batch cubemap creator for materials which should pretend glossy, but I've never published it. Currently I'm thinking about adjusting them a little and sharing with the society.

    How did you find the process of creating an addon of Unity?

    Well, Unity has an enormous amount of examples at the wiki community and one of the existing scripts gave me the idea, which I've then pushed forward using the Scripting Documentation which comes with Unity.

    What support did you get along the way?

    I didn't need any, it was a very basic stuff. However I could turn to Unity Forum and some smart guys there.

    Looking forward...

    What do you plan to do next?

    Well, there's more than a lot on my mind recently. First I'd like to finish the game I and some of my friends started before Unity SOC, this surely will take me a lot of time.

    Would you enter another Unity Summer of Code competition?

    Of course! Developing the system gave me a lot of satisfaction and priceless experience.

    Do you have any other comments you'd like to make about Unity, Unity Summer of code, your project or development in general?

    Get Unity - it's really great stuff. Get involved in developing it - it's awesome.

    Back to Unity to admire the results
    Finally, you mentioned making a game with your friends - would you like to share any information about it?

    Actually it is the first game I'm making. We're not out to make a big, huge, glamorous project like games from EA or Activision so we've decided not to make a FPS, RPG, or an RTS game. We are trying to make small but not casual game for children. I'm not going to tell you what is the game's plot or who is the main character to keep it still confidential. Although I can tell you which games are the inspirations for us: Thief, Mirror's Edge, Assassin's Creed, Crysis, Wiedzmin, Tomb Raider and of course some Disney-like games.

    So what will it be? A platform game with next-gen graphics for children and adults who wish to face up with (or not) the dangerous world while sneaking, jumping, grabbing and solving logical clues designed by 3 of us: me, Peter Szwach and Blazej Stanek with music composed by Peter.

    I know making great looking graphic for games is very difficult thing. There are many small indie groups that have great ideas and graphic artists but their final game is simply crappy. Since it is our first project I expect to gain great experience with it. Also we're not going to release any demo until we know it is looking great. The visual quality is very important for us and that is also one of the things why I made my Lightmapping system. Its first implementation was made for our game. After joining Summer of Code I started from a scratch to make it easy for people to use and extend.

    Thanks Michal and good luck with your game!

      Report Article
    Sign in to follow this  

    User Feedback

    There are no comments to display.

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!