Tuesday, December 4, 2012

MIGs 2012: Creating Efficient Tools

Amongst the presentations at MIGs, one of them was so simple and yet so well done that it had my attention the entire time. This presentation was"the Art of Creating Efficient Tools" presented by David Lightbown who had just recently joined Ubisoft Montreal to work on the exact topic he was covering. The presentation was coveyed not with heavy text, but with simple images and through enthusiastic presentation. You were paying attention to him the whole time and the presentation in the background helped to demonstrate his points nearly flawlessly. He even had volunteers to come up and gave a free copy of Assassin's Creed III afterwards. No other presentation I saw had volunteers at all.

Now the topic doesn't sound all that interesting, but honestly it's the core of usability. It's the core of ease of access for anything and everything relating to the creation of pretty much anything that requires software or even hardware. The point of this presentation was to be aware of how important making tools that are easy to use will help the entire process of creating something like a game. He pointed out an interesting system that we use in our everyday life when using tools.

Look -> Act -> Think


So what happens is we look at the tool and then we begin to act. But then we think about if we are doing the right thing, or wondering how I am supposed to do a particular task using this tool. It could be thinking about something as simple as finding out where the print button is or something like that. What is happening with complicated software that when we are having to look and think too much, we do not act. That means we do not get the task we want to accomplish with the software completed. What we want to happen is to maximize the amount of acting. Well the only way we accomplish this is reducing the thinking and looking time!

It's such a simple looking process and I have never thought about it because it just comes naturally. But it makes a whole lot of sense. From my personal experience, I have hard coded values to place a whole bunch of objects in a world. Now that works, I can get the objects where I want them to be but I have to think more to make sure I am adding the right parameters for each object, if it has health or what not. Instead of doing that I could use a PREFAB. A PREFAB would be an object that contains most or all of the necessary information to place an object where I want. So instead of 10 lines of hard coding per object, I reduce it to 1 line of code using this PREFAB, it makes it a whole lot faster. More acting.

The User Experience


The user experience is key. We want users to be able to have a streamlined experience that maximizes acting and reduces looking and thinking. Well he gave a few tips on how to best maximize acting.

Form and color was the first thing mentioned. Form and color are so simple and yet they can represent so much. A simple circle combined with a color provides a lot of information for us. For example street lights have red and green circles for stop and go. They are simple shapes with colors and yet they tell us information we need to make an action almost instantly. A good point was brought across that you should not only use colors though. There is still a large portion of color blind people and a green and red hue circle nect to each other would still be confusing for them. A combination of a different shape for each along with the different color will make it adaptable for more than one kind of user.

Which object would be more likely to represent STOP?

This shape idea ties into the next point which is interaction design. With the Mental model and conceptual model. These two models are essentially "How do we think?" vs "What it actually does". Essentially its like comparing two objects to be similar, so you say something like "Its as easy to learn as riding a bike". Typically learning to ride a bike is easy for most people so the message is essentially that the material will be easy to learn. This ties into how shapes have certain meanings. A circle is a softer shape and we think more along the lines of smooth, nicer objects. Meanwhile a hard edged square we might associate as more aggressive.


In the Real World

After pointing our some tips on how useful shapes and thinking are, he began to point out some very useful real world examples. So let's say we need to make a tool to help users build levels for a game. Well there is something known as the 80 vs 20 model (I THINK). Basically what you need to do is focus on satisfying the 80% of people using the tool because it will be near impossible to satisfy the other 20%. For example the earlier example of "Easy as riding a bike" would apply to 4 out of 5 people, except the 5th person who had great difficulty learning how to ride a bike. The analogy doesn't apply to that person, and the usability you provided in your tools won't either.

If there are 4 out of 5 circles that can use your tool efficiently already, forget about the 5th circle


Another point is that tools should be streamlined to do certain tasks. Don't make it a jack of all trades tool that does everything. Making it do everything makes the interface of the tool even larger and more cluttered which makes it more difficult to navigate and perform the tasks you need. If you are just making a level loader tool you don't have to give it the option to be able to create models either. It only complicates things even more.

This leads to the next point which was the statement that intermediate users make up the bulk of users for the tool. There are some experts of course but it's a small majority. There are also beginners who will be learning to use the tool. Now the more complicated the tool the harder it is to learn. Make it less complicated and there will be less beginners and more intermediates who know how to use the tool fairly well. You cannot expect all users to become experts, especially if its a tool that's very complicated. Even if they may know all the shortcuts that makes them very efficient, it won't apply to all users and the extra features will slow most users down. Overall the workflow will decrease due to the larger amount of users slowing down versus the expert fast user.

So how does this overall affect our workflow? Well like we stated earlier, more acting means more productivity. The easier we make the tool the more workflow we get and the more people we have working on making content instead of wasting time thinking on how they need to solve a silly problem. We can same hundreds, thousands of work hours by simple usability.

Do these apply for Game Design and Game Engines?


Well actually yes they do.. Game engines is the easiest to identify that this lesson helps because a Game Engine is in fact a tool. It's a tool that helps to make the game in a more user friendly way. The Unreal Development Kit is a game engine that tries to streamline the process for even non programmers. Ogre SDK provides plenty of functionality that we wouldn't want a weaker programmer having to waste his time figuring out. Point is that yes these lessons apply especially for Game Engines.


What about Game Design? This is much trickier to answer. Usability is a very important concept in games. No one wants a game that is extremely difficult to control and is a complete nightmare to figure out where to go. Usability and functionality attracts players because if they are able to do cool things with button presses rather than having to do crazy complex combinations to accomplish a lesser task, then there will be more of an audience. Just look at games that have simplified controls. A simpler fighting game such as Smash Bros has a lot more sales and more of an audience than a fighting game with crazy controls such as Blazblue or other complex combo fighting games. Even the shapes idea can lead into character design which reflects the game designer and etc.

