– on the proposal and website
Thus far I've had no issues with finding relevent information and am happy with the scope of my project; similarily
I feel that I'm okay served with current website selection; may try to add some improvements
– on the progresses with regard to the schedule
Currently running about a week or so behind; intend to catch up this week with report hopefully in finished / edit state by Monday 11
Have not yet started work on technical demo.
– technical challenges met, solved and remaining
I've met the goal of planning out the demo game; essentially a particle collision game with the goal of being easy to code but computationally heavy
(lots of collitions, dyamic rendering etc); the caveat to this being however long it takes to implement said game (ideally easy and quick) thus far unresolved
– additional help needed if any
Might be nice to get some more guidelines on tone (casual in the style of tech magazine or academic),
focus (etc applying principles learned in class vs demostrating use of principles in system)
– adjustment requested to the proposal
Currently content with proposal, with adjusted schedule. Potential adjustment may occur on technical demo with possibility of taking an existing demo from elsewhere
and observing how it could be optimized as opposed to developing game; depends on technical progress.
– anything else needs to be updated
nothing for the moment
Where’s the money?
Video games are a 150 billion dollar global industry, exceeding the 136 billion
dollar film industry. In order to facilitate the production of
new games a game engine is used to accelerate development by providing a bunch
of commonly necessary systems such as object logic, camera logic, audio logic and more.
Why Unity?
Unity is a popular engine used for development, part of the reason is accessibility; anyone with an internet connection
and suitable computer can download it online for free. It has a wide variety of features for development that would
otherwise potentially take a long time to replicate in house, and due to its wide audience it can generally cover
whatever specific concerns a developer may have. Additionally all of these features have been subject
to some level of optimization which means less time doing performance optimization
Why Optimize?
Optimization is important in the field of video game development.
The more systems are able to suitably run your system the larger your potential playerbase.
As games are multimedia products there’s often a wide variety of demands on the system running them,
and thus opportunity and value in optimizing them.
Video games can offer spectacular visual experiences, however to do so requires navigating around
a number of issues involving computational complexity; frames are generated as opposed to provided
which can lead to a number of difficulties. Graphics cards are common expressly for the purpose of
making this process more efficient, yet still graphics often remain a bottleneck for newer games.
So, what does Unity do to alleviate this?
Frame generation is handled by "draw" calls; this renders the object and it's properties onto the screen
and must be called for every "frame" this can understandably be quite consuming as more and more objects appear on the screen.
A way of helping to optimize this is to not have to redraw an unchanging object such as navigation. Similarly because
navigation is unlikely to change it doesn't really need calculations for dynamic lighting, sizing etc.
To save computation effort Unity allows objects to be considered static; these will be maintained as is from frame to frame
and will no longer be able to scale, rotate or move. This saves effort and allows resources to be focused on objects that do
need these characteristics
Additionally, not every object needs to be rendered as if from a blank screen, similar objects can be grouped together and drawn
as one object effectively reducing the need to replicate calculations and switching location focuses.
Because games are often 3d environments objects will be hidden / distant / obscured, Unity takes advantage of this
by given the option to render distant / obscured objects at a lower resolution, thus saving computational resources.
While these are just some of the optimizations available in Unity it's possible to see the pattern of taking advantage of limitations
unique to video games and discarding information where possible. This resembles some of the techniques used in audio and image compression
in that you can use lossy compression without deteriorating the multimedia experience.
Video games have the unique source of resource consumption that is game logic; if you want something to be
interactive then you need calculations to produce it. As systems grow and become more complex game logic can
be a serious bottleneck for resources. To address this Unity offers a few tools for optimizing game logic
First and foremost of these is the ability to profile game performance. Unlike something such as image compression where data usage is
easily measurable (ex going from 2mb to 1mb storage space) video game logic is dynamic and may spike at different times. The profiler
can be used to help identify what and where gamelogic, as well as graphical and audio functions are running into issues.
One common source of resource usage is in physics. In an FPS type game there may be thousands of "bullets" that all must be tracked, updated
and any collision detected. This latter bit; detecting other things on relation to current object can become very expensive as areas grow larger
and more elements are introduced. Some solutions to minimize this burden include limiting the range at which the engine attempts to perform computations,
or in the case of linier motion braking the game environment into layers that are more easy to search through at a computational level.
Unet; the current networking api for unity is being phased out. This provides an opportunity to observe what goals are set for a next generation network and see how that relates to industry demand and new processing abilities. Let's consider some of the goals
This can be seen as a form of optimization to the overall development process by removing the system overhead for unused forms of transport
This speaks to the changes in the multimedia space for video games with networking being more important. Additionally support for multithreading can been seen as a form of optimizing for speed in a multimedia system.
Video games have the interesting aspect that networking need is going to vary by the type of game being used: fighting games, strategy games, fps and rpg games all have their own requirements; this provides opportunity for more optimization and while shrinking scope from a generalist networking application to a more tailored application