tag:blogger.com,1999:blog-54848327216818148332024-03-08T11:01:35.621-05:00I-Novae StudiosAnonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-5484832721681814833.post-28749940438306117792015-08-17T09:13:00.000-04:002015-08-17T09:13:30.674-04:00The Home StretchHey everyone it's time for another update on where we're at with launching our Kickstarter campaign. For those of you who have been staying up to date with our progress you will be aware that we filmed the live action portion of our Kickstarter campaign video <a href="http://inovaekeith.blogspot.com/2015/06/the-kickstarter-video-has-been-filmed.html" target="_blank">back in June</a>. It was the first time so many members of the team, 5 of us, were in the same location together and it was the first time most of us had met in person. Since then this summer has been a flurry of activity as we begin entering the final countdown for launch.<br />
<br />
The in-engine portion of our campaign video has ~4-5 outstanding issues left to be fixed. This primarily includes tweaking particle effects and polishing up oceans a bit more. Once that's complete, hopefully within the next week or 2, our sound engineer Panu will do the final pass of the music and sound effects. Next month we will begin combining the live action and in-engine video footage to create our final series of Kickstarter videos (there will be more than 1). We will also be launching the Battlescape website which will include information on the plot surrounding the game as well as additional information regarding the environment, ships, weapons, etc.<br />
<br />
Also next month we will be putting together our media materials, fan-site kits, and press releases. Yesterday (Sunday, August 15th, 2015) we had our 3rd team-wide playtest of the game and it's coming together quite nicely. While it's still largely a prototype at this stage I believe it represents a great sneak peak of where we want to take this game and the team spent a very enjoyable 3 hours playing it. Our current plan is to make the prototype available to members of the media during our Kickstarter campaign. We will be showing it off via a live twitch stream for everyone else and for those of you who pledge the early access tier you will be able to download the prototype at some point shortly after the campaign ends. If you are a member of the media and you would like to make sure you receive a copy of the prototype please <a href="mailto:contact@inovaestudios.com" target="_blank">contact us</a>.<br />
<br />
Until the Battlescape site is launched we're going to continue holding back the majority of our content, however we will likely provide the official launch date once it goes live. While most of our screen shots are of the same couple planets if you've been paying attention we've let drop some hints of the things to come. It's been a hell of a journey and once we pull back the curtain I'm confident all of you will agree we've built something incredibly unique an special - we can't wait!<br />
<br />
Lastly here are some screen shots from the playtest:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-YcsbMzFWATg/VdFlSBZ-y6I/AAAAAAAAAUc/fYwM0GOjQQg/s1600/screenshot11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://3.bp.blogspot.com/-YcsbMzFWATg/VdFlSBZ-y6I/AAAAAAAAAUc/fYwM0GOjQQg/s320/screenshot11.png" width="320" /></a></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-JF60t9q1mSs/VdFlSZYavhI/AAAAAAAAAUk/OZMZJPVkwag/s1600/screenshot12.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="http://3.bp.blogspot.com/-JF60t9q1mSs/VdFlSZYavhI/AAAAAAAAAUk/OZMZJPVkwag/s320/screenshot12.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Galaxy background is still a work in progress</td></tr>
</tbody></table>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-e3EAWWCZrXY/VdFlSRo0IQI/AAAAAAAAAUg/YUEBaL8St8c/s1600/screenshot13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://1.bp.blogspot.com/-e3EAWWCZrXY/VdFlSRo0IQI/AAAAAAAAAUg/YUEBaL8St8c/s320/screenshot13.png" width="320" /></a></div>
<br />Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com0tag:blogger.com,1999:blog-5484832721681814833.post-13417240945306103882015-06-21T21:01:00.000-04:002015-06-21T21:01:53.561-04:00The Kickstarter video has been filmed!Hey everyone I'm happy to report that this last week Flavien and I flew to Helsinki to meet up with our sound engineer, Panu Aaltio, as well as one of our programmers, Kimmo Kotajarvi, to film our Kickstarter video. It was the first time I had seen Flavien in-person since 2010 and it was also the first time more than 2 team members had ever been in the same location at once! Unfortunately Flavien's luggage was misplaced by the airline and we started off our day of filming by getting him some new clothes.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-rGP6e4A6qCI/VYc_FblCrvI/AAAAAAAAASA/qV5Ny6f5EY4/s1600/IMG_2408.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://1.bp.blogspot.com/-rGP6e4A6qCI/VYc_FblCrvI/AAAAAAAAASA/qV5Ny6f5EY4/s320/IMG_2408.jpg" width="240" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Flavien looking for new clothes</td></tr>
</tbody></table>
Once Flavien had picked out some new clothes we headed to Panu's studio to begin filming. It's worth noting that up to this point Flavien had been working on the prototype for Infinity: Battlescape in complete secrecy. Nobody else on the dev team had seen it as we have all been working on the in-engine portion of our Kickstarter video which, even though they share assets, is actually a different "game". Originally he was going to show it to us earlier however he was so excited with the progress he was making he decided to wait until we met in-person in Helsinki for a big unveiling. When we arrived at Panu's studio Flavien took the wraps off of the Battlescape prototype and showed it to the team for the first time - needless to say we were all quite pleased with the result.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-dXAzlDfjpHc/VYdA0tTbitI/AAAAAAAAASM/1KGHKv_Ab5I/s1600/IMG_2433.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://2.bp.blogspot.com/-dXAzlDfjpHc/VYdA0tTbitI/AAAAAAAAASM/1KGHKv_Ab5I/s320/IMG_2433.jpg" width="240" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Seeing the Battlescape prototype for the first time</td></tr>
</tbody></table>
After spending some time with the prototype we began setting up for recording our video. A friend of Panu's who specializes in film assisted us with getting a green screen and 3 cameras. He was a tremendous amount of help during filming not only for his expertise but also as someone who knew little about our project and was able to provide unbiased feedback.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-H8q4hHEdh0Q/VYdEn7kkRBI/AAAAAAAAASg/qs2W9sbaIcw/s1600/IMG_2422.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://4.bp.blogspot.com/-H8q4hHEdh0Q/VYdEn7kkRBI/AAAAAAAAASg/qs2W9sbaIcw/s320/IMG_2422.jpg" width="240" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Our filming setup</td></tr>
</tbody></table>
Filming began with Flavien and I getting mic'd up followed by sound and camera tests.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-l1GOe1knxCI/VYdMYt73IZI/AAAAAAAAAS0/XDyBhDs9ksw/s1600/IMG_2449.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="http://1.bp.blogspot.com/-l1GOe1knxCI/VYdMYt73IZI/AAAAAAAAAS0/XDyBhDs9ksw/s320/IMG_2449.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Camera & sound test</td></tr>
</tbody></table>
Fortunately sound and video worked on our first try and to get warmed up we decided to start off with answering questions from Facebook and the forums. This ended up being a great idea as it took us some time to loosen up to the point where we felt comfortable on camera. After spending a few hours filming we broke for lunch and met up with Kimmo. Prior to flying to Helsinki we had written a script for our live action recording. Once filming began we quickly realized that the script was far too robotic and we began trying to record our video more as a casual conversation between Flavien and I. Kimmo became our impromptu director and was a tremendous help in making sure we covered all necessary topics and that we redid takes when appropriate. The day of our recording the weather was amazing and we took an hour long break in the evening to go on a hike.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-u9DnvEthgrk/VYdUzDZu5yI/AAAAAAAAATY/GlABImjRYn4/s1600/IMG_2438.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="http://4.bp.blogspot.com/-u9DnvEthgrk/VYdUzDZu5yI/AAAAAAAAATY/GlABImjRYn4/s200/IMG_2438.jpg" width="150" /></a></div>
<a href="http://4.bp.blogspot.com/-nViI7H8Lxz0/VYdUyuN32aI/AAAAAAAAATM/uEU0SolecVQ/s1600/IMG_2441.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="200" src="http://4.bp.blogspot.com/-nViI7H8Lxz0/VYdUyuN32aI/AAAAAAAAATM/uEU0SolecVQ/s200/IMG_2441.jpg" width="150" /></a><a href="http://3.bp.blogspot.com/-2tgt70oSEn4/VYdUyl9ogRI/AAAAAAAAATI/AbfZ_4tho_A/s1600/IMG_2447.jpg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="112" src="http://3.bp.blogspot.com/-2tgt70oSEn4/VYdUyl9ogRI/AAAAAAAAATI/AbfZ_4tho_A/s200/IMG_2447.jpg" width="200" /></a><br />
<br />
All in all we spent about 9 hours on-site recording for a total of 80gb of footage. While there's still a tremendous amount of work to do in post-production we feel confident we got some great footage and we'll be able to put together a compelling video. The editing process is going to take some time but we can't wait to show all of you the finished product!<br />
<br />
Our last day in Helsinki the weather was cold, windy, and rainy so we didn't get a lot of sight seeing in. One of our artists, Kristian Agren, who also lives in Finland stopped by and showed us around a Finnish art gallery but aside from that we mostly stayed inside and enjoyed some Finnish beer. We spent a lot of time playing the Battlescape prototype and discussing our plans for the Kickstarter. At one point Kimmo remarked "so, you guys are here, I guess we're actually doing this". I responded with "yeah, we're totally doing this".<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-nZDSh1jzIx0/VYdXWGR2BiI/AAAAAAAAATo/lHFNpp4ga3Y/s1600/IMG_2468.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://3.bp.blogspot.com/-nZDSh1jzIx0/VYdXWGR2BiI/AAAAAAAAATo/lHFNpp4ga3Y/s320/IMG_2468.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Enjoying some brews while discussing Battlescape</td></tr>
</tbody></table>
Today the Battlescape prototype was unveiled to the team members who were unable to make it to Helsinki. We played our very first multiplayer match, which we also recorded, and I have to say even in these early stages it was a hell of a lot of fun. We have a lot of extra footage and we aren't exactly sure what we're going to do with it yet. Perhaps at some point we'll release a "making of" or "behind the scenes" video however in the meantime it'll go into the I-Novae Studios vault.<br />
<br />
There's a lot of polish that still needs to be done before we can launch our Kickstarter however everything is starting to fall into place. We still aren't announcing an official release date just yet but as you can probably tell from all of this activity we're working hard to launch the campaign soon. I'm incredibly proud of the team and I think you all are really going to like what we have to show you. Our last night in Helsinki Flavien finally received his luggage. I took a picture that I believe perfectly captures our excitement as we progress toward launching this Kickstarter and making Battlescape a reality.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-PUgd6dsG94M/VYdbsgS6D7I/AAAAAAAAAT4/ggz1__Dbed8/s1600/IMG_2470.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://1.bp.blogspot.com/-PUgd6dsG94M/VYdbsgS6D7I/AAAAAAAAAT4/ggz1__Dbed8/s320/IMG_2470.jpg" width="240" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Last night in Helsinki at 1am Flavien gets his luggage</td></tr>
</tbody></table>
<br />Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com0tag:blogger.com,1999:blog-5484832721681814833.post-78218038218169754082015-05-17T20:23:00.000-04:002015-05-17T20:23:10.009-04:00Update on the status of the KickstarterWell it's been a little while since my last blog post so I figured I'd write an update for everyone. Naturally the thought on everybody's mind has been "when are you going to release your Kickstarter". We decided a while back to stop giving estimated release dates as the moment we miss them everybody starts yelling at us for being vaporware. That being said we are in fact trying to release it this year and, believe it or not, I think we're entering the home stretch.<br />
<br />
<a href="http://1.bp.blogspot.com/-fsa9ecW4w8I/VVkrOfx7-MI/AAAAAAAAARU/FoQMkIlQs5I/s1600/DemoScreenshot_ConvoyEscort_004.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="200" src="http://1.bp.blogspot.com/-fsa9ecW4w8I/VVkrOfx7-MI/AAAAAAAAARU/FoQMkIlQs5I/s320/DemoScreenshot_ConvoyEscort_004.png" width="320" /></a>If you've been actively following us you've probably noticed that over the last ~4 months we've started <a href="https://forums.inovaestudios.com/t/i-novae-engine-screenshot-thread" target="_blank">regularly releasing</a> new screen shots and small videos every week. This has been the beginning of the gradual ramp up to the release of our Kickstarter campaign I mentioned a year ago. You may have also noticed that most of these content releases are devoid of ships or anything resembling gameplay. This is because we're keeping all of our new content a secret until we launch our Kickstarter campaign.<br />
<br />
Our Kickstarter campaign video is coming together quite nicely. As I am writing this I actually have it playing on repeat in the background and I can't begin to describe how excited the team and I are to show it to all of you. Nearly all of the animation work, with the exception of some tweaking and a few bugs, has been finished. We've done the initial pass for our audio and music. Currently we're integrating all of the particle effects, tweaking post-processing, doing a final pass on the audio, and getting ready to tackle a few remaining technical issues we need to wrap up.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Jp0btsLUWGs/VVkrO8qUNOI/AAAAAAAAARY/liX2oaQOspY/s1600/DemoScreenshot_ConvoyEscort_007.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="200" src="http://1.bp.blogspot.com/-Jp0btsLUWGs/VVkrO8qUNOI/AAAAAAAAARY/liX2oaQOspY/s320/DemoScreenshot_ConvoyEscort_007.png" width="320" /></a></div>
<br />
We've written the script for the live action part of our campaign video which will include both <a href="https://twitter.com/inovae_flavien" target="_blank">Flavien</a> and I speaking. I'll be flying out to Europe sometime in June for the actual filming which will be the first time Flavien and I have met in-person since spring of 2010! The entire video should come in at ~10 minutes and we'll have some additional smaller videos that we'll release throughout our 30 day campaign.<br />
<br />
I had mentioned previously that our goal was to release an interactive demo prior to the launch of the Kickstarter campaign. Due to time constraints we've decided we're no longer going to be able to do that. Instead we're planning to do a live Twitch session with Flavien playing a prototype of the game during the Kickstarter. Lastly we're almost done finalizing all of our reward tiers and we'll be releasing a list of them soon for the community to review. We're trying to stick to digital rewards as much as possible however at the higher end reward tiers we do have some plans to make physical goods available.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-fuvpes1E1D0/VVkrM6ePG4I/AAAAAAAAARM/9VZWbSS9KG4/s1600/DemoScreenshot_ConvoyEscort_006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://2.bp.blogspot.com/-fuvpes1E1D0/VVkrM6ePG4I/AAAAAAAAARM/9VZWbSS9KG4/s320/DemoScreenshot_ConvoyEscort_006.png" width="320" /></a></div>
<br />
It's been a long time coming but we're almost there and we can't wait to show everyone what we've been working on!Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com0tag:blogger.com,1999:blog-5484832721681814833.post-38484410378815121402015-03-29T18:58:00.000-04:002015-04-03T18:38:29.700-04:00How we Take Screen Shots<span style="font-family: inherit;">Today's blog post will actually be a guest post from one of our artists, Dan Hutchings (<a href="https://twitter.com/HutchingsINovae" target="_blank">@HutchingsINovae</a>), about the process he goes through when creating our screen shots. Dan has taken some stunningly beautiful screen shots with the I-Novae Engine and without further ado I'll pass the podium to him:</span><br />
<br />
<span style="color: #666666;">"This week I’ve decided to share a bit about the screenshot taking process and provide some behind the scenes insight on the state of the engine. The I-Novae engine is becoming quite user friendly, the tools allow one to control the visual mood and tone of a scene without having to make calculations or adjust code, which is great for a free flowing artistic process.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="color: #666666;"><a href="http://2.bp.blogspot.com/-3S7WaRvLV6c/VRiCOYGDBeI/AAAAAAAAAQY/lbEgVImXbHs/s1600/Blog001_Mountains-PinkSky.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://2.bp.blogspot.com/-3S7WaRvLV6c/VRiCOYGDBeI/AAAAAAAAAQY/lbEgVImXbHs/s1600/Blog001_Mountains-PinkSky.png" height="121" width="200" /></a></span></div>
<span style="color: #666666;">
<br />A screenshot can look quite different just by adjusting the star’s temperature (which translates to colour) from red dwarfs to blue giants. Once a nice view has been selected for capture I can begin tweaking the scene settings to find something that looks appealing. Lower temperatures give reds and oranges whereas higher temperatures produce lovely blues and whites. Personally I prefer the purple sunsets and blue hues.<br /><br />I control the visual depth of the image by adjusting atmospheric scattering such as density, thickness, and refraction to produce a thick haze or thin veil of an atmosphere. The ambiance of the shot is further modified by toggling the oceans; I can capture a barren dry landscape with a glowing red giant or a frozen, water-less, irradiated world quietly orbiting a white dwarf star. A lot of character and back-story can creep into a shot as it develops.<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-jBqZudBpU2M/VRiCOb6iVcI/AAAAAAAAAQc/BjovEVo_2eo/s1600/Blog001_Mountains-Orange.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://3.bp.blogspot.com/-jBqZudBpU2M/VRiCOb6iVcI/AAAAAAAAAQc/BjovEVo_2eo/s1600/Blog001_Mountains-Orange.png" height="122" width="200" /></a></div>
<br />Now that the general mood has been established it’s time to hone in on the details. Too many stars in the sky? That can be resolved by changing the location of the system within its galaxy. Moving out of the galaxy will reduce the number of visible stars in the shot whereas moving it near the galactic center will fill the sky with points of light. Each star you see represents another solar system in the galaxy, I could fly there if I had the time, however I’ll wait for FTL drives to be integrated before attempting that stunt.<br /><br />Currently our clouds are low resolution, two dimensional, static, and lack variation. They’re only experimental and the final solution is still under development as a low priority feature. Despite these limitations I manage to pull off some spectacular shots from ground level where they don’t look as bad.<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-QC-4d0Qypec/VRiCOfut1FI/AAAAAAAAAQg/9tc1WlroBKE/s1600/Blog001_Mountains-Blue.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://3.bp.blogspot.com/-QC-4d0Qypec/VRiCOfut1FI/AAAAAAAAAQg/9tc1WlroBKE/s1600/Blog001_Mountains-Blue.png" height="122" width="200" /></a></div>
<br />We have received many questions surrounding the future of clouds and whether or not they’ll be a feature in Battlescape. We do want to see volumetric clouds in the engine as well as lush vegetation covering our planets - and more! The current issue is time. Core features come first and beauty treatments are lower priority for now.<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-xbrCw3ACfMM/VRiCO0IwBVI/AAAAAAAAAQk/M27tmFWu-sg/s1600/Blog001_Mountains-RedSkyClouds.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-xbrCw3ACfMM/VRiCO0IwBVI/AAAAAAAAAQk/M27tmFWu-sg/s1600/Blog001_Mountains-RedSkyClouds.png" height="122" width="200" /></a></div>
<br />There are still many engine features that our current set of (public) screenshots haven’t shown along with an array of game content yet to be published. As the remaining features are integrated and polished, and once they’re ready for showcase, you can be sure to see them featured in future postings.<br /><br />Taking these weekly screenshots has become a “spare time” task of mine. I enjoy searching for great shots that demonstrate what the I-Novae planetary engine can produce. I love creating the images and I get to enjoy reading the comments once they've been published ;) Let me know what you like or even what you’d like to see more of in the future!<br /><br />Cheers,<br />Dan"</span><br />
<div>
<span style="color: #666666;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/R6znkfzWoBs/0.jpg" frameborder="0" height="266" src="http://www.youtube.com/embed/R6znkfzWoBs?feature=player_embedded" width="320"></iframe></div>
<div>
<span style="color: #666666;"><br /></span></div>
Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com0tag:blogger.com,1999:blog-5484832721681814833.post-56367984370543756322015-01-26T01:28:00.001-05:002015-01-26T01:40:44.759-05:00Musings of an Independent Game DeveloperBeing an independent game developer is easily one of the greatest challenges I, and I think probably most everyone on the <a href="https://inovaestudios.com/CompanyOverview/Team" target="_blank">I-Novae team</a>, have ever undertaken. Many members of the dev team have been working for close to 10 years on this company and to our great astonishment some community members have stuck around with us for about that long as well. Independent game development is, in many regards, a beautiful and rewarding thing. We have ultimate creative freedom and everything we've been doing over the last decade has been in pursuit of our collective dream game. That being said there are many times where it has felt like a 10 year death march. While people are generally supportive of our endeavor we occasionally get comments like this one:<br />
<br />
<blockquote class="twitter-tweet" lang="en">
<a href="https://twitter.com/INovaeStudios">@INovaeStudios</a> Star Citizen, Elite Dangerous, No Man Sky even Limit Theory came way after you but will release b4 you. What's wrong w/ you?<br />
— iGeennn (@igeennn) <a href="https://twitter.com/igeennn/status/559461660835217409">January 25, 2015</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>
When I see comments like the one by <a href="https://twitter.com/igeennn" target="_blank">@IGeennn</a> I'm always slightly amused. As it turns out I was wondering the exact same thing but in the reverse - what has taken <i>you</i> so long to build your own planetary tech and release a game? Please hurry up because, frankly, I'm tired and would prefer it if you could just do it for me. As of the time of this writing the I-Novae team consists of 11 people working in various capacities. In the last 10 years we have collectively invested, through both money spent as well as lost wages due to working full-time unpaid, over a million dollars. During that period of time we have also received exactly 0 return on that investment. Ten years, over a million dollars, and 0 return - ouch.<br />
<br />
We've nearly closed investment more times than I can count. We've signed licensing partnerships with companies only to watch them go out of business when their publisher went belly up and stopped paying them royalties on the games they'd already shipped. We've also nearly sold the company on multiple occasions. The high's have been high and the low's have been low. Most everybody on the team has struggled with depression in some form at some point - yet we keep chugging along.<br />
<br />
The team is working as hard as they can to finish the Kickstarter campaign as soon as possible. Our campaign video is really coming together nicely, the excitement surrounding it amongst members of the dev team is palpable, however none of us have any idea if our Kickstarter campaign will succeed. Half a million dollars is an ambitious goal and we really haven't even discussed what we'll do if it fails. It's equal parts terrifying and thrilling to know that, after so long, we will soon release our tech to the public and we have no idea how it will be received. It's possible we may never have a return on the investment we've made in this company. It's possible that the best we can ever hope for is to move the medium forward in some small way. None of us started this journey to get rich. We started it to pursue a dream, to build the game that captured our imagination as kids, to conquer the cosmos.<br />
<br />
We're approaching, in some form, a culmination of that effort. Hopefully there will be many more culminations to come. We'll keep chugging along, doing the best that we can, and let the cards fall as they may. Every day I'm humbled and amazed we've been able to assemble a team of such dedicated and talented people who've stuck together for so long. However this journey turns out it has been an honor to work with each and every one of them.<br />
<br />
So there it is, that's independent game development. You're probably better off just inventing snapchat or some app that lets people pretend to drink beer. You'll finish it in a fraction of the time and sell it for a billion dollars.Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com0tag:blogger.com,1999:blog-5484832721681814833.post-31256961744039839602014-12-25T01:43:00.000-05:002014-12-25T01:43:55.052-05:00Merry Christmas!Hey everyone, merry Christmas, it's time for another update! For starters a lot has happened since GDC last spring and you may recall us saying something about a “planetary rings” video. <a href="https://www.youtube.com/watch?v=zR9KpK1Ua-Q&list=UUNEHBrhTUN4P_ZxIy29DNQw" target="_blank">This video</a> was originally meant to be the last video we release before launching our Kickstarter (KS). Previously we were hoping to release that video and launch our Kickstarter before the end of the summer and, well, things didn’t quite work out that way. That’s primarily due to the usual culprit: most of us are working in our spare time which makes it difficult to estimate timelines because things come up with health, jobs, and other general life type things.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-VrugDxPp3Sg/VJuudrIIh_I/AAAAAAAAANs/x0cDHRBGbv4/s1600/xmas_remora.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://1.bp.blogspot.com/-VrugDxPp3Sg/VJuudrIIh_I/AAAAAAAAANs/x0cDHRBGbv4/s1600/xmas_remora.png" height="180" width="320" /></a></div>
Recently we’ve had a lot of internal discussion about publicly providing timelines. We frequently miss them and people get angry and call us vaporware. Thus we’ve decided we will no longer provide exact timelines for the release of new content. From now on you will just hear “it’s done when it’s done”. To that end we are obviously not going to be launching our Kickstarter this year. While I’m not going to provide a new timeline I can tell you we will continue to work diligently to release it as soon as possible and as of this exact moment in time everything is really starting to come together.<br />
What does “coming together” mean? For starters we have all of the animations and shots for our Kickstarter video mocked up in-engine. Accomplishing this was dependent on numerous art assets, engine features, and of course the creation of the actual animation curves. Most of our materials are finished and half of our art team has moved on to fun things like lighting and particles/effects. We still have a tremendous amount of polishing left to do however all of this stuff we’ve been talking about for months is finally starting to come alive.<br />
<br />
On the engine side we’re wrapping up the last of the major features we wanted to get done for the KS campaign. Early in the year we had another programmer, Kimmo Kotajarvi, join the team and we’ve spent a significant amount of time working on tools, art pipeline, particles, cross platform support, optimization, and HDR. You may be surprised to see HDR on that list as I wrote a blog post about our HDR solution a couple of years ago. Previously we were doing what most games do with regard to lighting by using realistic “ratios” of light instead of realistic “quantities”. Late last spring we decided to finally switch our lighting pipeline over to realistic quantities of light so we could really show the impact that stars of various intensities have on objects in space.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-xXao8gRm_OY/VJuvTQ4PN7I/AAAAAAAAAPY/Ex3mP3mhdAw/s1600/Platform_concept_1.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://2.bp.blogspot.com/-xXao8gRm_OY/VJuvTQ4PN7I/AAAAAAAAAPY/Ex3mP3mhdAw/s1600/Platform_concept_1.png" height="180" width="320" /></a></div>
So, without providing a timeline, where does that leave us? The team is beginning to move over to the polish phase. There will be a lot of tweaking things such as animation, lighting, and post-processing. We still need to record the audio, write the script for the live-action portion of our Kickstarter campaign video, nail down all of our stretch goals, launch the Battlescape website, and put together our marketing materials for the month that our KS will be running. In other words there’s still a lot to do but the good news is that most of it has to do with running a good KS campaign.<br />
<br />
While we’re still committed to our plan of keeping most of our new content under wraps until we launch our KS campaign we will be releasing new content mostly in the form of art and/or screenshots. If you’ve been following us on <a href="https://twitter.com/INovaeStudios" target="_blank">Twitter</a>, <a href="https://plus.google.com/u/0/b/102067164436475478343/102067164436475478343/posts/p/pub?hl=en" target="_blank">G+</a>, or <a href="https://www.facebook.com/pages/Infinity-The-Quest-For-Earth/14345001234" target="_blank">Facebook</a>, you should have already seen some of this content coming out already. Overall we’re very excited as we move into 2015, while launching this KS has taken a bit longer than we originally hoped we’re confident most of you will be pleased with the results!<br />
<br />
Here are some fresh screen shots including a few teasers of the new content you will see in our final Kickstarter campaign video:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Un5opaByHxw/VJuvQFJlS_I/AAAAAAAAAN4/gbffBtRo3d0/s1600/20141223-032608%5B1%5D.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Un5opaByHxw/VJuvQFJlS_I/AAAAAAAAAN4/gbffBtRo3d0/s1600/20141223-032608%5B1%5D.png" height="118" width="200" /></a></div>
<a href="http://1.bp.blogspot.com/-EUkE4ao2i94/VJuvQPn8_1I/AAAAAAAAAN0/HEG0lTOKKSo/s1600/20141223-032754%5B1%5D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-EUkE4ao2i94/VJuvQPn8_1I/AAAAAAAAAN0/HEG0lTOKKSo/s1600/20141223-032754%5B1%5D.png" height="118" width="200" /></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Mjz-mZWQuic/VJuvQA7U-qI/AAAAAAAAAN8/EE-Ec9uhYdU/s1600/20141223-033022%5B1%5D.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Mjz-mZWQuic/VJuvQA7U-qI/AAAAAAAAAN8/EE-Ec9uhYdU/s1600/20141223-033022%5B1%5D.png" height="118" width="200" /></a></div>
<a href="http://1.bp.blogspot.com/-KPsq3El5P9E/VJuvQwI-cgI/AAAAAAAAAOA/6W9z41XW5iY/s1600/20141223-033045%5B1%5D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-KPsq3El5P9E/VJuvQwI-cgI/AAAAAAAAAOA/6W9z41XW5iY/s1600/20141223-033045%5B1%5D.png" height="118" width="200" /></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-42TmrUQzMVs/VJuvReSYLbI/AAAAAAAAAOQ/WglT5-xbFLA/s1600/20141223-033217%5B1%5D.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-42TmrUQzMVs/VJuvReSYLbI/AAAAAAAAAOQ/WglT5-xbFLA/s1600/20141223-033217%5B1%5D.png" height="118" width="200" /></a></div>
<a href="http://1.bp.blogspot.com/-urHaavLDZvw/VJuvRTL3nYI/AAAAAAAAAOM/TGuiqHqgjk0/s1600/20141223-033521%5B1%5D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-urHaavLDZvw/VJuvRTL3nYI/AAAAAAAAAOM/TGuiqHqgjk0/s1600/20141223-033521%5B1%5D.png" height="118" width="200" /></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-jYa7f16wXXE/VJuvRlb_5vI/AAAAAAAAAOc/70gWcdrbsXE/s1600/20141223-033801%5B1%5D.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-jYa7f16wXXE/VJuvRlb_5vI/AAAAAAAAAOc/70gWcdrbsXE/s1600/20141223-033801%5B1%5D.png" height="118" width="200" /></a></div>
<a href="http://3.bp.blogspot.com/-6PEBhoB-JTs/VJuvTvy8RLI/AAAAAAAAAPQ/t-swqTSqXA0/s1600/bc1_twitter%5B1%5D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-6PEBhoB-JTs/VJuvTvy8RLI/AAAAAAAAAPQ/t-swqTSqXA0/s1600/bc1_twitter%5B1%5D.png" height="125" width="200" /></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-2mwBb0urEas/VJuvSOuLtfI/AAAAAAAAAOg/yhnRkAMzUbM/s1600/Hellion_1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-2mwBb0urEas/VJuvSOuLtfI/AAAAAAAAAOg/yhnRkAMzUbM/s1600/Hellion_1.png" height="112" width="200" /></a></div>
<a href="http://2.bp.blogspot.com/-cDKmMRJST3s/VJuvSDsQmYI/AAAAAAAAAOk/vGREDyP5xDI/s1600/Hellion_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-cDKmMRJST3s/VJuvSDsQmYI/AAAAAAAAAOk/vGREDyP5xDI/s1600/Hellion_2.png" height="112" width="200" /></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-NZQyaKJxXq4/VJuvSm8AA1I/AAAAAAAAAOs/paCV1bN8O6s/s1600/Hellion_3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-NZQyaKJxXq4/VJuvSm8AA1I/AAAAAAAAAOs/paCV1bN8O6s/s1600/Hellion_3.png" height="112" width="200" /></a></div>
<a href="http://3.bp.blogspot.com/-cu1cO-CJ6PQ/VJuvS8iC24I/AAAAAAAAAO0/zRrjewCDDok/s1600/Hellion_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-cu1cO-CJ6PQ/VJuvS8iC24I/AAAAAAAAAO0/zRrjewCDDok/s1600/Hellion_4.png" height="112" width="200" /></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-iqY0gfbcoYk/VJuvS-IoO8I/AAAAAAAAAO4/Xi8PQuP6I2Y/s1600/Hellion_5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-iqY0gfbcoYk/VJuvS-IoO8I/AAAAAAAAAO4/Xi8PQuP6I2Y/s1600/Hellion_5.png" height="112" width="200" /></a></div>
Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com0tag:blogger.com,1999:blog-5484832721681814833.post-48372942338385715822014-03-17T21:30:00.000-04:002014-03-17T21:30:09.072-04:00Update as I Head to GDC 2014<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-ezjPu1DYO6o/UyeaiKdkYiI/AAAAAAAAAKE/SzeSujSEHMQ/s1600/screenshot69.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-ezjPu1DYO6o/UyeaiKdkYiI/AAAAAAAAAKE/SzeSujSEHMQ/s1600/screenshot69.png" height="176" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Stars at sunset</td></tr>
</tbody></table>
Wow I can't believe it's already time for GDC. I fly out to San Francisco tomorrow morning so if you're going to be at GDC and you want to meet up please let me know <a href="https://twitter.com/inovae_keith" target="_blank">via twitter</a>! It's been a whole month since I quit my day job to work on I-Novae full-time (again) and it's been a whirlwind of activity. Flavien has been working on putting the finishing touches on our new particle engine and I've been working on tools for our art team to improve their workflow. Originally we were hoping to have launched our Kickstarter by now and unfortunately that isn't going to happen. While our campaign video is really starting to come together, we can finally see the light at the end of the tunnel, it isn't quite ready yet. Specifically:<br />
<br />
<ol>
<li>The art team is putting the finishing touches on the assets for the video. One in particular is taking a significant amount of time but I don't want to divulge too many details because we're keeping it a surprise for the Kickstarter video. In fact we're keeping almost all of the art assets a secret right now which is hard to do because they look great and we can't wait to show everyone!</li>
<li>Our Kickstarter video has been mocked up but we're still tweaking the camera shots and the pacing. It's amazing how much time this takes.</li>
<li>There are still a couple of engine level things we're finishing up. The biggest item on the engine todo list is re-integration of planetary rings. We hope to have that done by the end of next week which will allow us to then focus on polish/shipping.</li>
<li>We have to finalize music and sound fx.</li>
<li>The scripts for our Kickstarter videos still need to be written.</li>
<li>The Battlescape website still needs to be built which will include information on the factions, ships, and an overview of the weapons that will be in the game.</li>
<li>We have to finalize all of our pledge tiers</li>
<li>Lastly we have to write press releases and get all of our marketing materials ready.</li>
</ol>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-DcoziPio-sY/Uyea3b68lwI/AAAAAAAAAKM/cwdNfUTJ3Zg/s1600/screenshot72.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-DcoziPio-sY/Uyea3b68lwI/AAAAAAAAAKM/cwdNfUTJ3Zg/s1600/screenshot72.png" height="176" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">A view of Infinity</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
Like I've stated before we're planning on releasing one more video before we launch our Kickstarter. If we can finish that by the end of this month, which we've been crunching really hard to do, then we're going to be aiming at launching our Kickstarter towards the end of May or early June. If it looks like we're going to slip again then I'm likely going to start cutting scenes from the Kickstarter video until we arrive at something we can ship. Sometimes I think we're a little too obsessed with perfection.</div>
<div>
<br /></div>
<div>
In the meantime I've attached some new screen shots to this blog post. Please head to <a href="https://forums.inovaestudios.com/" target="_blank">our forums</a> and let us know what you think - they're honestly the best way to stay up to date with our progress and the various members of the team check them daily. As always we greatly appreciate your support and we can't wait to get this Kickstarter out the door!</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-gxo7-oV_w38/UyedmusQnwI/AAAAAAAAAKY/g5mZ5pWNxS4/s1600/screenshot186.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-gxo7-oV_w38/UyedmusQnwI/AAAAAAAAAKY/g5mZ5pWNxS4/s1600/screenshot186.jpg" height="176" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">That's a big sun</td></tr>
</tbody></table>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com0tag:blogger.com,1999:blog-5484832721681814833.post-23837034662912693592014-01-19T20:58:00.000-05:002014-01-19T21:05:39.189-05:002013 Retrospective and What's NextIt's that time of the year again - time for our annual retrospective! Last year was a very productive one for us. It kicked off with <a href="http://inovaedev.blogspot.be/" target="_blank">Flavien</a> quitting his job to work on I-Novae full-time. Unfortunately this was counterbalanced by the fact that I ran out of savings and had to go get a job. The year was quite a roller coaster ride which started on a high note with the announcement of our desire to launch a Kickstarter. This initial enthusiasm was tempered a bit by the realization that we weren't going to be able to launch by the end of summer with the level of quality we wanted - followed by the discovery that our web server had been compromised and turned into a spam bot. Fortunately, while there was a period where we had little to no updates, we were hard at work rebuilding our web presence, re-branding the company, and of course polishing up our tech as we push toward launching our Kickstarter.<br />
<br />
<h3>
<b>State of the Kickstarter</b></h3>
As I have mentioned before our Kickstarter will be for a game titled Infinity: Battlescape (I:B). This is <i>not</i> going to be the same game as Infinity: The Quest for Earth (I:TQFE). Most notably it won't be an MMO. After taking stock of the situation early last year it became apparent to us that we needed to reduce the scope of our ambitions in the near term so that we could release a product. Our ambitions for Infinity the MMO are <i>huge</i> and the capital requirement to build I:TQFE at the most basic level is on the order of millions of dollars that we don't currently have. Thus we've decided to build a game with a heavier focus on space combat.<br />
<br />
To summarize, our core 30 seconds of fun will be massive space battles like you see in Star Wars, Battlestar Galactica, etc. If we raise enough with our Kickstarter there will also be plenty of support roles combined with deeper strategy and tactics for those of you who aren't so keen on combat. I:B will be multiplayer only and take place in the Infinity universe within a single solar system (others may be released as DLC). Instead of having individual maps, combat will take place in different "battlescape's" throughout this solar system. Exactly how this concept of a battlescape is implemented will, like many things, depend on how much money we raise. Either way the game will contain an offline sandbox mode where players will be able to explore in peace without any restrictions.<br />
<br />
You may be wondering why haven't we released the Kickstarter yet. As it turns out launching a good Kickstarter is a lot like dying from a thousand paper cuts - the devil's in all the little details. When we initially announced our plan for a Kickstarter the overall message we received from the community was "don't launch it before it's ready". This was best summarized I think by an <a href="http://www.rockpapershotgun.com/2013/04/19/on-the-hunt-for-infinity/#more-150092" target="_blank">article in Rock Paper Shotgun</a>. We've taken that advice to heart and we realized last summer that we simply couldn't release the Kickstarter in 2013 with the level of quality that we want and you expect. The good news is that we're pretty confident we'll be able to get it out in the first half of 2014. I know we've said this before but hear me out.<br />
<br />
<h3>
<b>State of the Engine</b></h3>
<div>
Some people have lamented our focus on our technology. The fact of the matter is that we have a specific vision for the games we want to make, a vision we don't want to compromise, and no other technology stack on the market today will let us achieve that vision. Thus we decided to create our own game engine - a massive undertaking that's hard to overstate. The single largest hurdle for us releasing pretty much anything has been our engine. The I-Novae Engine is a <i>really</i> cool piece of technology however it's also extremely complicated. Being on the bleeding edge is great but sometimes you get cut. What we did a great job of hiding in the <a href="http://www.youtube.com/watch?v=fO7XhaTGDYg&list=UUNEHBrhTUN4P_ZxIy29DNQw" target="_blank">2010 video</a> was that there were still a couple of problems with our planetary terrain engine. To summarize there were enough problems that we didn't feel comfortable shipping a product with our technology in its current state given our limited resources at that time. I spent a lot of effort trying to get the investment we needed to polish up the tech so that we could ship a product however that never came to pass. Thus the task fell to Flavien and I to continue pushing onward with our limited time/resources to resolve those problems.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-_H9Yag6ZoEA/UtyELBPbWwI/AAAAAAAAAI4/-gBx7iEnF-o/s1600/PlanetaryAlignment.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-_H9Yag6ZoEA/UtyELBPbWwI/AAAAAAAAAI4/-gBx7iEnF-o/s1600/PlanetaryAlignment.png" height="200" width="320" /></a></div>
</div>
<div>
In the intervening 2 years the quality of our planetary tech has improved dramatically. All of the major issues that plagued us before have been resolved, we've significantly improved performance, and we threw in physically based rendering while we were at it to make everything look even better. As I write this we are working on finishing up the last couple of engine features we want for our Kickstarter campaign. Work on the I-Novae Engine will never stop however it's finally at a point where we can get back to focusing on making games and that's a great place to be.</div>
<div>
<br /></div>
<h3>
Kickstarter Timeline</h3>
<div>
So what's left to do for the Kickstarter? For starters we've been mocking up our Kickstarter video but it isn't quite ready for production yet. The campaign video will start off with a gameplay teaser followed by the usual talking head stuff. Needless to say we're super excited about what we have to show you, our art team has done a great job, and it's going to be <i>awesome</i>! In the meantime our artists are still putting the finishing touches on the video's assets and, like I previously mentioned, we're wrapping up a couple of engine features which we hope to have done by mid-February. There's still a lot of work to be done on our website. Specifically we're going to put up a bunch of information on the background story for I:B and the ships that will be involved. We're also going to provide fan site media packs and wallpapers.</div>
<div>
<br /></div>
<div>
The current plan is to release 1, maybe 2 video(s) between now and the launch of our Kickstarter campaign. These will include more pretty planet stuff, similar to the <a href="http://www.youtube.com/watch?v=a6a69dMLb_k&list=UUNEHBrhTUN4P_ZxIy29DNQw&feature=c4-overview" target="_blank">video we released last November</a>, with the goal of giving you all something new to look at while you wait without revealing the goodies we're saving for the Kickstarter video. We will formally announce the launch date for our Kickstarter campaign with the release of a demo. For the first time since the Infinity Combat Prototype (ICP) you will be able to download a copy of the I-Novae Engine and run it on your computer at home! This demo will require a pretty beefy system, the exact specs to be determined, as we will have all of the shiny stuff turned on. It also will <u>not</u> be fully interactive but will instead contain scripted camera motion across 1 or 2 planets/moons. This is intentional, we want to release the demo as a teaser for the Kickstarter campaign. Those of you who pledge enough for early access to the game will get an interactive sandbox immediately upon successful completion of our Kickstarter as a way of saying thanks.</div>
<div>
<br /></div>
<div>
Lastly we're finishing up the design of the game, nailing down our pledge tiers, and trying to arrange for an art gallery to show off the I:B artwork during our Kickstarter campaign. The gallery will be located in Phoenix, AZ and I'll be there so you can drop by to say hi and get any questions you may have answered in person. Tentatively I'd like to say we'll be at or near completion in time for GDC in mid-March however there's a <i>lot</i> of moving pieces so we'll keep everybody posted if that changes.</div>
<div>
<br /></div>
<h3>
In Closing</h3>
<div>
Last year was a super productive year for us and so far everything indicates 2014 will be even better. We've increased our team size from 5 to 9 people and we're moving along faster than we ever have before. Our technology and artwork are really coming together to create something truly beautiful and unique. For everybody who has stuck with us over the years we can't thank you enough. Hopefully 2014 will be the year that your patience pays off, we're very excited to show you all what we've been working on, and we can't thank you enough for your support!</div>
Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com0tag:blogger.com,1999:blog-5484832721681814833.post-62592306569733635442013-12-06T01:01:00.000-05:002013-12-06T09:42:20.692-05:00Why OpenGL Probably isn't the Graphics API of the Future and I Hope it DiesAnybody who has followed <a href="https://twitter.com/inovae_keith" target="_blank">my Twitter</a> for any length of time is probably aware there is no love lost between myself and OpenGL. Up until this point I haven't really done a good job of explaining why, courtesy of Twitter's 140 character limit, however the land of graphics API's has recently gotten really interesting with AMD's announcement of <a href="http://www.amd.com/us/products/technologies/mantle/Pages/mantle.aspx" target="_blank">Mantle</a> and Valve throwing its weight behind Linux/OpenGL with <a href="http://store.steampowered.com/livingroom/SteamOS/" target="_blank">SteamOS</a> so I've decided to wade into the fray.<br />
<br />
First some background information: the I-Novae Engine has both OpenGL and D3D11 rendering backends for maximum cross platform portability. Both rendering backends are actively maintained by myself and <a href="http://inovaedev.blogspot.be/" target="_blank">Flavien</a>. If you don't know what the I-Novae Engine is or why you should care then please watch <a href="http://www.youtube.com/watch?v=a6a69dMLb_k&feature=c4-overview&list=UUNEHBrhTUN4P_ZxIy29DNQw" target="_blank">this video</a>. In my day job I work as a contractor programming OpenGL drivers for an <a href="http://en.wikipedia.org/wiki/Real-time_operating_system" target="_blank">RTOS</a> being used by a large multinational corporation for its safety-critical embedded systems. I bring this up because I think most people in either the D3D camp or the OpenGL camp have little experience with the opposing API so I just wanted to say I've worked quite extensively with both and I hope this gives me the opportunity to be as unbiased as possible. Lastly if you're a programmer you can skip the next 2 sections and go straight to "the only reason why you should use OpenGL".<br />
<br />
<h3>
A condensed history of 3D graphics API's</h3>
<div>
Back in the glory days of Doom there was no such thing as OpenGL or DirectX. A graphics programmer had to code the entire 3D pipeline himself. The awesome part of this was that you had complete control over every aspect of the rendering pipeline. The downside was that everybody had to reinvent a whole lot of wheels and a general purpose CPU just isn't that great at (quickly) meeting the unique needs of 3D rendering - thus the consumer GPU was born. When GPU's were originally created they came with severe limitations on what a graphics programmer could do. These limitations are commonly referred to as the "fixed function" rendering pipeline because its features were fixed in silicon - a programmer couldn't add any additional functionality. To access these fixed function graphics capabilities there originally were 3 major API's:</div>
<div>
<ol>
<li>3dfx Glide</li>
<li>OpenGL</li>
<li>DirectX</li>
</ol>
</div>
<div>
DirectX and OpenGL are general abstractions that make it easy for a developer to access the capabilities of a GPU from any manufacturer. Glide was proprietary to GPU's produced by 3dfx as it was the heavyweight champion of its day until NVIDIA suddenly gobbled it up, killed Glide in favor of OpenGL, released the Geforce 256, and took over the world of graphics.</div>
<div>
<br /></div>
<div>
Back in those days OpenGL was awesome. In fact I first started teaching myself graphics programming in high school using OpenGL and <a href="http://nehe.gamedev.net/" target="_blank">NeHe's tutorials</a> (still a great resource for beginners). DirectX, while still supported by all of the various GPU manufacturers, was widely considered laughable. This all changed with the revolution that was, and still is, the programmable pipeline.</div>
<div>
<br /></div>
<h3>
Viva la revolución!</h3>
<div>
The root problem with OpenGL, its Achilles heel if you will, is the fact that it's designed by a committee called the <a href="http://www.khronos.org/" target="_blank">Khronos Group</a>. Open standards hippies think this is great and while there are certainly some really good reasons not to have everything controlled by a single, evil corporation there are also some serious problems. For example HTML5 is all the rage these days and all of the web hippies are out basking in the glorious death of Flash and Silverlight. The problem with this line of thinking is that it took an entire <i>decade</i> for HTML5 to come out. While I have no love for Flash if you've ever used Silverlight you know that it's super easy to use, has great tools, and it's fast. If you've ever had to code a website by hand then you know it's a complete and total nightmare for absolutely no good reason. You have to deal with all these different implementations of the HTML standard in all these different browsers and for some completely insane reason Javascript became the lingua franca for client-side scripting. The story of OpenGL and DirectX at this point follow a similar arc - except Microsoft won - with good reason.<br />
<br /></div>
<div>
A programmable pipeline in the context of a GPU means a programmer can write little programs, called shaders, that get executed directly on a GPU to ultimately control the color that is output for each individual pixel. When programmable GPU's were first released OpenGL 2.0 and DirectX 8 came out to let developers access these new features. DirectX 8 was a complete rewrite of the DirectX API however OpenGL 2.0, in order to maintain backwards compatibility, kept all the old cruft and stapled on some new programmable pipeline stuff - similar to how each version of HTML just staples more crap onto the previous version. Needless to say when it came to working with shaders the shiny new DirectX 8 was awesome and the not so shiny and not so new OpenGL 2.0 was... not. At that point the only reason to choose OpenGL over DirectX was the fact that OpenGL was supported on non-Microsoft platforms. Since at that time consoles all used proprietary rendering API's and Windows was by far the most dominant gaming platform this really didn't matter so everybody switched over to DirectX.<br />
<br /></div>
<h3>
<b>The only reason you should use OpenGL... for now... I hope...</b></h3>
Realistically I think if you ask any hardcore graphics programmer if he prefers DirectX or OpenGL he's probably going to tell you he wishes he didn't have to use either one. Ironically, with the maturation of the programmable pipeline due to compute shaders, 3d graphics is coming full circle and you can now write very complicated "shaders" that run entirely on a GPU - they don't even have to have anything to do with graphics. The ultimate goal for graphics programmers is to be able to write C/C++ code, or possibly even some other language someday, that seamlessly executes on both CPU's and GPU's and lets you pass pointers without any hassle. There will only be fixed function hardware for rasterization and maybe a few other things and that'll be it. Both DirectX and OpenGL currently get in the way of this process by forcing you to dance a complicated jig as you move data to/from the CPU and GPU. Addressing this problem is the whole reason AMD recently announced Mantle but I'll get to that in a minute.<br />
<br />
The only reason you should use OpenGL today is the exact same reason you would use OpenGL over DirectX 10 years ago: you want to target non-Microsoft platforms. With the emergence of mobile, another thing I'll get to in a minute, this is not an insignificant reason to favor OpenGL however it comes with some rather severe costs which are the primary reasons why I hate working with OpenGL:<br />
<br />
<ol>
<li>Now that we're onto OpenGL 4.4 the API has had a whole extra 2.4 versions haphazardly stapled onto it since 2.0. You now have to deal with things like two completely different sets of functions to do the exact same thing, like enumerate uniform buffer objects, because one set of functions supports a single extra feature that the other doesn't for absolutely no good reason.</li>
<li>You have swiss army knife functions. An example of this is resolving an MSAA render target. All you want to do is resolve the MSAA render target but you have to use a function that can do 100 different things and you're left trying to figure out what which combination of flags you need.</li>
<li>Driver support on Windows, still a dominant gaming platform, isn't that great since everybody has been using DirectX</li>
<li>DirectX has an awesome debug layer, OpenGL's debug context pales in comparison</li>
<li>DirectX has awesome tools (awesome is a relative word here), OpenGL does not. Granted, OpenGL has recently made some improvements in this area but saying OpenGL now has good tools is like saying that you would rather get kicked in the balls than be shot. Both options really suck though one just happens to be slightly better than the other</li>
<li>OpenGL documentation sucks. If there is one thing that Microsoft tends to do better than everybody else it's developer tools and API documentation</li>
</ol>
<div>
Lastly the OpenGL specification has, historically, been updated very slowly relative to DirectX though recently the Khronos group has improved on this front. OpenGL acquired support for compute shaders a year after DirectX and both AMD and Apple still haven't released fully compatible drivers. There is, however, one caveat. Recently Microsoft has made the unfortunate choice of restricting new versions of DirectX to new versions of Windows. This sucks because Windows 8 adoption is much slower than Windows 7 and the newer versions of DirectX 11 have some really nice features. There are also some <a href="http://www.i-programmer.info/news/144-graphics-and-games/5744-amd-no-directx-12.html" target="_blank">rumors</a> floating around that Microsoft might kill off DirectX and that is obviously a huge concern when deciding which API to go with.</div>
<div>
<br /></div>
<h3>
Mantle & CUDA</h3>
<div>
Ultimately Mantle, which is an open specification like OpenGL, and CUDA are the reason I think OpenGL is doomed, or at least the reason OpenGL should be doomed unless the Khronos Group does something radical, and they're also the reason the API wars are so interesting right now. For those of you who don't know, at a high level a graphics driver primarily does 3 things: it manages memory and it creates then executes command buffers. The primary purpose of Mantle is to provide developers with a lightweight hardware abstraction layer so they have more control over those 3 things than DirectX and OpenGL currently allow. Basically it gets developers closer to how the hardware actually works while reducing OS and driver overhead. CUDA isn't actually a graphics API per se, it's a proprietary compute shader language/runtime that provides seamless integration with C/C++, however I don't think it would take much for NVIDIA to turn it into a direct competitor with Mantle which is why I mention it here.</div>
<div>
<br /></div>
<div>
The jury is still out on Mantle and I think a lot depends on how Intel and NVIDIA react. If AMD can convince one of them or one of the mobile manufacturers to include it on their platform that'd be a huge vote of confidence for Mantle being useful on something other than AMD hardware. The reason Mantle and CUDA are such a threat to OpenGL is because, as has already been mentioned, the Khronos Group is not very good at responding quickly to changes in the marketplace. Microsoft has established with DirectX 8 and DirectX 10 that it is not afraid to completely rewrite DirectX to better accommodate changes in the architecture of next-gen hardware. There is nothing to prevent Microsoft from creating a Mantle style API with DirectX 12 and porting it to older versions of Windows whereas the Khronos Group demonstrated the exact opposite when they failed to rewrite OpenGL in any meaningful way with version 3.0. If Mantle gains traction, and Microsoft rewrites DirectX with version 12 to meet that threat, what incentive remains to use OpenGL? An even more radical thought is what if Microsoft does in fact discontinue development of DirectX, as AMD has suggested it might, in favor of Mantle? That would certainly explain why AMD made such a bold statement. Either way if Mantle begins gaining serious traction it seems likely OpenGL will no longer be worth supporting.</div>
<div>
<br /></div>
<h3>
OpenGL ES and WebGL</h3>
<div>
There isn't much to say about OpenGL ES that hasn't already been said about the regular desktop version of OpenGL. Basically I think the Khronos Group really screwed up with OpenGL 2.0+ and WebGL. Firstly I think they screwed up with WebGL because they gave it the same feature set as OpenGL ES 2.0 instead of the full desktop OpenGL. Secondly I think they screwed up OpenGL ES 2.0 because they had an opportunity to start with a clean slate and create something really forward looking for mobile, like say Mantle, and instead they just took desktop OpenGL 2.0 and made it slightly more sane. Sure, there are some good reasons for that since plenty of people already have experience working with desktop OpenGL, but if Mantle or perhaps an NVIDIA competitor gets any traction in mobile then I can't think of any good reason as a developer to continue to use OpenGL ES.</div>
<div>
<br /></div>
<h3>
In Closing</h3>
<div>
I've decided to leave out discussing SteamOS because I think that could be a blog of its own and this one is already way too long. Ultimately, regardless of what happens to OpenGL, I think 2014 is going to be an exciting year for computer graphics and high end gaming in general. New consoles, new API's, and ever more powerful PC hardware. The best part, if you're a consumer, is you don't have to worry about any of this API jazz. Us developer types shall wage holy war upon each other and once we get comfortable with these new API's and hardware capabilities consumers are going to have some great games to play!</div>
Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com6tag:blogger.com,1999:blog-5484832721681814833.post-42238343585133629962013-04-07T19:21:00.000-04:002013-12-06T01:27:21.383-05:00The Road to Crowd FundingNeedless to say I think we can all agree I'm a terrible blogger haha. It takes a lot of time to produce a quality blog article and I've been spending that time on coding instead of, well, blogging. That being said we've promised to become more active as we approach our crowd funding release date, which I confess we haven't announced yet, and to that end I would like to provide some information about what we're doing that's taking so long.<br />
<br />
We've blogged a lot about our technology in the past. Things like <a href="http://inovaekeith.blogspot.com/2011/12/hdr-sexiness.html" target="_blank">HDR</a> and <a href="http://www.infinity-universe.com/Infinity/index.php?option=com_content&task=view&id=120&Itemid=49" target="_blank">atmospheric scattering</a> and that's because our planetary tech is shiny and we <3 it and it's a big part of what makes us unique. It's the vehicle through which we will build the kind of games we want to build, bringing unique gameplay to you, the consumer. However there's something we really haven't talked about much yet that's just as important - our web/server/backend infrastructure.<br />
<br />
<b><span style="font-size: large;">The Vision</span></b><br />
<b><br /></b>
Believe it or not we are actually guided by a cohesive vision of the games we want to build, the type of company we want to create, and how we're going to interact with our consumers. A core pillar of this vision is a community first approach to everything we do. In the beginning this took the form of allowing the community to help build Infinity by contributing assets to the game. Unfortunately we realized some time later that there were two major problems with our contributions system. The first, and most important, is the complicated issue of intellectual property (IP) rights. We had no way of verifying who had made what and whether it was violating anyone's IP rights or anything like that. Everybody loses if we get sued into oblivion - except the lawyers of course. The second issue is that there really wasn't a good way for a contributor to submit their assets for a formal review for inclusion into the game. Later on in this article I'll address our solutions to these problems but first I want to talk about our plans for the cloud.<br />
<br />
<span style="font-size: large;"><b>Joining the Cloud Kool Aid Party</b></span><br />
<span style="font-size: large;"><b><br /></b></span>
If you look at what has made Apple so successful in consumer electronics it's the ability to create a seamless, easily accessible experience with their hardware and software. We would like to do that with our games by creating a cohesive, seamlessly integrated I-Novae ecosystem. Everyone who participates in this ecosystem will have an I-Novae ID that can be used across <i>all</i> I-Novae powered games and services. This is important in the near-term because we will need to keep track of everybody's donations during our crowd funding campaign so we can give them their awards upon successful completion of the campaign. We are considering making some of our reward tiers access to beta, alpha, and pre-alpha builds of the game. In order to properly support reward tiers like this we need to have the ability to provide/restrict access to builds of the game to the right people as well as collect their feedback, bug reports, etc. All of this will run through our I-Novae cloud platform and a users I-Novae ID.<br />
<br />
Another benefit of the I-Novae ID will be our ability to provide a single sign-on experience. Many of you, if not most, are already using something like Google/GMail/g+, Twitter, Windows Live, or Facebook and instead of having to create yet-another-username/password you will be able to log into both our games and our services using credentials from one of those providers. Optionally you can still use a username/password if you prefer it.<br />
<br />
In the long run we would like to support taking screen shots and video from directly within I-Novae Engine powered games and uploading them to your I-Novae profile in the cloud. We want to make it easy for you to share your favorite gaming moments with your friends through your preferred social media platforms. Lastly our I-Novae cloud will also support the usual cloud stuff like maintaining friends lists, digital distribution of I-Novae Engine powered games, and virtual market places.<br />
<br />
<b><span style="font-size: large;">Virtual Market, wait, WHAT!?</span></b><br />
<b><br /></b>
Infinity: Battlescape itself will not be released with assets from the community however, assuming we raise enough money (stretch goals!), the game will have a virtual marketplace where people can create and sell/share their own assets. These assets will be restricted to things that do not affect gameplay. For example you will not be able to create new weapons or ships but you will be able to create new skins - unless of course you create a mod. Mods will also be available through our virtual marketplace and will allow changing most of the game. Contributors will be able to submit their assets and mods to the marketplace for a nominal fee. This fee will serve two purposes. The first is to help cover our administrative overhead for verifying that the contribution does not violate anyone else's IP (solution to problem #1 above) and the second is to make sure the asset meets our minimum quality requirements and if they don't we will provide appropriate feedback (solution to problem #2 above). Lastly we don't want our virtual marketplace to fill up with tons of junk, a huge problem faced by all virtual marketplaces with a prime example being the Android app store, and having a nominal fee for submission is a huge step toward preventing that. Once a submission has been accepted the contributor will be able to set the price of the asset/mod themselves. Our community has a tremendous amount of energy and creativity, we have some really cool tech, and we would like to be able to harness that in a way that benefits everyone. We believe a virtual marketplace would go a long way toward achieving that goal.<br />
<br />
<span style="font-size: large;"><b>In Closing</b></span><br />
<b><br /></b>
Laying the groundwork for this cloud infrastructure is also coinciding with rebuilding our website. Our current forums will likely be archived and replaced with a more modern solution that we can integrate with our I-Novae ID system. Since we don't really want to reinvent the wheel with forums software if anyone knows of something that's easy to integrate with a custom authentication/roles system, ideally built in ASP.NET, then please <a href="mailto:contact@inovaestudios.com" target="_blank">let us know</a>. Redoing the website will be a lot of work but we believe it's necessary and in the long run it'll be worth it =).Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com57tag:blogger.com,1999:blog-5484832721681814833.post-394175604417135092011-12-13T03:06:00.001-05:002011-12-13T03:54:34.681-05:00HDR Sexiness<b><span class="Apple-style-span" style="font-size: large;">Introduction</span></b><br />
I know it's been a long time since I last blogged but I've made up for it by making this one ridiculously long haha. I'm excited to talk about <a href="http://en.wikipedia.org/wiki/High_dynamic_range_imaging" target="_blank">High Dynamic Range Imaging</a> (HDRI) and its implementation in the I-Novae Engine. HDRI is one of those features that I get really excited about because it's shiny and I like shiny things. In fact most other people seem to like shiny things as well, which has led me to develop my <i>Universal Law of the Shiny </i>which states "If you build it, and it's shiny, they will come".<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">Hold onto your Butts</span></b><br />
This blog article has been written for people who aren't graphics programmers or physicists however, that being said, for you to understand how the I-Novae Engine implements HDR you must first understand some radiometry, photometry, and color theory. I'll do my best to explain it all at a high level but some of this may be a bit intense. My hope is that you at least find it interesting.<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">What's High Dynamic Range Anyway?</span></b><br />
In the real world there is this stuff that gets all over the place called light. Light is a truly fascinating substance as it affects everything we do and even how we all got here in the first place. While there are entire libraries filled with literature about light all we need to focus on for the purpose of this blog article is that the human eye has evolved to catch incoming light and turn it into the picture you are currently viewing. Unfortunately there is a problem with this process. The range of <a href="http://en.wikipedia.org/wiki/Luminance" target="_blank">luminance</a> that the eye encounters is so great, approximately 1,000,000,000:1 from night to a sunny afternoon, that the eye cannot make sense of all of that light (or lack thereof).<br />
<br />
In response to this problem the human eye establishes a specific range of luminances that will be turned into visible colors. All luminances below the bottom of this range will show up as black and all luminances above this range will show up as white. These thresholds are also known as the black point and the <a href="http://en.wikipedia.org/wiki/White_point" target="_blank">white point</a>. The eye has another extremely helpful feature for dealing with all of this light: it can shift the range of visible luminances based on the average <a href="http://en.wikipedia.org/wiki/Luminance" target="_blank">luminance</a> of its environment. This is referred to as having a <i><a href="http://en.wikipedia.org/wiki/Dynamic_range" target="_blank">dynamic range</a></i> and explains why walking outside after being indoors will result in being blinded by light with an intensity outside of your current visible range. As the eye adapts to its new surroundings everything in the environment shifts from white or black into its appropriate visible color.<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">The Cake is a Lie</span></b><br />
<span class="Apple-style-span">At some point in your life you or somebody you know has probably bought a big, shiny new HDTV. The first time you turned it on it's likely you were amazed by the crisp picture and bright colors. Unfortunately, as is often the way of things in life, the <a href="http://news.cnet.com/8301-17938_105-20066138-1/contrast-ratio-or-how-every-tv-manufacturer-lies-to-you/" target="_blank">cake is a lie</a>. <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16824009317" target="_blank">Modern HDTV's</a> only have a brightness of ~250 cd/m2 and a contrast ratio around 1,000:1 to 10,000:1! In comparison a cloudy afternoon has a <a href="http://en.wikipedia.org/wiki/Candela" target="_blank">luminous intensity</a> of 35,000 cd/m2 and as I mentioned before our eyes have a contrast ratio of 1,000,000,000:1. For this reason HDTV's and other displays like it are referred to as Low Dynamic Range (LDR) displays. HDRI is the process of mapping the high dynamic range of luminances you encounter in the real world onto the low dynamic range of a modern display device.</span><br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">Electromagnetic Radiation</span></b><br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-dL68JHKG07E/TuWvU1Yk5nI/AAAAAAAAAEU/2GE57RZw0t4/s1600/best_spectrum.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://3.bp.blogspot.com/-dL68JHKG07E/TuWvU1Yk5nI/AAAAAAAAAEU/2GE57RZw0t4/s320/best_spectrum.jpg" width="104" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Visible Light Spectrum</td></tr>
</tbody></table>What we refer to as light is actually <a href="http://en.wikipedia.org/wiki/Electromagnetic_radiation" target="_blank">electromagnetic radiation</a> within a specific range of wavelengths, commonly measured in nano-meters (nm), that can be interpreted by our eyes as colors. This is also known as the <a href="http://en.wikipedia.org/wiki/Visible_spectrum" target="_blank">visible spectrum</a>. There are many other areas of the electromagnetic spectrum, such as infrared and ultra violet, that we can't see however they are not applicable for the purpose of this blog. The important thing to note here is that all forms of light are just energy at varying intensities, referred to as spectral power, along a spectrum of wavelengths. The sum of energy in watts emitted along the electromagnetic spectrum within a meter squared per unit solid angle (a 3d angle) is the <a href="http://en.wikipedia.org/wiki/Spectral_radiance" target="_blank">radiance</a> emitted by that surface. This same measurement of light being <i>received</i> by a surface is referred to as irradiance. All of this stuff that's used to measure and deal with physical quantities of light falls under the field of <a href="http://en.wikipedia.org/wiki/Radiometry" target="_blank">radiometry</a>.<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">The Colors Duke, the Colors!</span></b><br />
Now we know what HDR is and what light is but how do our eyes turn all of that into color? The human eye is composed of two different categories of cells, known as <a href="http://en.wikipedia.org/wiki/Rod_cell" target="_blank">rods</a> and <a href="http://en.wikipedia.org/wiki/Cone_cell" target="_blank">cones</a>, that turn light into color. Rods are used primarily during low-light conditions, also known as <a href="http://en.wikipedia.org/wiki/Scotopic_vision" target="_blank">scotopic</a> lighting conditions, and are most sensitive to the short (blue) wavelengths of light which is why everything at night has a bluish tint. Rods are more sensitive than cones to changes in luminance however they are not good at rapidly changing their dynamic range which is why it takes a long time for you to achieve 100% night vision.<br />
<br />
Cones, used during bright, <a href="http://en.wikipedia.org/wiki/Photopic_vision" target="_blank">photopic</a> lighting conditions, are everything rods aren't. They are most sensitive to local contrast instead of luminance however they are capable of rapidly shifting their current dynamic range. Cones come in three varieties known as Long, Medium, and Short (LMS) cone cells. LMS refers to the length of the waves of light that a cone cell has highest sensitivity for. These wavelengths line up very conveniently with the primary wavelengths for Red, Green, and Blue (<a href="http://en.wikipedia.org/wiki/RGB_color_model" target="_blank">RGB</a>) light respectively. RGB provides the basis for all digital color generation but before I can get into that I have one other thing I need to cover.<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">Perception of Color</span></b><br />
As I mentioned in the last paragraph cone cells, which are used under the vast majority of lighting conditions we encounter on a day-to-day basis, come in three flavors each of which is sensitive to a specific range of wavelengths of light. Way back in 1931 a bunch of scientists from the <a href="http://en.wikipedia.org/wiki/International_Commission_on_Illumination" target="_blank">International Commission on Illumination</a> (CIE) got together to wave their hands in the air while whispering dark incantations. A byproduct of this hand waving was some science that determined just how sensitive each of the LMS cone cells are to the various wavelengths of light. They also discovered that if you apply a sensitivity curve for each type of cone cell to a spectrum of light and mix in a dash of voodoo black magic you end up with three values which together are referred to as the <a href="http://en.wikipedia.org/wiki/CIE_1931_color_space" target="_blank">CIE 1931 XYZ Color Space.</a> The process of figuring out how the human eye perceives light, from which the XYZ color space is derived, is referred to as <a href="http://en.wikipedia.org/wiki/Photometry_(optics)" target="_blank">photometry</a>.<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">Are we there yet? Almost...</span></b><br />
Ok so now we have XYZ and RGB and what the heck is the difference? To answer that you first need to know how a display device such as a TV outputs color. Everybody has heard about this thing called resolution. It's what makes an HDTV an HDTV. For example 1080p, currently the holy grail of HDTV, means that the screen has 1080 horizontal rows of pixels and (usually) 1920 vertical columns of pixels. Each of these pixels is capable of emitting red, green, and blue light in a range commonly between 0 and 250 cd/m2.<br />
<br />
Every display, like any other light source, has its own <a href="http://en.wikipedia.org/wiki/Spectral_power_distribution" target="_blank">spectral power distribution</a> (SPD). An SPD represents a distribution of spectral power per watt of <a href="http://en.wikipedia.org/wiki/Radiant_flux" target="_blank">radiant flux</a>. For example HDTV's have an SPD referred to as <a href="http://en.wikipedia.org/wiki/CIE_Standard_Illuminant_D65" target="_blank">D65</a> which is equivalent to the SPD of midday sunlight in western Europe. Thus XYZ is a device independent color space and for display it must be transformed into a device dependent RGB color space using weights derived from the SPD of the output device - a process that ensures the appropriate quantities of red, green, and blue light are emitted to achieve the desired color.<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">Gamut and Gamma</span></b><br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-EIUqD6FcSdg/TuWoyDNA76I/AAAAAAAAAEM/2ViBaOdLUaE/s1600/Cie_Chart_with_sRGB_gamut_by_spigget.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://2.bp.blogspot.com/-EIUqD6FcSdg/TuWoyDNA76I/AAAAAAAAAEM/2ViBaOdLUaE/s320/Cie_Chart_with_sRGB_gamut_by_spigget.png" width="286" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Gamut of the sRGB color space relative to the human eye</td></tr>
</tbody></table>The human eye is capable of viewing a large range of color, referred to as its gamut, which is represented by the spectral locus (parabola type thing) on the picture to the right. Unfortunately the maximum color precision of most modern display devices is 24 bits - or 16.7 million colors. This is referred to as 24-bit True Color and while it sounds like a lot it's actually only a small portion, as shown by the triangle in the picture to the right, of the gamut of the human eye.<br />
<br />
With 24-bit color each R, G, and B channel for a pixel is represented by 8-bits which can hold a number between 0 and 255 (inclusive). An increase of 1 in any of the channels means an increase in the intensity of light emitted for that channel by a factor of 0.3%. The problem with this is that the human eye does not perceive an increase in intensity linearly. Most display devices operate in the <a href="http://en.wikipedia.org/wiki/SRGB" target="_blank">sRGB</a> color space which mimics the logarithmic increase in perceived intensity by the human eye. This logarithmic curve is referred to as the gamma curve. Since all lighting for CG/games is done in a linear color space, same as in real life, which means that 1 W/m2 of incident irradiance plus 1 W/m2 of incident irradiance equals 2 W/m2 of incident irradiance, the result must be <a href="http://en.wikipedia.org/wiki/Gamma_correction" target="_blank">gamma corrected</a> before it's displayed on screen. If an image is not gamma corrected it will look darker than it should which creates all sorts of problems.<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">Lighting and Color in the I-Novae Engine</span></b><br />
<span class="Apple-style-span">I know that was a lot of theory, I'm sorry, but it's important for understanding how and why the I-Novae Engine handles light/color. In most game engines when you place a light in a scene you assign it an RGB color. This color is in fact usually an uncorrected sRGB color which, for the aforementioned reasons, is oh so very wrong. When you place a light in a scene with the I-Novae Engine you specify its color in the form of <i>spectral intensity</i> for the red, green, and blue wavelengths. In practice, on current generation hardware, this will look similar to specifying color in linear RGB however there is an important distinction.</span><br />
<br />
<span class="Apple-style-span">In the real world the way surfaces reflect, transmit, and absorb light is wavelength dependent. For example the sky is blue because the atmosphere primarily scatters the shorter (blue) wavelengths of light. By using radiometric quantities the I-Novae Engine is future proofing itself so that it is capable of handling more advanced and realistic materials as GPU's continue to become more powerful. It's also well suited to a variety of global illumination solutions - one of the major new trends in next-gen graphics.</span><br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">Textures</span></b><br />
<span class="Apple-style-span">If you're a texture artist working with the I-Novae Engine I am happy to say that most of the textures you've created should work as is without any problems. However there is a possibility they may look similar but different. This is because the I-Novae Editor automatically assumes every texture you import needs to be gamma corrected. You can tell the editor to skip this step for linear data such as normal maps but for anything you traditionally think of as a color you will want to have it corrected. That by itself may make your texture look different in-engine however there's one other problem.</span><br />
<br />
<span class="Apple-style-span">Textures in the I-Novae Engine need to be thought of as the quantity of incident irradiance (incoming light) that is reflected from the RGB wavelengths. For example if you create a texture for a white box that has a red vertical stripe running down the middle the white texels (a texel is a pixel from a texture) means 100% of incident irradiance will be reflected whereas the red stripe means that only 100% of incident irradiance in the red wavelength will be reflected. This is an important distinction from saying "this is a white box with a red stripe" for the following reasons:</span><br />
<ol><li>During HDRI post-processing the radiometric quantities of light for each pixel are transformed into the photometric CIE XYZ color space</li>
<li>Tonemapping converts the XYZ color into <a href="http://en.wikipedia.org/wiki/XyY#The_CIE_xy_chromaticity_diagram_and_the_CIE_xyY_color_space" target="_blank">xyY</a>, back to XYZ, and then finally into RGB</li>
<li>Gamma correction is applied as the RGB values are turned into sRGB for final display</li>
</ol><div>Because of these color space transformations and the application of photometric, RGB, and gamma curves the final color could be slightly different than what it would be in a traditional sRGB only color pipeline - which is what the I-Novae Engine used to be.</div><div><br />
</div><div><b><span class="Apple-style-span" style="font-size: large;">Tonemapping</span></b></div><div>As I mentioned before HDRI is the process of converting a high dynamic range image into the low dynamic range of a display device. Specifically, how HDRI accomplishes this is through tonemapping. A good method for accomplishing this task that works well on modern graphics hardware was developed by a guy named Reinhard in a paper he wrote in 2002 called <a href="http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CEgQFjAA&url=http%3A%2F%2Fwww.cs.utah.edu%2F~reinhard%2Fcdrom%2Ftonemap.pdf&ei=McblTsSBGorDgAfCg92KBg&usg=AFQjCNETnPZjXD2j-nWydVVzWdjC80z8sQ" target="_blank">Photographic Tone Reproduction for Digital Images</a>. The Reinhard tonemapping operator as it's called has been a staple of the game industry ever since. Actually the paper was written by 4 guys so I'm not sure why Reinhard gets all of the credit but hey, I just roll with it.</div><div><br />
</div><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-FrTSMYSmTKY/TubY2p3A8qI/AAAAAAAAAEc/c3XgSJSG1FU/s1600/ScaledColorVsScaleLuminance.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="106" src="http://1.bp.blogspot.com/-FrTSMYSmTKY/TubY2p3A8qI/AAAAAAAAAEc/c3XgSJSG1FU/s320/ScaledColorVsScaleLuminance.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Scaled color vs scaled luminance</td></tr>
</tbody></table>More recently <a href="http://filmicgames.com/archives/75" target="_blank">John Hable</a> has <a href="http://www.gdcvault.com/play/1012459/Uncharted_2__HDR_Lighting" target="_blank">described</a> an alternative operator based on what the movie guys use that mimics the response of Kodak film. This filmic operator, which was used on Uncharted 2, provides higher precision for darker colors however there is a problem with John's code - it scales the <i>color</i> of a pixel and not its <i>luminance</i>. When you scale a color instead of its luminance you are discarding color information which tends to make the image look less saturated (the color shifts towards gray) than it otherwise should be. The screen shot to the right shows a comparison between John Hable's Filmic ALU algorithm which scales color and my Filmic ALU algorithm which scales luminance without a loss of <a href="http://en.wikipedia.org/wiki/Chromaticity" target="_blank">chromaticity</a> (color).<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">Exposure and Bloom</span></b><br />
Here is the part where I get to talk about everybody's favorite HDR effect - <a href="http://en.wikipedia.org/wiki/Bloom_(shader_effect)" target="_blank">bloom</a>. Bloom is so popular because it makes things appear shiny and, as I said, <i>everybody likes the shiny</i>. It's quite common for people to assume that bloom <i>is</i> HDR because every graphics engine on earth that supports HDR also supports bloom. In truth bloom is a byproduct of HDR caused by the scattering of overexposed parts of an image within your eyeball. Since your monitor/tv can't cause bloom within your eyeball, due to its crappy low dynamic range, graphics programmers have to emulate it manually. The first part of this process is figuring out what the overexposed parts of an image are. Before I can describe how we do this in the I-Novae Engine I first have to describe how <a href="http://en.wikipedia.org/wiki/Exposure_(photography)" target="_blank">exposure</a> works.<br />
<br />
Exposure is the total quantity of light that hits a photographic medium over some period of time measured in lux/s. As I mentioned before the human eye perceives increases in luminance with a logarithmic curve. Since most people aren't mathematicians, but controlling exposure is very important, camera manufacturers devised a system of measurement known as the <a href="http://en.wikipedia.org/wiki/F-stop" target="_blank">f-stop</a>. An f-stop is the relative aperture of the optical system which controls the percentage of incoming light that is allowed to reach the photographic medium. The higher the f-stop the smaller the aperture and the smaller the quantity of light that reaches the film. F-stop and exposure do not have a 1:1 correlation as things like optical length and shutter speed affect the final exposure however, for our purposes, the f-stop is a good enough approximation that still makes sense to people familiar with photography.<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-WJXDCa4LY7g/Tub0eLWrQEI/AAAAAAAAAEk/80-XnArp884/s1600/UnclampedAutoExposure.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://4.bp.blogspot.com/-WJXDCa4LY7g/Tub0eLWrQEI/AAAAAAAAAEk/80-XnArp884/s320/UnclampedAutoExposure.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Unclamped auto-expsoure. That's a whole lot o' shiny!</td></tr>
</tbody></table><br />
When tonemapping an HDR image you have to choose the luminance range of visible colors. This is commonly done by calculating the average scene luminance, deriving the scene <a href="http://en.wikipedia.org/wiki/Middle_gray" target="_blank">middle gray</a>, deriving the scene exposure, and then scaling the per-pixel luminances accordingly. This process is more or less identical to what a digital camera does when calculating its auto-exposure. There is a catch: the human eye and cameras have a limit to their minimum black point and maximum white point whereas auto-exposure algorithms don't. Measured in f-stops the exposure range of the eye is between <a href="http://en.wikipedia.org/wiki/F-stop#Human_eye" target="_blank"><i>f</i>/2.1 and <i>f</i>/3.2</a>. Since the I-Novae Engine calculates exposure via f-stops I have implemented, by default, a maximum and minimum exposure range roughly equivalent to that of the human eye. To those of you who are photographers <i>f</i>/3.2 may seem really low. This has to do with the optical length of the eye and refraction caused by eye goo. In practice the I-Novae Engine uses a default minimum aperture size of <i>f</i>/8.3 because our calculations more closely resemble a camera than an eye.<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-F5W2iDHGww4/Tub07hJPQeI/AAAAAAAAAEs/nbNrYjqVVAE/s1600/ClampedAutoExposure.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="239" src="http://2.bp.blogspot.com/-F5W2iDHGww4/Tub07hJPQeI/AAAAAAAAAEs/nbNrYjqVVAE/s320/ClampedAutoExposure.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Clamped auto-exposure and a bright pass of 9 f-stops.</td></tr>
</tbody></table><br />
To determine which parts of an image require bloom you specify the number of f-stops to add to the scene exposure (be it auto-calculated or otherwise) and any remaining color information for the lower exposure is then bloomed. This works great because it follows the same logarithmic curve as the eye and everything looks as it should. I'm still in the process of tweaking the bloom. At the moment it's a bit too... bloomy... but when everything is wrapped up I'll post some new screen shots of stuff more exciting than boxes and orbs.<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">In Conclusion</span></b><br />
Light and color theory are extremely complicated and this blog only scratches the surface of the available literature as well as the details of my own implementation. For those of you who are programmers a great reference implementation was written by <a href="http://mynameismjp.wordpress.com/2010/04/30/a-closer-look-at-tone-mapping/" target="_blank">Matt Pettineo</a> of Ready At Dawn. My implementation is quite similar to Matt's however mine modulates luminance instead of color and I implement exposure a bit differently as mentioned above. Perhaps after I finish tweaking everything some more I'll provide the technical details in another blog post or something.<br />
<br />
It's funny because in high school I hated math and wondered what it could possibly ever be useful for other than basic accounting. Then I got interested in graphics programming and now I use calculus on a regular basis as a part of my job. Moral of the story kids is stay in school and be proactive in your own learning! Oh and buy books, lots of them, because who can remember all of this crap?<br />
<br />
Lastly if you see any errors in the information I provide on this blog please don't hesitate to contact me so I can correct it. I hate misinformation and will promptly fix any mistakes. You can reach me via <a href="https://twitter.com/#!/inovae_keith" target="_blank">twitter</a>, <a href="mailto:contact@inovaestudios.com">contact@inovaestudios.com</a>, or the comments section below. Until next time!</div>Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com9tag:blogger.com,1999:blog-5484832721681814833.post-28852283635947456982011-08-15T14:58:00.001-04:002011-08-15T15:04:26.710-04:00Mesh Editor First Look<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-SN_rHqYMAtw/TkleL4pgBwI/AAAAAAAAADU/1NDTN2XKpMg/s1600/FirstMesh.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="109" src="http://2.bp.blogspot.com/-SN_rHqYMAtw/TkleL4pgBwI/AAAAAAAAADU/1NDTN2XKpMg/s200/FirstMesh.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 1. First mesh imported</td></tr>
</tbody></table>The mesh editor has been progressing nicely and, due to the fact that the mesh editor is a big deal for contributors, I thought I would take this opportunity to go over some some of the details as well as provide some initial screen shots. First of all we have deprecated support for the ASE file format. We may add it back in later on if there is a need but there are many far superior formats which we now support such as FBX, 3DS, OBJ, DAE, and DXF. These formats allow you to export materials, textures, and animations which the I-Novae Editor is now capable of importing.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-KokEMFWJYC0/TkleKSTf_YI/AAAAAAAAADE/t291Ze2NnBk/s1600/FirstFullImport.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="109" src="http://3.bp.blogspot.com/-KokEMFWJYC0/TkleKSTf_YI/AAAAAAAAADE/t291Ze2NnBk/s200/FirstFullImport.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 2. First mesh successfully imported<br />
with materials and textures</td></tr>
</tbody></table>Eventually the mesh editor will be used to provide the first glimpse of how mesh assets will look in-game. You will be able to look at the UV unwraps, assign materials, and view collision volumes. Currently the editor is still in its infancy and these screen shots represent our first successful set of imports. You can also see the initial work I have done on a viewport system that is being modeled off of MAX/Maya. At the moment it defaults to 4 viewports (Back, Left, Top, Front) but I am working on a wide range of viewport setups. I have yet to connect self shadowing, post processing, and anti-aliasing so these screen shots don't represent the final in-game rendering pipeline. Also, the usual disclaimer applies that these screen shots are of a pre-alpha version of the I-Novae Editor so please be patient as we improve the layout, icons, and visual quality of the editor itself.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-J9LVOvDCJDU/TkleLP4e5TI/AAAAAAAAADM/IpAFs_Xb94g/s1600/FirstImportedMaterial.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="174" src="http://4.bp.blogspot.com/-J9LVOvDCJDU/TkleLP4e5TI/AAAAAAAAADM/IpAFs_Xb94g/s320/FirstImportedMaterial.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 3. Imported material</td></tr>
</tbody></table>Here is a summary of the screen shots:<br />
<div class="separator" style="clear: both; text-align: center;"></div><ol><li>Figure 1 is a screen shot of the very first mesh I imported into the new mesh editor. It is nothing more than a red wireframe rendering of a simple cube and did not include materials or textures.</li>
<li>Figure 2 shows the first mesh I was able to successfully import along with materials and textures. The model comes from an XNA tutorial which you can find <a href="http://create.msdn.com/en-US/education/catalog/sample/custom_model_class">here</a>.</li>
<li>Figure 3 is an example of a material that was imported from the T-Y9 created by WhiteDwarf.</li>
<li>Figure 4 shows the same material after a normal map has been added. Notice the significant increase in detail.</li>
<li>Figure 5 is the final T-Y9 within the mesh editor.</li>
</ol><div style="text-align: left;"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-QHflP0bCjlY/TkleKf189QI/AAAAAAAAADI/bxxKVluiUGw/s1600/FirstImportedMaterialPlusNM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="175" src="http://1.bp.blogspot.com/-QHflP0bCjlY/TkleKf189QI/AAAAAAAAADI/bxxKVluiUGw/s320/FirstImportedMaterialPlusNM.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 4. Imported material with normal map added</td></tr>
</tbody></table><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-l5Fd1ADjSuY/TkleLlBExkI/AAAAAAAAADQ/NqHJ84v5mg8/s1600/FirstImportOfTY9.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="175" src="http://3.bp.blogspot.com/-l5Fd1ADjSuY/TkleLlBExkI/AAAAAAAAADQ/NqHJ84v5mg8/s320/FirstImportOfTY9.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 5. Final imported mesh in the mesh editor</td></tr>
</tbody></table><br />
</div>Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com5tag:blogger.com,1999:blog-5484832721681814833.post-84483295343028979082011-07-18T18:24:00.001-04:002011-08-15T15:05:04.794-04:00I-Novae Editor First LookI would like to start this blog by thanking everyone for their patience. Those of you who follow my twitter have been anxiously awaiting this blog post and I am sorry I was unable to finish it before I went on vacation. In the end I decided to try out Blogger as a company wide platform for blogs. So far it seems to be pretty powerful and we can, at some point in the future, use RSS feeds to aggregate all of the different blogs onto a single page on the company and/or Infinity websites.<br />
<br />
When looking at the pictures of the I-Novae Editor please keep in mind that it is a work in progress. All of the icons are currently placeholders and the final colors/look and feel has yet to be defined. At the moment we are focusing on core functionality and a polish phase will come once we are closer to public availability.<br />
<br />
<span class="Apple-style-span" style="font-size: large;">I-Novae Editor</span><br />
<br />
Firstly I would like to talk about our progress on the I-Novae Editor and our current technical road map. As many of you know we announced a few months back that progress on Infinity had been delayed in favor of devoting more time to the I-Novae Engine. The primary reason for this is that we realized we needed a more robust toolset not only to make the I-Novae Engine more commercially viable for 3rd parties but also to finish Infinity itself. This diversion is primarily driven by necessity to optimize artist workflow. Artists and designers need to have powerful, flexible tools that allow them to do their job without programmer intervention (as much as possible).<br />
<br />
To facilitate ease of use and a lower barrier to entry the I-Novae Editor is being designed with the idea that anyone with a background in industry standard applications such as Photoshop, 3D Studio MAX, Maya, Unreal Editor, etc can just step into our toolset with a reasonable amount of familiarity. The majority of our users will have invested serious amounts of time in learning these various applications and we would like those investments in time to carry over to the I-Novae Editor as much as possible.<br />
<br />
The editor shell is being designed in a manner similar to that of Visual Studio .NET. While this may seem somewhat backwards considering that Visual Studio .NET is a programmer environment, not an artist environment, to date it has what I consider to be the best docking/layout/project system I have seen. With more and more users purchasing multiple-monitors it has become a requirement to have a robust docking system capable of leveraging these advances in available screen real-estate. We have deviated from the Visual Studio .NET layout slightly, however, with the inclusion of the Ribbon instead of a traditional menu/toolbar setup. Microsoft has been driving acceptance and adoption of the Ribbon within its own products since the launch of Vista and I believe it represents the most powerful and efficient manner to expose many different context sensitive actions to the user.<br />
<br />
<span class="Apple-style-span" style="font-size: large;">The Material Editor</span><br />
<br />
The I-Novae Editor actually represents an ecosystem of sub-editors. These sub-editors consist of things like the Level Editor, Particle System Editor, Mesh Editor, etc. All of these sub-editors work together to create/edit various sets of data that the I-Novae Editor then combines to create the final game assets in a process, to use Unreal/UDK terminology, called <i>cooking</i>. The focus of this blog today is going to be specifically on the new Material Editor as most of the other editors have a dependency on it and therefore don't exist yet.<br />
<br />
Before I get into the details of the Material Editor let me state that, for those of you who don't already know, a material is a set of properties that define how geometry within a virtual world is shaded. In other words if I am drawing a triangle on the screen a material is what determines the color of each pixel in that triangle.<br />
<br />
In the game/film industries today you will typically find two types of material editors:<br />
<br />
<ol><li>Lists of parameters such as CryEditor and Unity. These material editors have long lists of parameters that you can tweak until you get the desired effect.</li>
<li>Node graphs such as Unreal Engine 3 and Houdini. These material editors provide a list of available outputs and a list of available operations and then it is up to the user to connect sets of operations together to form the desired output.</li>
</ol><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-2QbDN0b9GWY/TiRRgRIaWFI/AAAAAAAAAB0/oKj0npJlK8I/s1600/MaterialEditorLizard.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="175" src="http://4.bp.blogspot.com/-2QbDN0b9GWY/TiRRgRIaWFI/AAAAAAAAAB0/oKj0npJlK8I/s320/MaterialEditorLizard.png" width="320" /></a></div><div>Each of these methods have their own advantages and disadvantages but after doing a bunch of research on the inter webs it became evident that the majority of people, or at least the majority of vocal people, seemed to prefer node based material editors. Most notably there are a number of discussions comparing UnrealEd to CryEditor with the general consensus being that for creating materials CryEditor is an inferior environment. The choice to go with a node graph material editor was further reinforced for us by the fact that there are going to be other editors, such as our Procedural Planet Editor, where there simply is no intuitive way of doing it other than providing a visual graph of operations. Therefore we can share the underlying node rendering system across all of these different sub-editors.</div><div><br />
</div><div>Before work could begin on the Material Editor there were a few engine level systems that needed to be created first. For starters there has to be a set of operations that could be performed (individual nodes) and secondly there had to be a way to turn a material into shaders for each supported platform. This is further complicated by the fact that gamers are all running different hardware and the material system needs to be able to automatically scale across all of that different hardware combined with different methods of rendering (for example forward rendering vs deferred shading). The cherry on top is that different platforms also use different shading languages. For example OpenGL uses GLSL whereas D3D uses HLSL.</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-bBMZhjgH9C4/TiRRiDPONpI/AAAAAAAAAB4/ogi1dobI5y4/s1600/MaterialEditorEmissive.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="174" src="http://3.bp.blogspot.com/-bBMZhjgH9C4/TiRRiDPONpI/AAAAAAAAAB4/ogi1dobI5y4/s320/MaterialEditorEmissive.png" width="320" /></a></div><div>To automate this process we've created a material compiler that generates all of the shaders needed to represent a material across all supported hardware. By default all materials are compiled down to shader model 2 which is widely supported across the majority of PC's, consoles, and OpenGL ES 2.0 capable mobile devices. It's essentially our lowest common denominator. Within the Material Editor you can create additional versions of a material that target a specific shader model, i.e. the new shader model 5 available in DirectX 11, for fancier effects on high-end systems.</div><div><br />
</div><div><span class="Apple-style-span" style="font-size: large;">The Future</span><br />
<br />
So where do we go from here? Well for starters the Material Editor isn't 100% completed yet. It's just to a point where it's usable and thus suitable for public display. There are still a number of operations (node types) that have to be added along with support for reflectance models other than Phong. What I'll probably do is delay these additions until after I finish the Mesh Editor because creating materials without a mesh to apply them to is a lot less fun.</div><div><br />
</div><div>The Mesh Editor will more or less consist of merging ASEToBin into the new I-Novae Editor and adding a few additional features. Also we need to add support for linear space lighting at some point. Currently the I-Novae Engine does all lighting calculations in gamma space. I can spend an entire blog discussing color theory (<a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=21523">HDR The Bungie Way</a> for a good explanation) but for now all I'll say is that this is incorrect.</div><div><br />
</div><div>Flavien has been working on porting our planetary engine to the new material system. We also decided that while he was at it he should look into upgrading it to use compute shaders on DX11+ class hardware which should greatly increase speed. Overall we're hoping to have these systems completely wrapped up by sometime in the early fall. In the meantime for those of you interested in day to day updates you can follow me on <a href="http://twitter.com/#!/inovae_keith">Twitter</a>.</div>Anonymoushttp://www.blogger.com/profile/09563679857838117386noreply@blogger.com4