Smash Bros used simplified controls to great success

The only way to debate this topic is the fact that some games actually want controls to be harder because thats just how the gameplay works. While some games go for simplfied controls, others want more complex interfaces. Take Lord of the Rings Battle for Middle Earth, an RTS that simplified the control scheme while looking at something like Supreme Commander, on opposite ends of functionality. And yet they both sold relatively on the same level anyways. That goes to show functionality doesn't always lead to better games but neither do complex ones either. So the conclusion for game design is that really, is that efficiency in being able to perform tasks in a game doesn't mean a better game. Unless its a level building game, then you want to be able to build levels easily like Portal 2 Level Editor.


Conclusion

Anyways going back to the actual presentation, it was great. It was simple, it was very well done and got the point across. Though I might have known most of this information before, the presentation really helped reinforce it my mind now. I believe it's stuck there permanently. What to take away from this presentation is that creating efficient tools reduces thinking time, increases work productivity which means more time to make stuff!

Game Engines in Review

The semester is nearly over and the last class of Game Engines just passed on Monday. It was a class that was difficult but also very interesting and quite fair. The topics that were discussed were quite broad but were all very interesting. All the lessons from in class to the tutorial sessions were all useful and both professor and TA were extremely helpful, easy to listen to and really great overall.

As for the work to be submitted in the class, this course used Hogue's infamous/famous XP system where doing homework questions would grant points. Get enough points and you write the midterm and eventually enough will get you to the final exam and even grant bonus points if you go high enough. The questions themselves were all quite tough and took a significant amount of time to complete them. Nevertheless some of them were still quite fun. I particularly enjoyed the AI question involving flocking, seeking, fleeing, etc. Though I cannot program very advanced AI yet, just simply seeing the AI in action is very fun to watch.

I recall many of the lessons that were taught in class and they were all useful though some were review since they had been partially taught the semester before. My only vice with the course is that, according to the text book that we'd be assigned to read, this course should be split up into 3 which means the material we got for the lectures is very condensed and therefore not as focused as it could be. Though I admit it sounds very difficult to come up with a proper selection of lessons for a course as broad sounding as Game Engines. That's pretty much computer animation, computer graphics, programming and a whole bunch of other courses put in a nutshell for one more course. That's definitely not easy to plan out.

One particularly interesting thing is that, in a previous post I talked about how my group was planning on using component systems. Well it came to our professor's attention that people were discussing component systems and did one last talk on it the day before this post. Our Professor had actually done a paper on component systems so it was clear he knew what he was talking about. He reinforced to us to learn Object Oriented Programming more (the type of programming we were taught since first year) but opened our eyes to more about the component system. There is still a lot we haven't fully implemented and made some mistakes in our component system that he helped clarify.

If I were offered to take a course under this combination of TA and Professor again, I most certainly would. The course was a pleasure to learn and the teaching particularly clicked with my style of learning so it just helped reinforce learning it even more. Anyways this was just a short post this time since I can't really think of much else to say. Overall Game engines was great fun but hard work.

MIGS 2012 : Directing Visual Design in Games


It's been a while since I did a post of any sort due to GDW deadlines and what not. Now that it's finally over I can fill in some blogs I wanted to do a while back. First off I mentioned during my MIGs experience that I wanted to talk about one of the talks, which was the Art Direction for Rage.

It went over the following note points for the development of RAGE over the course of the hour long talk

  • Assessing the Visual state of the game
  • Assesing the limitations of technology
  • Priorities and Targets
  • Wishlist

First off the Director of Art for RAGE Stephan Martieniere talked about how he first joined the project. He spoke of how he had to adapt and make use of assets that were already in existence when he came in. By that time the RAGE development team had a lot of landscape already and a good skybox. However Stephan Martieniere had to take what already existed and not only improve it, but to find ways to fully implement it and work with the gameplay of RAGE. I will go over some of the notable points he talked about that really help show how important visual design is to the overall feel, look and even the gameplay of the game.

SkyBox


The first thing he improved was the skybox of the world. It is an essential look to the asthetic design of the game as he explained. Why is that? Well the skybox in a world like RAGE, where you can see it whenever you're out exploring the world makes it a very important asset to get right. You will be seeing it time and time again and it has to compliment the scenery and not be an eyesore. It needs to be pretty to look at and draw you into the beauty or ugliness of the world. Its more important than you would think at first glance.

Breaking the World


When he spoke of this he meant breaking the world that already existed. As I mentioned earlier he came into the project a bit late, when some assets were already in place. In this case the landscape of an entire world was already in place. What the team had to do was take this existing land and punch new areas that could be filled with content. But it wasn't just a simple, open up a new place and hope it works out. They had to actually plan out how the world would work. The places that would now be created needed to be logical to the geology of the world and needed to be located in a place relative to how it would reflect in the lore of the world. Breaking up this new places took a land that was already defined and made it seem even larger than it already was.

Avoiding Containment


When he spoke of containment he spoke of the presence of the high valleys and cliffs that cluttered the world of RAGE. He specifically got into how the large valleys would serve as a way to make the players feel more constricted and feel like they are in a smaller world. In that sense it meant making far away landscapes and more of the skybox visible. It allowed for a sense of change and direction as there was more to see in the distance. You could see landmarks or cities and have a good idea where to go. It would present itself to gameplay as well for the exploration and discovery of the world since you have more to see.

Establishing Narrative logic and Visual Coherence


