Tuesday 21 February 2017

Object Oriented Design

Object Oriented design for computer games


  • Concept and principles
simplified understanding; re-usability; maintenance; efficiency; real-world modelling; collaboration and sharing; communication; quality assurance

-When using blueprints, I have to make sure that my tutor, as well as me, have an easy time understanding what the blueprint is about. Now, there are numerous ways of doing this: you can name all your objects (which you should anyway), making it easier to know what you're referring to; you can also make annotations in the blueprint, as well as comment on them, change the titles, putting  everything into separate groups and even change their colours.



-In terms of re-usability, I will be re-using a lot of everything I create in order to be time efficient, for example objects so that it's easier to create the environment, as well as coding - sometimes you can just copy and paste blocks of code and IF statements.


An example of re-usability could be the FIFA franchise, where every year EA literally makes the same, recycled game, changing engines every 5 years but keeping the coding basically the same, updating the teams and players, sometimes bettering the graphics and adding new features. They have the freedom to re-use player models with minor changes, environments, the crowd, sounds and multiple other assets, you name it.



-Real-world modelling as been and will continue to be used as a method to model all of my props since I'm trying to approach the more photo-realistic style in my game. I want to keep my game within semi-professional standards.



As for collaboration & sharing, as well as communication, they aren't really relevant since I'm working by myself. Although, in a team environment

I will try my hardest to make sure that I am ensuring quality maintenance in my game, changing or even re-creating anything that I have to until I'm happy with the results.



  • Game Objects
sprites; characters; weapons; rooms; walls; scenery; instances; rewards, e.g bonuses, power-ups

The thing about game objects and all the assets mentioned above is that not only you generate a lot of ideas FROM their creation (Object Oriented Design), it also goes the other way around: you generate ideas TO create them (Concept Art). - What I mean by this is that you can picture what your game is going to look like from creating your characters or scenery, etc, but you can also picture your character and/or scenery from other things you've created or ideas.

In this category, you could even argue that Object Oriented Design is almost the complete opposite to Concept Art.


Although, from all the assets I mentioned, some are different from the others:

Sprites, characters, scenery and instances are more important and even somewhat more basic than the others assets, in the sense that they can be sort of guidelines for them. For example, it's easier for you to decide what the weapons are going to look like if you've already created your characters.

These are what define a game and generate fans.


Rewards, Bonuses, power-ups, rooms and walls are assets that you would normally decide later in the process of game creation, meaning you would use the Object Oriented Design method to generate ideas from the other, more important, basic assets.



  • Object Properties
colour; size; speed; movement; sounds; health; lives

These are assets that you could either change throughout development in order to perfect whatever it is you've created, and they could also key aspects for the gameplay.

Colour, size and sounds - you can change these anytime, planning them before creating objects as well as after through OOD (Object Oriented Design).



Speed, movement, health and lives - these are some key factors for gameplay, which are normally decided at the start of development, and tweaked in the long run.

In other games, these assets can also depend a lot on what the previous versions of the franchise were like, as well as what the community fan-base wants - although it can depend on a lot more different things such as genre, mood, seasons, story & theme, etc.

A good example of this would be the Counter-Strike franchise. CS 1.6 was praised by the community as one of the best competitive games ever, although when CS:GO came out, there were a lot of complaints saying that it didn't feel good, it didn't feel like Counter-Strike (especially the AK-47, which was a huge asset in the game. Spraying with this gun felt awful, it did not feel like an AK at all, some of it also due to its sound). Also a lot of weapons and features in the game were over-powered. Although, the devs did a great thing and listened to their people, tweaking most of the assets above in order to make it feel better so that they could please the community.




  • Actions & Events
mouse and keyboard events; create; destroy; collision; timers; scoring

For these assets you would use the OOD method most of the times - you can only decide which objects are going to trigger certain events by having them created already. In order for you to make perfect timers and collisions, you need to play around and test with what you have - and this is where the Q.A testers come in.


Q.A testers along with the design team are the ones responsible for tweaking these assets according to what feels nice - for example which button on the keyboard does what - and balanced - from how the score works to helping fix bugs with collisions. This is their job.



  • Inheritance
Similar to re-usability, this is when you create different versions of one object so that they have special attributes for example. For instance, in MMOs you can find a regular group of mobs which may contain different types of the same mob, not to forget there can also be a much stronger variation of that mob, a boss.


The same can happen with guns and A.I - you can create a variation of the same gun and make it stronger; you can also tweak A.I in order to make a variation that behaves slightly different. It's all about being time efficient.

No comments:

Post a Comment