Next he spoke about what I have mentioned a few times earlier in this blog and that the environment is about the characters as much as it about the story. The Environment needs to be a fleshed out world, a place that characters inhabit and therefore leads to the story. The gameplay needs to take into effect the characters and monsters you might face in the world, the cities they live in and how they might behave. Incorporating all of this together is visual coherence. For example you would put a character in a an environment that suits them, that they belong in. 

A high tech city gave way to bandits with high tech looking weapons and armor. This affected their visual asthetic for sure. This also affected gameplay as well as it might give access to new equipment as well. The characters would be designed to match and compliment the palette to the city so that they would not only fit but be visually pleasing as well.


He also briefly spoke about ways to enrich the story in subtle ways. Billboards in cities, signs, logos, landmarks were all used in RAGE's cities. Each of these tell their own story, some lore in the game that would help flesh out the world. You would see some billboards advertising products that fit in the world of RAGE, movie posters that would show what kind of movies they watched before the apocalypse, etc. These would help flesh out the world and make it it's own and though we might not always pay attention to these extra tidbits, they really do help make the world feel believable and engrossing.

Extra Tidbits


I can't really put the rest of what he said into one larger catagory but I'd still like to talk about them.

One thing he mentioned was that the design of the environemnt was all about the information that would be revealed to the players. This has an obvious gameplay aspect to it as it helps show and guide players where they might need to go, what to do, or just engrossing the player in the world itself. Environments should be composed in a manner not to overwhelm the player but to provide enough information and give them a good idea where to go and still have the beauty of the environment. Again this is visual coherencing and mixing game design with the art design.


Another neat thing he mentioned  was that when making environments he stated that it helped create the NPCs that inhabited them. Like was mentioned earlier, the NPCs are supposed to be able to inhabit the location they are at, or at least the world. Making a specific kind of environment lead to how inhabitants might dress, what kind of equipment they might possess and how they might act. This again leads to their AI, new weapons, new story and a lot more game design elements.

Conclusion


Stephan Martiniere had thought he had an hour and a half but only had an hour so he didn't have time to speak about everything he wanted to. Nevertheless I learned a lot and it helped reinforce in my mind that game design and art design really shouldn't be seperate at all. For higher level games they should be fully integrated together if a believable world is to be created. Even if the art design leads to level design, the gameplay needs to take place in those areas which leads to influencing how gameplay is. The large overworld of RAGE meant there would be a lot of driving and exploring which was an entirely new gameplay feature different than simple shooting.

It makes me want to discuss more about the visual design of the environments if I wish to make a fully fleshed out world for a game someday. This honestly sounds like the key to making a great environment to fit a great game.


Saturday, November 24, 2012

Component Systems

Over the course of this semester, a topic has been brought up between some groups regarding different ways to approach engine design. We wanted to come up with a way that we could make our engine flexible and provided a lot of functionality. One of the subjects of the topic went over something called a "Component" based engine. Before I go into what this system is I want to explain what I did last year for my 2nd year game.

UGC: 80 AD - Inheritance


In the code for our group's game from the last year, it used inheritance, a lot of inheritance. There would be a class called "Character" which had subcatagories of "Player", "Enemy", and further subclasses such as "EnemyFinalBoss", "EnemyLion" and such. The cool thing about this is that I could easily make put all of my Character objects into a list and update them all. All of them would have a "virtual" update function that could be inherited and overwritten so that specific characters could update to different parameters. For example the player character could update to increase his HP over time, while the EnemyLion would instead update his stamina or something of the sort.

If I wanted to access specific functions, I wouldn't be able to with the EnemyLion normally since he would be created as a "Character" class and insert into a "CharacterList". However if I really needed to I could "cast" it which forces my EnemyLion into an actual EnemyLion class temporarily so that I am allowed to access it's functions. Normally I would have only been able to access the character class.

Character class needs to pass in the four values on the right, but not every class under it has use for these

Now the problem with this entire structure while it sounds like it works well is that it was cluttered, unorganised and I had functionality and attributes in some classes that never even used it. For example, my Character class had a whole bunch of integers to represent health, damage, speed, etc, and some of the classes under it didn't always use them all. I had "Damage1 and Damage2" that were only used by the Player character but the Lion had to inherit both of these even though he only needed "Damage1". This happened for quite a few classes in fact since I needed to update these parameters all the time and check for them. This made the entire system clunkier than it needed to be.

Introducing Components


Now that I have covered the flaws of my engine last year lets talk about this "Component" System. Components basically mean that they are attachments to a base object class. So for example I create an object, it essentially has nothing inside of it. What I do to make it have functionality is attach "Components" to it. These components can literally be almost anything, they can represent a model, rigid body, health, damage, etc. This means almost any object can be anything and do anything, it makes for an extremely flexible system that allows a lot more freedom for the objects to perform actions.

For example I could attach a health component and damage component to the player but for an NPC that can't attack I will only attach the health component, or I might not even attach that since I probably won't need to hurt him. He would simply have his model and rigid body and perhaps some other component to trigger an event to talk with him. The skies are limitless with what you can do with these components.

With components we can attach any component to any other component. We can also make certain components interact with each other such as health to AI.

There are a lot more complex aspects of the component system that we haven't touched yet or learned but these are the basics of the system. We used a combination of inheritance and components, making a pseudo component system. We add a component list to each object. Each of these components is essentially a really empty class template that will be inherited from by the Health Component, attack component, etc. We simply override it to have the functionality we need and if we need to access specific functions, we simply cast it to the appropriate component type (i.e. Health component).

Final Thoughts

I don't want to reveal everything about our component system but that's basically a simple gist of how a real component system might work, or at least a pseudo component system. We hope to learn more about it because so far the results of the component system have been infinitely more flexible to use than with the old inheritance system. Essentially we can make any object do anything. I can make a key turn into an enemy and attack people, make it have an inventory and give it some gold to hold onto.

Saturday, November 17, 2012

MIGs 2012 - Trip Experience


Just this week from November 12 to 15th, the Montreal Internation Game Summit took place. Developers from all over the world ranging from programmers, game designers, artists, audio technicians and even the CEOs and executives of companies came to meet over the course of these days. Some even gave very useful presentations about their field of study that would unveil new technology and techniques to either market their own company or help audience members for their feature endeavors.

The Trip Begins


A trip for UOIT students was formed and I was among the students taking the trip to Montreal, leaving on the 12th and leaving home the night of the 14th. We spent only two nights there, being at the conference for day 13 and 14 which were the most important days anyways. We took the 6 hour long bus ride to reach our hotel on the 12th and pretty much spent that day exploring Montreal. The tickets we had purchased did not include the 12th or 15th in it's admission so we would not have been able to get into MIGs for that day.

The first night concluded and the first real day of MIGs began. We spent a 20 minute walk towards the hotel in which it took place (though we got lost the first day) and came late to the first presentation. The first presentation came from Tim Sweeny, the CEO of Epic games in a talk about Challenges of the Next Generation Consoles.
Highlights included a speech from CEO of Epic Games Tim Sweeney

On a side note I want to state that there are lot of important game industries people here at MIGs (though perhaps not as much as there would be at GDC). Tim Sweeny is the CEO of Epic Games, developpers of Gears of War and Unreal and they are a very powerful company for both making games and developping tools for making games. Other speakers included Peter Molyneux, formerly with Lion Head Studios and created Fable, Black and White and other games.

Going back to how the day went, I missed the entire first lecture since I had to help my friend Mr. Freeman who did a problem with tickets. I then split off to go to the lectures I wanted to look at. I was very curious about a lot of the art related topics interestingly enough. Though I pretty much mostly focus on programming in Game Dev, I am still extremely interested in art, perhaps more so than programming.

A quick note about the presentations is that every time slot is an hour. Also there are always 5 other presentations going on at the same time so that means I missed some other presentations I wanted to go to due to conflicting time slots.

To get an idea of the presentations and topics covered, look here! 

The Presentations Begin - Day 1


The first lecture I went to was "Drawing Inspiration" Bringing Characters and Worlds to Life" by Samantha Youssef. She works at Disney now and went to Sheraton College in the art program, being the only one from her year to be hired by Disney when she graduated. Her talk was incredibly informative regarding art and it was very useful as it opened my eyes to some new techniques she talked about (and she was pretty). I took notes as well and I plan to do a personal write up about this topic and some of the other topics later.

Then came lunch break where I explored the rest of the show floor, but before that I will go over the presentations I went to first.

Guild Wars 2 artwork from Lead artist Kekai Kotaki (now at Bungie)

Amongst the other presentations the first day included Kekai Kotaki, the lead artist who worked on Guild Wars 2 and worked on Guild Wars 1. Unfortunately his presentation got shafted as he was supposed to be provided a tablet so he could draw live for us and teach us techniques. Instead he did not get one and was forced to simply go over his existing work which was still interesting but kind of dry since he was not prepared for this event.

I then went to attend a programming presentation, one on GPGPUs which should interesting since it regarded the use of GPUs for more uses but the delivery was very dry and kind of boring so I almost fell asleep unfortunately. I do not remember much from that presentation and if I had been less tired at that time I would have absorbed more information.

Square Enix featured their new Glacier 2 Engine

The most interesting presentation followed, a look into Square Enix's Glacier 2 engine. I have already made a write up of my impressions of the engine here. To sum up that experience, seeing a AAA game engine close up and learn more intricate details and its features is awesome.

I pretty much ended my day there even though there was one more presentation that day since I was probably going to fall asleep in the next presentation

The Presentations Begin - Day 2

The first presentation I went to was the earliest slot, with a keynote from Peter Molyneux. We got in a little late once again and he talked about "Experience and Innovation". It was a little strange though since he was there via Skype call instead of in purpose. Apparently his new game "Curiosity" became so popular it had a server crash and he needed to stay there. He pretty much talked about Curiosity, how it works and a look into the office where the studio works.

I went to a presentation on audio afterwards which I unfortunately fell asleep in. Not because the presentation was boring, in fact it looked really interesting, but I was kept on too late the night before and got very little sleep. Sadface.

RAGE - Featured in the Art Direction presentation

Following that I went to a talk on Creating and Art Direction Visually Successful Games by Stephan Martiniere, who was lead art director for RAGE. It was extremely informative and in fact related highly to game design surprisingly. A few key points about it for now is that he was designing environments the NPCs themselves could inhabit and the environments would reflect in their outfits. I.E. a tech city would have people in more high tech looking outfits. It was a mesh of visual design being coherent to the world of the game and being immersive. The talk was so interesting that I will probably have a write up on that later on.

Details regarding Battlefield 3 Cutscenes and use of Facial motion capture were presented

Afterwards I went to a presentation regarding Voice Acting/Performance Capture, featuring Battlefield 3. The presenter Tom Keegan talked about the use of motion capture needing a lot more physicality now as the actors need to be able to act naturally and actually envelop the character for more natural movement. So an actor playing a soldier would need to hold a rifle and move around like they were doing it. He even talked about having all actors in at once to do a scene versus voice actors just going on different days and doing their recordings separately. It was an eye opener into some of the techniques they use for MO-Cap acting.

One of the most interesting talks of the day came from David Lightbrown, recently hired by Ubisoft Montreal for designing user interfaces. The talk was about "The Art of Creating Efficient Tools" and was actually VERY interesting and very well done. The presentation itself was the most engaging out of all the of them, he actually used the audience, he was funny, his presentation wasn't heavy on text and used simple shapes to engage the audience. This is one of the talks I am going to write about in the future but essentially it was all about developer tools that are so well done that they will reduce the work time to learn them and just use them to create content.

The final presentation came from a combination of a lot of speakers talking about how they think the future of gaming will come about. Some were more serious speeches, while others were more light hearted. It was interesting to see all these people talk on stage within an hour and everyone had a different opinion and topic they coverered. With that, the MIGs trip ended and we took the bus home!

Extras, Extras!


In my lunch break time and time I didn't spend in the presentations, I looked around the rest of the show floor. There were several booths for many companies, from Game Development studios, to Colleges and programs that specialized in teaching Game Development. Amongst them included Eidos (Deus Ex: Machina - Human Revolution), Ubisoft Montreal (Assassin's Creed III), Bioware (Mass Effect 3), and several others I can't remember. At these booths you could meet with the representatives of those studios and get contacts for networking.

Ubisoft Booth

There was also several others areas such as a demo booth which developers of any sort (including indie) could get space to display their new games. Another area was the art gallery featuring art submitted by people for a small fee to be displayed and voted on. The winner would get a prize of some sort (I have no idea what that prize could have been). There were two catagories, one for pictures which included 2D concept art, 3D models, illustrations and another catagory for video. The video could be trailers, or some artsy looking cutscene. Some people even submitted just a piece of music they had composed themselves.

The Sketch Duel area - Participants are focusing intensely on making their art

To top off this area, every now and then they would have a sketch duel. The first day featured professionals going head to head where they would have 15 minutes to draw something based on a randomly generated template. It could be something like "Draw a samurai dancing beside a house", which they would have to agree on. After the 15 minutes the audience would vote on the favourite. The same rules applied then next day when non professionals were allowed to enter and I watched the entire thing to see their technique. It was mostly speed painting and was another good motivator to learning more art.

Unfortunately I forgot to take many pictures and I should have gotten the art gallery...

Final Notes

So that was pretty much the MIGs trip in a nutshell. It was a really fun and interesting experience, something I would love to do again. Next year I plan to have my portfolio all ready, business cards ready and improve my art experience so I can have a chance at winning the Art Gallery. The presentations were definetely interestin and I learned a lot from them, so I will definetely check them out again.

Stay tuned for more posts for MIGs. I will probably have the following topics covered in more details in the future.

  • "Drawing Inspiration" Bringing Characters and Worlds to Life"
  • "Creating and Art Directing Visually Successful Games"
  • "Art of Creating Efficient Tools"

Friday, November 16, 2012

MIGs - Look into the Glacier 2 Engine

Just this past monday to thursday, the Montreal International Game Summit took place and Game Devs from all years decided to make the trip down. I will have an overview post of how MIGs went but for this particular post (since it's for Game Engines) I want to talk about one of presentations that took place that was particularly interesting.

Hitman Absolution is the first game released to use the new Glacier 2 Engine

Square Enix has several engines under their belt but the most recently created is the Glacier 2 engine.  Glacier 2 is not for license for other studios unlike a game engine like Unreal 3. This engine is only for Square Enix projects and doesn't include the Square Enix projects in Japan for Final Fantasy and other games. The engine currently only has no games currently released under it's belt but it will soon in the form of Hitman Absolution. Other projects are using it as well but I can't quite remember them all.

Why build a new engine?


This is one of the questions the speaker, Kasper Engelsoft addressed. The reason for having a new engine is of course to compete with advancing hardware and methods of rendering, algorithms and structure to put it in a broad sense. He stated that it also had several other important advantages as well. 

Kane & Lynch apparently used some messy code in order to get features the dev team wanted

One was to target previously problems with the first Glacier. The first Glacier appeared to have "hacks" where the programmers would just modify the code in messy, unstructured ways in order to make things work. We saw some sample code from a few games such as Kane & Lynch that proved this messiness. Glacier 2 is supposed to rectify this problem and include features that are already built in so that these sorts of hacks don't have to be done.

Glacier 2 hopes to rectify problems in the past Glacier Engine

Another thought that came to mind was why not just use another engine such as Unreal? Well this goes along with the points stated above. Not every engine has all the features a game needs or isn't tailored to do certain things that are crucial for a company's needs. Unreal might lack certain things that most games Square Enix is going to need, so that means having their own new engine will tailor it to exactly what they need.


Features!


With those questions out of the way, more content of what the new engine could do came to light. One of the most important parts of using an engine is that if it provides the right tools, it will increase the productivity of those using the engine dramatically.

One of the features the engine had was editing on the fly with the game rendered in a seperate window. Other engines do have this feature though such as Unreal and one audience member did not hesitate to point this out. They must have missed the point the engine is specifically tailored for their needs. Anyways I sidetracked but this feature is of course very useful but the best is when modifying things of the engine on the outside, it actually changed the source code at the same time as well. That means anything added in the visual editor could directly make changes to the source code and make things even faster since you wouldn't have to redefine things inside the source code. This was actually one of the highlight features the engine possessed.

Hitman Absolution uses Glacier 2 to render many NPCs with strong AI

I am going to be honest, from this point I can't say quite as much as I hadn't had much sleep the night before so I didn't hear everything that was said about the engine. We got a look into their code structure which looked very organised and clear in comparison to the code shown from the previous engine. We also got a look into their particle system as well as real time rendering of 500 completely dynamic NPCs with advanced AI. This was a feature brought into Hitman Absolution since Hitman was the one being demo'd at this time.

Conclusion


Unfortunately I wish had more to say and took notes but it was still a very interesting presentation. It was exciting to see the inner workings of a AAA engine first hand and understand  the reasons behind its creation as well. It provides great motivation to make our own engines seeing the capability these engines provide.

Monday, November 5, 2012

Havok - Friend or Foe? ~ Learning Havok

Havok is one of the tools we were provided with this year in order to create our GDW games. One should be excited at the prospect of having a chance to use a top quality, triple A engine. However once you get into it, you realize it won't be as easy as it seems to get Havok fully running and doing what you want it to do. Not to mention we aren't getting the real version of Havok, rather we are getting a free student version that doesn't have all the tools that we might be hoping for. One should think that simply having Havok would be only advantageous and it should be but when it becomes a requirement to have and it's not so straight forward to do, it begins to look more like foe then friend.

First off let's just see what Havok provides.

  • Realistic Physics simulation, velocity, acceleration and forces
  • Collision detection and collision response with objects of any shape and size
  • Animation and skeletal animation
  • Creation of it's own objects to be rendered
  • Compatability with Maya for 3D modelling
  • Sensors, events and callbacks
  • Vehicle dynamics
  • Rag dolls
  • Constraints such as rope attachment
  • And many others...
Now that's a lot of features it has and that means the engine has a ton of potential to do amazing things. The problem is that the documentation provided is while very long (1000+ pages) it is not very easy to understand and not very helpful. Many have agreed that the documentation Havok provides to learn it's tools is anything but straight forward. There are also so many things you have to learn about the whole system, that even implementing one of the tasks listed above is anything but easy. In order to correctly implement something, you either have to read through a ton of documentation and might still miss some things, or you're told by someone else.

The documentation isn't exactly straight forward even though it looks like it would

Sooooooo Complicated!


The free version of Havok did not really provide any tutorials to help and any online searching for such help  is extremely difficult. For example, I wanted to figure out how I would get collision response in our game so that when a player attacked an enemy, the enemy might lose health. First of all I looked into the Havok documentation for collision detection. It listed for me, at least a half a dozen things and didn't really fully explain which I should be using, nor how to implement them. So after searching that for some time, I gave up due to how difficult it was to comprehend.

They don't provide proper examples of how to use these for collision detection
I then went to search online for any help in how I might get collision detection in Havok. Again I was frustrated by the lack of any help online due to the wording I needed to use, or just otherwise lack of resources. Havok by itself does collision detection between it's "rigid bodies" but I needed to know how to access when they would collide. Havok would not provide for me a decent answer even with looking for all these resources. Nor do I remember seeing any obvious tutorials that would help show me.

But Demo Samples are useful


Havok demos are the main method of learning Havok

Thankfully not all hope was lost for the samples they provided were actually very helpful. These were pretty much the only way I learned how to use Havok. I finally managed to find out how I would implement my collision response after much searching through the demo samples. They provided source code in these samples so I was able to extract it, figure out how to use it and put it in my own engine. Thankfully this process itself wasn't too difficult as it mostly involved using inheritance and overriding certain functions. It's not that obvious at first though and takes a bit of time to figure out. You also have to take the source code from these projects and import it into your own projects.

The demos finally helped me learn how to use collisions. I turn the objects to blue when they hit.

Through this method I managed to figure out several useful things for our game such as collision detection, collision filtering, attaching rigid bodies to a set path, and a few others. However I wish there was an easier way to learn these things through tutorials or more resources from Havok. From what I've learned it seems like they simply provide the documentation for free students. But for those that pay the full price for Havok they get all features of Havok along with tech support to help teach people. That's the benefit they get while we are stuck with having to figure out everything with Havok by ourselves. Granted its a good learning experience but it makes things dreadfully slow to learn.


Also Havok Demos are very fun, particularly the vehicle demos

The only saving grace was the samples which were very helpful indeed. I know this blog hasn't been about actually learning much today and mostly more of a rant but this just highlights of what to expect if you ever get Havok. Be excited by the potential the system has but be prepared to have to learn a lot and use the samples a ton in order to fully use it.

Monday, October 29, 2012

How to Make a Basic AI - Seek & Wander


If anyone remembers in Super Mario 64, the goombas were different then their 2D counter parts. Instead of simply walking in a straight line, they actually did some somewhat more dynamic AI. They walked around and when you got close, they suddenly turned toward you and ran at you. This is a very basic AI that can work in a 3D game and today I'd like to show how it can be done.

First off let's break down what kind of behaviours the goomba is using. It uses two simple AI behaviours...

  • Seek
  • Wander
The seek behaviour means to head towards a designated target, simple enough. The behaviour is a little more complicated but it eventually involves the same thing. It seeks towards a target, but what it does is calculate a new target in front of itself whenever it's called to make it appear like its just walking around aimlessly.

Physics System


So we know what these behaviours are and they sound pretty simple. Before you just go ahead and make them we need to make sure we have a physics system of some sort. So let's say we have our "Goomba object", well if we want to accurately calculate forces for our AI, we need to make sure he adheres to some form of physics.  This physics system is not too complicated, in fact all it needs to consist of for us at this point is the following...

  • Force
  • Mass
  • Acceleration
  • Velocity (Speed)
  • Position
You would give your goomba this physics system and give it an update function that applies these forces every frame. With the proper system, simply applying some force, will automatically do all the calculations to make the goomba move. So Force = Mass*acceleration, velocity += acceleration, position += velocity or something of the sort. So this means in our AI behaviours we would be calculating the forced required to go to our target.

Basic AI Systems - Pattern and Dynamic AI

A major factor in how believable the game world is, comes from the AI system. When you think about it, almost every game has AI in one form or another. Even a simple game such as Super Mario Bros. has AI,  very basic AI that follows the same pattern. Nowaways we have highly advanced AI, like the ones demonstrated in the Halo series, renowned for their AI. There are varying types of AI, they can be set patterns or they can be dynamic and changing based on the state of the game. The type of AI used is dependent on the type of game being made.

For my post about making a Basic AI Behaviour, click here

Pattern AI


At it's core, a patterned AI doesn't care about what the player is doing, it's not going to react specifically to you if you happen to be jumping, attacking, or dodging. The most they might react is if you happen to be near, it will activate their AI. This is the kind of AI that was featured a lot in games in the 90s and earlier.

The most basic versions of these come in the form of goombas in Super Mario Bros. Their AI pattern is to just walk ahead and if they run into an obstacle turn around. These enemies in particular don't care at all where you are.
Super Mario Bros - World 1-1 ~ The Goomba AI literally just walks forward

Another rather basic AI is the AI in turn based RPGs, notably Pokemon (the old games). They pretty much have no AI. Where pokemon will have a list of four moves, in most battles though they will simply use them at random, with no thought to strategy. Later games started to implement actual patterns in battles to make some good strategies but they were still mostly patterned.

Pokemon Red - The AI used to just randomly use whatever attacks where in their movelist

Saturday, October 27, 2012

Dialogue in Games

How does dialogue enhance the experience of a game for us? What are it's advantages and it's disadvantages? What are the different ways we can go about bringing dialogue to life and bringing story to the players? As a follow up to my previous blog I want to talk about the difference between dialogue with audio, dialogue without and even games that feature no dialogue at all to convey the story.

Story has always been an important part in some games. A lot of games still have story of some sort even if they have no cutscenes or dialogue. Some games simply feature a "story" button featured in the main menu or something of the sort (though that's usually for flash games or lower budget quick games). For titles with larger budgets they usually have either cutscenes with dialogue & voice acting, cutscenes with only text dialogue, or the rare no dialogue and no text ones.


Action Only


These aren't too common and it's very important for these kinds of cutscenes to convey all the emotion and the messages they need with only character motions. It becomes very hard to pull this off for certain kinds of games, such as RPGs which usually have the largest of backstories. However there have been some very notable successes that have proven that you don't always need talking and text to convey what's going on in a scene.

The best example I have experienced of this is the Lego series games, such as Lego Star Wars, Lego Batman, Lego Indiana Jones, etc. In these games, the Lego characters do not talk at all but they have to re-enact scenes from the movies or settings they are in as though they were mimes. They are able to provide and make the emotions obviously in certain scenes such as worry, happiness, laughter, while still trying to stick to the character they are playing. They also have to use a lot of exaggerated gestures to convey more emotion as well.

Tuesday, October 23, 2012

Fragmentation - My memory has got some holes!

When I am talking about memory I do not mean the memory of our conscious self.  I instead mean memory that our computer uses. Our computer contains different kinds of memory, some of them faster to use and some of them slower. Fragmentation is like the title says, making our memory have holes in them. I will explain the whole process of fragmentation and how it does this but before we do that let's talk a bit about what kind of memory our computer has at it's disposal.

Memory


Our memory is responsible for allowing our computer to do all sorts of complex calculations at rates faster than a human possibly could. The more memory we have, the more things we can do at once and the faster we can do it. This applies for all of the programs that our computer has to use when it's being run, from a calculator, to a game. 

We generally have two types of memory, cache memory and RAM (Random Access Memory).



Cache Memory is the faster of the two and is located closest to the CPU in our computer. The CPU is what is doing our calculations, therefore the closer we are to the CPU, the faster our calculations. The problem with cache memory is that we have a lot less of it then we do of RAM. This means we want to perform as much calculation in cache memory as we can before resorting to RAM in order to be as fast and efficient as possible. We also have several layers of cache memory, the closest one labelled "L1" while the others being L2, L3, etc. L1 is the fastest layer while the others get progressively slower.


Random Access Memory is the slower of the two and located farther away from the CPU. However you can have much more of this kind of memory, and can frequently be seen in large 1-8 Gigabyte sticks now, with multiple of them on one computer.


Thursday, October 18, 2012

Sound is important! ~ Audio in Games

We often take for granted the sound we hear in games. As our professor Bill Kaprolos taught us, sound is often a neglected part in games. Not just by designers at times but also by players as well. How often is it that people will play a game without the sound or replace the game's music with their own. Designers adding in sound in the last few months and thinking of it as an after thought. Not everyone does these but it's not uncommon for it to happen. For this post I'm going to take a look into how sound, from music, to dialogue, to sound effects and ambiance affect the game. I believe that a truly great game will have great sound to make it a truly complete experience.

Sound Effects


These are the bread and butter of pretty much every game now. These define the sounds your enemies and players will make in the world, the environmental reactions to your actions. This ranges from things such as character footsteps, sword slashes, gunshots, explosions and anything that is resulted from an action or visual change in the environment. It can be a scripted sequence like a bomb going off and setting off that explosion, or your character holding a gun and you, the player making the gun shoot by pressing the trigger.

The reason these are so important is because they are something you will hear a lot during your game, pretty much all the time. It means that they cannot be annoying, tedious or repetitive. They need to be designed in such a way that they make the experience for the player even better. They need to be satisfying and make sense with what's happening on screen.


Monday, October 15, 2012

Humans Opponents vs AI Opponents

Human opponents and AI opponents, there has always been a debate between which provides a better experience for players. Many stronger players have agreed that humans are much better and that there is no question about it, while others have tried to argue that AI opponents can be compable. All of this is usually a comparison in multiplayer games where the option to play with bots or human opponents is provided. In this blog post I look to compare the advantages and disadvantages of both in a multiplayer environment as well as take a look at how they provide a different experience for singleplayer versus multiplayer in a variety of different genres.

Human Opponents

Skill Levels

Your entire play experience changes depending on the skill of your opponents. Since there are so many players with different skill levels and different strategies it means that your experience can change with every match you play. This is the most important factor in having human opponents versus AI opponents because it means humans can provide you some uniquely different experiences that you could never get from AI.

Soul Calibur V - My Online Matches against human opponents, much more dynamic and interesting than AI.


Saturday, October 13, 2012

Repositories - Back up ALL the files!

Repository? What is that and why is this related to game engines? Well it's useful for game engines, more specifically programming in general and has a variety of other uses too. A repository is sort of like a back up system for your code (or other files). If you have a repository for your code and you make a really terrible mistake later on, you have the ability to revert to an older version and restore code! It has a lot of other things too but let's seperate this blog post neatly into some sections first.


Backing Up


Repositories have the ability to back up your files and revert to older versions. You would set up a folder of your choice as a repository and from there the program will let you do a variety of things (program of your choice, I use mercurial and tortoise HG, but more on that later). Essentially I can choose which files I would like to include to back up, so even if there are a ton of files in the folder I chose, I can select each one that I want and exclude the ones I don't want. There is even a file called .hgignore that allows you to ignore certain types of files so that they will never appear when choosing to select what to back up.

From there (for mercurial) all you have to do is add a comment that says something about what you're doing so, something like "Just created this program that adds numbers" or "[ADD] Added the ability to multiply to program". And then you just click commit. This will add a new "revision" which can be reverted back to in the future. You can add new revisions whenever you want to add a new file or change a file.

It's also possible to branch off as well, which means you're making another version that might be significantly different. From there you can multiple branches, each changing different things and even merge them later. So you could edit one file A, and one file B in a different revision. And later on do a merge that allows you to have both the changes. There can be conflicts though so you will have to use some provided tools to resolve those.

Sunday, October 7, 2012

Concept Art Creation & Tips

Development for this year's game has already begun with my group Scorching South Studios. We have already began preliminary game design ideas as well as concept art for the models we're going to create. Each of us had to do concept art for either a character or several props, each of them all needed orthographic views for Front, Side and Top as well as a perspective drawing.

In this post I'll detail my process for creating the various views as well as some tips on how to make life easier in photoshop for making concept art in this style. Here I draw one of the "pirate" characters in our game, Violet Blackwood.

Here is a link to a description of our PIRATE GAME

Outlines

First we begin with our outline of the shape of the body. Since this is concept art we don't necessarily have to make it like a painting. A good step for beginners and experts a like is to draw a stick figure and figure out where the joints are. This gives a basic idea of our proportions. Make sure to use references if you don't know your anatomy, there are plenty of guides out there so I won't be covering how to do anatomy. Not to mention I still have some ways to go to fully understand anatomy.


Here I am simply drawing only half of the pose since this is a front pose and we can use an easy trick to make things easier and more accurate.


We can select the layer our pose was on and simply make a copy of it and flip it around. Voila the full pose in half the time and matching the other side.



From there it's all up to your design ideas for what you want the character to look like. Look up references for what you might want and look for inspiration. Figure out who your character is, how they might dress, what kind of expression they might have, etc.



Since we already have a base outline of the shape of the body, we can make changes if we aren't satisfied with a certain copy. Here I have redone some features, just using the base outline I made earlier. I even have a copy of the old outline from the image above in case I want to use it or reference it.

Saturday, October 6, 2012

Game Engines & Glitches!

Although I did an old post on glitches, I would like to do another because glitches are so interesting and I can take another look at it more so from a Game Engine point of view than computer graphics one.


What are glitches?


Glitches are a common issue in a lot of games and can range from being problems with graphics, to gameplay itself. A glitch is a very broad term for the game behaving in an improper fashion. A behaviour that is not the one intended by the developers. Pretty much every gamer has experienced a variety of glitches in different games, sometimes obvious, sometimes subtle. Sometimes they are a hilarious occurance and othertimes a frustrating detour to the gameplay. It can even go so far as to break the game for you, preventing you from proceeding and just causing mental suffering.

Friday, October 5, 2012

Linearity versus Freedom in RPGs

The balance between control and freedom between the players and game developpers has teetered since the beginning. Developers have tried to find the right balance of leading players into their story and levels while giving them enough freedom that they aren't suffocated and can have their own unique experiences.

But its not just about freedom. it's about the type of game is being represented. Some games benefit more from a linear experience while others are better suited to give more freedom. Every game is different and requires the right balance to fit with the games mechanics. In this post we will take a look at how some games have gone linear or given freedom and how they faired.

Three layers of Freedom

Before we begin let's take a look at the three types of linearity/non linearity we can have.

Linear

Pretty much controlling the entire experience, forcing you onto a single path to one objective, no alternate paths or methods of completing that objective. Players learn new things in the appropriate order and developers can make sure everything goes right.


The path is very guided in Linear. The gray lines represent missions/obstacles that must be completed in order to proceed.

Semi-Linear 

Players are sent to complete their objective but they can use alternate methods of completing it. Players are given some amount of freedom but they are still being led slowly towards the final goal (Main storyline). Developers will have less control as players can do certain actions out of order that can make the experience not the intended one designed by the developers.


There are many more choices, alternate paths but to proceed any farther you must reach the end of the current level. From there you will get more paths.