<<

Masaryk University Faculty of Informatics

Utilization of in marketing strategies

Bachelor’s Thesis

Peter Bosák

Brno, Spring 2016

Declaration

Hereby I declare that this paper is my original authorial work, which I have worked out by my own. All sources, references and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source.

Peter Bosák

Advisor: doc. RNDr. Tomáš Pitner

i

Acknowledgement

I would like to thank my supervisor doc. RNDr. Tomáš Pitner, Ph.D. for his constructive criticism and for the time he has invested into helping me publish this thesis. I would also like to thank Iveta Mi- naříková for helping me stay motivated throughout writing this work and Lenka Kimličková for helping me cope with the english gram- mar.

iii Abstract

The purpose of this bachelor thesis is to explore the fitness and ef- fectiveness of advergames in marketing strategies, and to compare advantages and disadvantages of advertising through advergames against advertising through other advertising media. The thesis should also contain a practical implementation of a simple . This implementation should demonstrate traits typical for advergames as a medium and should be designed so that it is easy to scale and - ify.

iv Keywords advergames, advergaming, Unity, StrangeIoC, advertising, market- ing, C#

v

Contents

1 Introduction ...... 1 2 Analyzing the use of advergames as an advertising medium 3 2.1 Definition of the term advergame ...... 3 2.2 Gamers statistics and demographics ...... 3 2.3 Games as a marketing strategy ...... 4 2.3.1 Virtual billboards and product placement . . . .5 2.3.2 commercial interrupts ...... 6 2.3.3 advergames ...... 6 2.4 Advantages of advergames ...... 7 2.5 Past research on advergames ...... 9 2.6 Development costs of advergames ...... 12 3 Making of Memory Game – A documentation through a practical advergame’s development process ...... 17 3.1 About ...... 17 3.2 Requirement Gathering for the sample advergame ...... 17 3.3 Design of the sample advergame ...... 19 3.3.1 Interpretation of the requirements gathered in the previous chapter ...... 19 3.3.2 Design of the gameplay and game rules – how will the game be played ...... 20 3.3.3 Branding the game ...... 21 3.3.4 Technical design of the sample advergame . . . 22 3.4 Implementation of the sample advergame ...... 26 3.4.1 Unity game engine ...... 26 3.4.2 StrangeIoC framework ...... 28 3.4.3 User iInterface of the sample advergame . . . . 32 3.4.4 Setup of the game scene ...... 34 3.4.5 Selecting the cards ...... 38 3.4.6 Saving the score to the leaderboard ...... 40 3.5 Maintenance and modiability of the sample advergame ... 42 3.5.1 The IConfig class ...... 42 3.5.2 Changing the images ...... 43 4 Conclusion ...... 45

vii

List of Figures

3.1 StrangeIoC MVCS Context Architecture[28] 32 3.2 Screenshot of the sample advergame run on a device with a standard 16:9 screen aspect ratio. 37 3.3 Screenshot of the sample advergame run on a device with a standard 16:9 screen aspect ratio, but with a reduced number of cards in the deck. 38 3.4 Screenshot of the sample advergame run on a device with an extremely widescreen aspect ratio. 38 3.5 The possible states in which a card may be; and the transitions between them 41

ix

1 Introduction

Just a little over two decades ago, digital marketing (an umbrella term for the marketing of products or services using digital technologies, mainly the Internet[16]) and the various forms it takes were consid- ered to be the newest hit in the evolution of marketing[34]. Today, they are considered a common practice – virtually no company nowadays exists without at least hosting a website of their own and in the up- coming years, the forms of digital marketing will only increase their significance over the other kinds of advertising media[32]. The digital marketing, just like marketing in general, is constantly evolving as the companies that use it strive to addres more customers by introducing more clever, original, surprising or enjoyable forms of advertisement. An example of the digital marketing’s evolution is the growing popularity of an advertising format known as advergam- ing. Advergaming is the practice of using video games in order to advertise brands or products. While the original intent behind the development of video games was to offer entertainment and not to help companies with marketing capaigns, the digital merketing has quickly found ways of utilizing video games in such manner. The aim of this bachelor’s thesis is to explore the significance of advergames as an advertising medium. The thesis will be divided into two parts. The first part of the thesis will describe advergaming in greater detail. It will then proceed to analyze the academic and business re- search done in the past on the topic of advergames, alongside the academic and business research done on various other topics related to the topic of advergames (such as video games, digital media or ad- vertising in general). By performing this analysis, the thesis hopes to provide additional reasoning for why should the topic of advergam- ing be of interest to the academic community. The analysis will also address the efficacy and cost efficiency of advergames. The second part of the thesis will describe the development pro- cess of a simple advergame. The sample advergame will strive to in- ternalize the marketing principes described in the first part of the the- sis. Whilist the sample advergame will be kept fairly simple, it will be fully functional and ready to be used in a wide variety of marketing

1 campaigns. An extra amount of emphasis will be put on the modifi- ability and extendability of the sample advergame.

2 2 Analyzing the use of advergames as an ad- vertising medium

2.1 Definition of the term advergame

Advergame (a portmanteau of "advertising" and "game") is a term used for describing a digital game that was specially designed to pro- mote a certain product, service or a brand[57][48][49]. Usually, it is an on-line game in which some kind of advertisement is integrated in. This advertisement is then perceived by the player of the game. Advergame is therefore an advertising medium, not unlike television commercials or websites banners, but compared to them, it has some advantages and disadvantages. In this work, but also in scientific lit- erature generally, the term advergame is not used for games that do contain sponsorship advertising but were not developed primarily in order to promote them.1. While the concept of advergaming is not new and has been around since the 1980’s[52], only the recent increases in the global gaming market’s size[20] and the recent shifts in popularity from console ga- mes to simple mobile games[22] have allowed the advergame format to gain significance and popularity in the current trends of digital marketing.

2.2 Gamers statistics and demographics

In the year 2015, more than 40% of the world population was con- nected to the Internet. Today,this number is increasing steadily[37][30]. However, the portion of connected population is much greater in de- veloped countries[13]. In Czech Republic and Slovakia, around 80% of population was connected to the internet in 2015. In United King- dom, it was around 90%. But the record is currently being held by

1. For example: sport games developed by the studio. This studio allows renting of a virtual billboard located in the virtual space of its games. How- ever, the games themselves were primarily not developed for the purpose of renting virtual billboards and the billboards are also available to anyone, not just to some specific company or product[18]

3 Iceland who had 92% of its population connected to the Internet in 2015[31]. According to various studies, an average person connected to the internet spends more than 20 minutes daily by playing ga- mes[38][15]. These data may appear to be more interesting after a closer inspection. For example: according to the study made by The Entertainment Software Association[6], more than 42% of Americans play video games regularly (which is around 133.9 million of peo- ple) and according to an international market research company NDP Group, more than 37% of Americans play video games regularly[5] (117.9 milions of people).2. Similar results were attained by an in- ternational company Newzoo, which specializes in global market re- search and predictive analytics in the area of computer games. Ac- cording to studies made by Newzoo, by the end of 2016, over 30% of the world population (2.2 billion of people) will consist of regular players of computer gamers[20]. However, the portion will be even bigger in developed countries. For example, in Germany, the portion of the population that plays video games regularly is around 52.4% (42.3 million of people)[23]. According to an independent market re- search company eMarketer, the global gaming audience is expected to grow even more in the upcoming years[22].

2.3 Games as a marketing strategy

The studies mentioned in the previous chapter yield some interesting findings. It is obvious that people worldwide spend massive amount of hours collectively by playing computer games. Considering the fact that the age of an average gamer spans between 35 to 37 years of age[38][15][44][5][19] (An age where the ability to earn and spend money is at its peak for most people), players of computer games ap- pear to be an ideal target audience for marketing strategies of var- ious vendors and companies. Many companies have already started to take notice of this trend and over the last decades, attempts to bring

2. However, the difference between these two studies may be much lesser than it may seem at first glance, because while The Entertainment Software Association understands term "reguraly" as "more than 3 hours a week", NDP Group uses the same term for "more than 6.4 hours a week" and the later study only took Americans older than 9 years into consideration.

4 advertisements into video games have began to emerge with increas- ing recurrence[52]. In order for any type of advertisement to be effective, its targeted consumer has to be exposed to it for at least some time. We can safely assume that the longer the exposition time, the greater the chance of the customer remembering the advertised product (at least subcon- sciously) and paying for it sometime in the future. However, achiev- ing high exposition time may be difficult, especially not with con- ventional advertising media. A typical customer has no motivation to spend time by watching TV commercials or reading newspaper ban- ners. That is why conventional advertising media usually have only a few seconds in duration or a few lines of text. But should a company get its advertisement into a in some form, it could gain a massive amount of potential customers that could be exposed to this company’s advertisement for a massive periods of time3. Currently, there are three commonly used ways of using video games for marketing purposes. I will briefly introduce each of them in the following subsections.

2.3.1 Virtual billboards and product placement

The first way of using video games for marketing purposes consist of placing virtual advertising spaces directly into the game’s world (as seen in the sport games made by the Electronic Arts studio[18]). They may be considered a virtual equivalent to conventional billboards placed near roads or on the streets in the physical world. The player encounters these virtual billboards while playing the game and may pay them some attention. While these advertising spaces are parts of the game world, they are usually not connected with the game in neither its theme nor its mechanics.

3. Specifically, the company would gain around previously mentioned 40% ofthe world population in potential customers (around 80% of population in developed countries), and this mass of customers would be potentially exposed to the com- pany’s advertisement for previously mentioned 20 minutes long average every day. To be even more specific: the company could gain, for example, 117.9 million ofpo- tential customers in America for approximately 6.4 hours of exposition time every week. And most of these people would be at the peak of their financial abilities.

5 Alternatively, virtual billboards may not even be placed directly in the game world, but they may be placed bellow the game window or on the side of the screen. These virtual banners are based on same principle as website banners.

2.3.2 commercial interrupts The second way of using video games for marketing purposes is add- ing TV–like commercials right into games. These commercials pause the game for a short period of time and the player can continue play- ing the game only after viewing these commercials. The player is forced to pay more attention to this kind of advertisement than to the virtual billboards mentioned in the previous subsection, but this kind of advertisement may also be perceived as more annoying and can possibly disrupt the immersion (or telepresence, the feeling of be- ing present in a mediated environment[47]) the player has had in the game. As with the virtual billboards, commercial–like interrupts are are not connected to the game in neither theme nor gameplay me- chanics. Integration of these commercial pauses differs from game to game. They may appear every time a certain period of time passes, every time the game changes its levels, or after something else triggers them. In–game commercials are currently popular mostly among games re- leased for mobile platforms or among games with the free to play ac- cess model. More often than not, the technical implementation of these com- mercial interrupts is done via services provided to the game’s devel- opers by some third–party company. Therefore, the developers may never be in direct contact with the company whose product they’re promoting. As an example of such third–party services may serve AdMob, a mobile advertising platform for Android and iOS devices which is currently being maintained by Google[29].

2.3.3 advergames The third way of using games for marketing purposes is making the game itself into an advertisement of some sort. Such games are com- monly referred to as advergames.

6 While the first two ways of using games for marketing purposes aim for integrating an advertisement into a video game, advergames aim for integrating a video game into an advertisement. The sole pur- pose of developing an advertgame is to promote a certain product or a service and this purpose is underlying all stages of the advergame’s development. Advergames are commonly distributed freely for play- ing and sharing, since they’re not expected to generate any profit. They offer entertainment for a chance to persuade the player into forming a positive emotional connection between the game and the brand featured within it[49]. The rest of the theoretical part of this bachelor’s thesis is going to be focused primarily on advergames.

2.4 Advantages of advergames

Compared to traditional advertising media like TV commercials or newspaper banners, the largest advantage of advergames lies in the of interactivity they provide. People playing advergames be- come active agents interacting with the advertised brand, not just pas- sive observers, as is the case in traditional advertising media. This in- teractivity seems to increase the attitude the players of the advergame have towards the brand advertised in it[55]. The positive connection may also be reinforced by the fact that the player always chooses to play advergames voluntarily, while the tra- ditional advertising media are more likely to force their potential cus- tomers into viewing them (for example, TV commercials always in- terrupt the TV shows, and banners in newspapers always take space that could be used otherwise). People play advergames voluntarily, because advergames mask their true intent. While the real purpose behind advergames is to persuade their players into forming a pos- itive connection with the advertised brand, the players actually per- ceive advergames as a means to get entertainment and they play them to have some fun, not to get persuaded. In other words, players fully immersed in an advergame may focus on the experience more than on the fact that they’re being persuaded to like a certain brand or a product and therefore, this persuasion attempt has a higher chance to of going unnoticed. This phenomenon may help in advertising the

7 brand featured in the advergame because of the persuasion knowledge model. The persuasion knowledge model is a theory claiming that consumers are more likely to form mental resistance to persuasion if they are aware of being persuaded. The same consumers may pro- cess the persuasive messages differently if they do not recognize an attempt at being persuaded[62]. The probability that an advergame’s player will fail to consciously notice persuasive messages conveyed by the advergame is especially high with young players (children and adolescents), because they lack the necessary cognitive and critical thinking skills to distinguish an advergame with an ulterior motive of promoting a brand from a regular video game4. Advergames that incorporate a greater number of senses, like vi- sual and auditory, may arouse the feeling of telepresence in their play- ers. Telepresence is the feeling of being present in a mediated envi- ronment. The players who are feeling present in the virtual world of the advergame have the opportunity to experience the product ad- vertised by the advergame in a different way. Research suggests that this increases their attitude towards the advertised brand[47][52]. Another advantage of advergames logically follows from the statis- tics mentioned in the chapter 2.2. Large amounts of people world- wide enjoy playing games, thus, the advertising messages featured in games have a high chance to reach their audience. The brand ex- position time in advergames is also an important factor to consider. Typically, the player is exposed to the brand featured in an advergame during the whole duration of the play. While advergames are typ- ically casual games designed to be played for minutes rather than hours at a time[60], their exposition time is still much higher than what the traditional advertising formats offer (the average time that a typical player spends by playing an advergame is located in the range of 7 to 30 minutes per session[52]). The fact that players enjoy playing advergames also creates the possibility for Viral Marketing to take place[52]. Viral Marketing is a form of marketing that motivates its target audience to spread and

4. Many studies have expressed concerns about the moral and societal conse- quences of exploiting this vulnerability of children to persuasive communica- tions in advergames[49][9]. While the problems arising with the mentioned con- sequences lie outside of the scope of this thesis’s focus, I felt compelled to at least make a note of it here.

8 distribute the advertised object among itself. An advergame may, for example, reward its players for sending game invitations to their frie- nds. Or they might invite their friends in order to play the game to- gether. Or, in the simplest form of viral marketing, the players may just tell their friends about the game because they simply enjoy it. Since most advergames are played on-line, the marketers are also capable of getting some valuable personal information about their players, such as their demographic profile, behaviour, needs, attitudes and/or preferences. While this is not important for the brand that the advergame is currently advertising, it may prove useful in future mar- keting campaigns. Another big advantage of advergames is their longevity. Once put on a website, an advergame may be accessed for years after its release. The fact that running a website server hosting an advergame is rela- tively cheap contributes greatly to this advantage as well. Compared to product placement or commercial interrupts inside video games (which were mentioned in subsections 2.3.1 and 2.3.2), building the whole game into an advergame could eliminate the prob- lems that arise with making the advertisements seem out of place and breaking the player’s telepresence in the game. This is possible mainly because a carefully designed advergame is built with the advertised brand in mind. Everything in the game is built around the brand, al- lowing it to match the setting of the game and become one of its fully integrated components.

2.5 Past research on advergames

This chapter will take a critical look on whenever the promising ad- vantages of advergames (as described in the previous chapter) can ac- tually deliver scientifically observable results, and on whenever there are any objective indicators to exactly how much do advergames pro- moting a certain brand impact the brand awareness of their players. For a few years after the emergence of advergames, until the early 2000s, there was a paucity of published research on advergames. This paucity was often being mentioned in the industry and the few pub- lished scientific studies there were[50][56]. However, while there was not much research done on advergames specifically at that point, there

9 already was a number of studies focused on the effects of interactive advertisement and advertisement in general. The findings of some of these studies were already in alignment with the (until then mostly hypothetical) advantages of interactive advertisement and adverga- mes (these advantages were described in the previous chapter). In 2003, a study published in the Journal of Interactive Marketing suggested that an emotional excitement produced in a customer by an interactive advertisement increases the customer’s attitude towards the brand featured in the advertisement[55]. The participants in the study were also more likely to return to the website on which an interactive advertisement was deployed and less likely to return to an identical website on which only passive advertisements (video or video with audio) were featured. The participants have also expressed more positive attitude towards the brand itself, given than the brand was featured in an interactive form of advertisement. There has also been research suggesting that the less a customer is aware of the persuasive messages conveyed by an advertisement, the more likely is the customer to form a positive attitude towards the advertisement[59] and the more open is the customer towards the persuasive messages conveyed by the advertisement[62]. This could apply to advergames, because actively playing an advergame requires greater mental focus than passively watching/reading a traditional form of advertisement. Therefore, the person playing an advergame will have greater likelihood of getting immersed in the experience (and becoming unable to pay that much conscious attention to the persuasive messages portrayed in it) than a person watching a pas- sive commercial. As the time progressed, studies dealing with the advergame for- mat specifically have began to emerge. Some of the studies havefo- cused on what makes an advergame effective and what are the best ways of integrating advertisements into video games[57][51][63][49] [61][48], other studies have compared the effectivity of advergames to the effectivity of traditional advertising formats. These studies have often affirmed the advantages of advergames mentioned in thepre- vious chapter. However, to my knowledge, the studies that directly compare advergames to other advertising formats are still sparse. One example of such study may represent a study undertaken in 2005, which compared the participants’s abilities to recall a brand ad-

10 vertised in an advergame versus the participants’s abilities to recall a brand advertised in a simple website banner. The study has con- cluded that, when compared to website banners, advergames have a much greater chance to boost brand recall ability in their custo- mers[50]. Another study from 2011 have compared the effects of advergames and the effects of video commercials on children. The results ofthe study indicate that children perceive advergames to be more excit- ing than video commercials and that advergames generate more posi- tive brand attitudes in children than video commercials do. While the study has found that the brand recall ability in children is lower for advergames than it is for video commercials, the results of the study also indicate that children are more likely to play the advergame re- peatedly and that children are more likely to recommend the ad- vergame to a friend[58]. There also was a recent study conducted in 2014 that compared how people from different ethnological backgrounds reacted to ad- vertisements featured in advergames versus advertisements featured in traditional television commercials. Specifically, it compared the te- lepresence, brand recall ability and the brand attitude of participants exposed to advertisements in both advergames and television com- mercials. The study has found no significant difference in brand atti- tude or telepresence between the different advertising formats. There was a significant increase in brand recall time for advertisements fea- tured in advergames, but the study has attributed this to different factors[60]. However, the advergames featured in the study were rather simple. Games of such complexity can be developed by a single per- son and in a short amount of time (as will be demonstrated in the practical part of this thesis). On the other hand, the study has not re- vealed which television commercials were used for the comparison. Supposedly, they were commercials commonly appearing in main- stream American TV. Such commercials are usually of high budget and high quality. Taking this into consideration, I would dare to say that comparing a possibly high budget television commercials to low quality advergames and getting identical results may still be consid- ered as an argument for the effectiveness of advergames.

11 2.6 Development costs of advergames

This chapter will take a look at the development cost of advergames. The cost of developing a video game varies greatly from game to game, depending on it’s individual features, its quality, size and the development team behind it. Furthermore, most game development companies keep the amount of money it costs to make their video games a secret. Therefore, many of the figures in this chapter are es- timations and should be taken as such. Pinpointing the exact price of an average commercial game is next to impossible, since publishers and developers almost never release information on budgets of their games. Sometimes, a piece of such information may leak to the media (for example: the leaked initial development contract between Activision and company , concerning the game Des- tiny[11]), or the company’s executives may make public claims about it, but this can hardly be considered a rule. It is not uncommon for various analysts to make estimations about the development costs of successful games, but as such, they can not be considered entirely re- liable. Nevertheless, a somewhat precise picture can be put together from these data. Most expensive video games (often referred to as AAA Games[54]) reach development costs of hundreds million of dollars. Record for the most expensive game is currently estimated to be held either by Star Wars: The Old Republic or by V. According to the American daily newspaper The Times, Star Wars: The Old Repub- lic may have had the development budget consisting of 200 million dollars[41], while development budget of Grand Theft Auto V is esti- mated to be located between 137 million to 265 million of dollars[25] [26]. Another notable example is provided by a leaked contract be- tween video game publisher Activision and video game development company Bungie, which authorized payments totaling up to 140 mil- lion dollars to cover development costs of video game Destiny[11]. The production of games with such budgets may be compared to production of blockbuster movies. They are developed for newest,

12 most powerful PC configurations or gaming consoles. Generally, such game formats are not a good fit for advergames5. Development costs of most PC or console games are not estimated to be this high, however, and making a commercially successful game is possible even with much smaller budget. According to The Enter- tainment Software Association in Canada, Canadian developers re- quired an average budget of over 17 million dollars to produce a con- sole game in 2015[12] (But the total development costs of said games might have also been much smaller than that, because The Entertain- ment Software Association also took the costs related to marketing of said games into estimation, not just the costs related to their develop- ment). Another example may provide the role–playing game Pillars of Eternity, which was crowdfunded with only 4 million dollars[1] and the game was met with mostly positive reviews upon its release[2][3] [4]. 4 - 17 million dollars might still be considered a high budget for an advertising strategy, but what needs to be kept in mind is that games with development budgets located in this range usually contain very fine level of graphical and technical detail and can provide their play- ers with long and rich gameplay experiences. While it is not common to develop advergames this vast and expensive, the idea itself is not unreal, considering the fact that there already are some TV commer- cial campaigns with costs around this price range.6 It is also possible to make a commercially successful game with little to no initial budget and with no video game publisher. Such games are often referred to as indie games (although the term indie does not seem to have any codified definition and can actually posses various different meanings[54]). Games with no starting budgets are often made by hobbyists or by small teams consisting of only a few people. Since these people generally do not possess enough resources to hire development teams as big as developers of AAA games do

5. Although no–one has tried to make an advergame of such proportions to this date. 6. For example, in 2007, the beer brewing company Guinness has launched a televi- sion commercial whose production and release was part of a marketing campaign costing up to 14 million dollars[27]. In 2004, the fashion company Chanel has re- leased a television commercial as part of a marketing campaign whose cost is esti- mated to reach up to 10 million dollars.[36]

13 (For instance: There were over 1000 people working on Grand Theft Auto V in total, according to its director[43]), games made with little to no initial budget simply do not posses as fine graphical or techno- logical detail as AAA titles do. However, games with little to no ini- tial budget can still compete with AAA titles, as they can bring new creative ideas and gameplay mechanics to the industry. Since the de- velopment cost of indie games is generally so low, they do not need to sell too many copies to make profit. Nevertheless, some examples of huge commercial hits came from the indie development category. A typical example of a commercially successful game with no initial budget is the cross–platform title , which was originally de- veloped by a single person[7]. As of February 2016, over 22 million copies of Minecraft had been sold solely on PC and over 50 million more copies of Minecraft were sold across other platforms[42][35]. The game Rogue Legacy may serve as another example of commer- cially successful game with little to no starting budget. It was devel- oped by a team of two people during an 18 months period. The game cost the team about $15,000 of their own money to develop, all of which was earned back within an hour of release[40]. Many browser and mobile games start with little to no initial bud- get, since, until recently, technology limitations did not allow them to have very detailed graphics or computationally intensive technolo- gies, so they were rather simple in appearance and casual in game- play[53]. Naturally, they did not require large development teams to make. However, despite their simplicity, gamers spend more time by playing mobile games with each passing year[10], and according to various analysts, the global mobile gaming market revenue is already greater or comparable in size to global PC or console gaming market revenue[24][17]. Browser and mobile games may currently represent the most fit- ting format for building advergames. As was shown in the previous chapters, browser and mobile games have low development costs, high potential audience, many advantages over traditional advertis- ing media and only a small development team is often sufficient to produce them. Mobile games are also a good fit for the advergaming format because they’re becoming increasingly popular each year and the global mobile gaming market is comparable to the global PC and console gaming market in both size and revenue[21][17]. If executed

14 correctly, a simple advergame may represent a cheap and effective alternative to traditional advertising media. It should be noted that the development process of all video games is generally becoming cheaper and faster each year, as there are more frameworks, libraries, engines, development kits and other tools be- coming available7.

7. Notable examples of such tools may represent Unreal engine[46], Cry Engine[39], Adobe Animate (formerly Adobe Flash)[8], Lumberyard[33], Cocos2d[45], or the Unity game engine[14], which has also been used to cre- ate the practical example of applied advergame described in the second part of this thesis. The second part of this thesis will also describe the Unity game engine in greater detail

15

3 Making of Memory Game – A documenta- tion through a practical advergame’s develop- ment process

3.1 About

The following part of the thesis will consist of a documentation across the development process of a simple advergame. The finished ad- vergame will serve as a demonstration of the principes of advergames described in the previous part of this thesis. The finished advergame will be fully functional and ready to be integrated into any suitable advertising campaign. The development process of the sample advergame will follow the waterfall model. The waterfall model describes a software development method that is linear and sequential. It divides the development of the software into individual phases, each of which may begin only once the previous phase is complete. The phases are as follows:

1. Requirement Gathering

2. Design

3. Implementation

4. Testing

5. Maintenance

Each of the phases will be described in detail in the following sections (namely the section 3.2 for Requirement Gathering, 3.3 for Design, 3.4 for Implementation and 3.5 for Maintenance. The Testing phase was omitted in this project)

3.2 Requirement Gathering for the sample advergame

This section will describe all requirements that should be met by the finished advergame.

17 During the design and the development of the advergame, an ex- tra amount of emphasis should put on the following features: Modability The finished advergame should be easy to tweak and modify, so that it may fit the needs of any advertising campaign that would seek to integrate it in. Portability The finished advergame must be able to run across awide variety of devices and operating systems, ideally the most com- monly used ones. Namely, the finished advergame must be eas- ily portrable to Windows, Mac, Linux, Android and iOS. This will ensure that advertising campaigns integrating the finished advergame will not be limited to specific platforms. Simplicity in design The finished advergame should be simple in design, so that the players can understand its rules right away, without having to read any kind of manual or tutorial prior to playing the game. Reachability The game should not be targeted on a specific target group, such as children or regular gamers, but should be able to address people of different backgrounds. Any company seek- ing to use the advergame in its advertising campaign will be able to target a more specific audience later, should the adver- tising campaign require it. This will be possible thanks to the modability of the finished advergame. However, in order for this narrowing of the target audience to be as simple as pos- sible, the initial, unmodified advergame must be able to reach a wide target market first. Longevity The advergame should be engaging for an extended pe- riod of time. This will allow the player to get a high amount of brand exposure time. Built with free tools The advergame must be built using freely avali- able tools only, so that anyone wishing to utilize or modify the advergane can do so without having to buy any kind of software or code libraries. Simplicity in implementation Finally, it must be possible to develop the advergame in a reasonable amount of time.

18 3.3 Design of the sample advergame

This section will prepare a design for the developed advergame, both in its technical and methodological forms. The design will specify what will the advergame do. The design will also specify how will be the player able to interact with the finished advergame. Lastly, the design will specify what tools and methods will be used in the devel- opment of the advergame. The design prepared in this chapter will be based on the requirements gathered in the previous section.

3.3.1 Interpretation of the requirements gathered in the previous chapter In order for the advergame to meet the reachability and simplicity in de- sign requirement (as were described in the section 3.2), the advergame must have simple rules that are easily understandable and achievable for anyone. For example, the gameplay should not revolve around making split-second decisions or having fast reactions, because such gameplay would greatly favour those players who play action-based games regularly and are used to the cognitive stress that such games put on their players. The gameplay of the advergame should also not rely too heavily on strategy or logical thinking, because people lack- ing in these particular skills could perceive the game to be too diffi- cult to play (for example, children). Lastly, to prevent further player disqualification, the advergame should not require its players topos- sess any special knowledge or skill-set prior to playing the game (for example, a quiz game revolving around a particular topic would dis- qualify anyone who never held any interest towards that particular topic). In order for the advergame to meet the longevity requirement (which was described in the section 3.2), it must either contain a lot of con- tent, or it must be engaging for the player to play the game repeatedly. The second option would better align with the simplicity in implemen- tation requirement, since making a lot of content would require a lot more development time than recycling an already existing content. A good way of making any game replayable is to randomly generate its contents/game elements at the beginning of the game by a certain set of rules. This ensures that the game is a little bit different each

19 time it is played, which adds the variety necessary to keep its player engaged.

3.3.2 Design of the gameplay and game rules – how will the game be played Considering the requirements and their interpretations described in the previous chapter, a concept for the advergame’s rule-set has been put together. The final advergame will imitate a variation of a classical card game in which players compete in finding matching pairs of cards. Basing the game on an existing concept will help to further satisfy the simplicity in design requirement, because the concept of the game is common and people will be able to understand it right away. The game will begin with a shuffled deck of cards that gets ar- ranged on the game board in a rectangular shape. Each card from the deck will start in a face-down position, so that the player may only see its back-face. Additionally, each card from the deck must be clearly visible to the player - no card may be displayed beyond the screen or (partially or wholly) hidden underneath other cards. Since the deck gets shuffled randomly, the game state will be different almost every time the game is run. This will ensure that the game will be engaging for the player even if the player replays it multiple times. All cards in the deck will share the same back-face image. The face images of cards will differ in such a way that for every card in the deck, there is exactly one card with the identical image. Since the deck is shuffled and the cards are arranged face-down, it will be impossible for the player to tell which card is which at the start of the game. The player may turn the cards face up by clicking or taping on them. However, no more than two cards may be facing up at any time. After turning two cards face-up, the game will compare if they match. Cards match if they have identical front images. If the front images on the two cards differ, the cards are not considered a match and the game will turn them face-down again. The player may then proceed to turn another (or even the same) two cards face-up and the whole process repeats. If the player turns a matching pair of cards face-up, the cards will be removed from the game board completely and the player may proceed in turning other cards. Once there are no cards

20 left on the game board, the game will end and the player is taken to the leaderboard screen. In the classical memory game (the one serving as an inspiration for the advergame developed in this thesis), the players compete a- gainst each other and the game is turn based. At the end of the game, the player who has successfully matched the largest amount of pair wins. In the variation of the game represented in this thesis, however, the player plays the game alone and competes with time. Turning the cards around will be animated and the animation will take some time to finish. What’s more, if pair of cards that doesn’t match is turned around, both cards will stay in the face-up position for a while before turning face-down again. This will both punish the player for turning the wrong pair of cards and it will also give the player some time to remember the images on the cards. The player will strive to finish the game in as short a time as possible, and remembering which card is where is vital for achieving that. The best players, those who finish the game in the shortest amount of time, will be prompted to sign their nickname into a leaderboard. This leaderboard will be displayed in the menu before and after play- ing each game. The leaderboard will display the nicknames of the best players, along with the time it took them to finish the game. En- tries in the leaderboard will be sorted from fastest time to slowest time. Should the time in any of the entries get overcomed by another player’s time, the leaderboard gets updated accordingly.

3.3.3 Branding the game It is important to note that the fished advergame developed in this thesis is primarily intended to serve as a template. All of its parts will be designed so that they are easy to modify or replace. For example, in the finished advergame provided in this thesis, the leaderboard described in the previous chapter is saved locally on the player’s de- vice. However, a company integrating the advergame in its advertis- ing campaign may, for example, change the leaderboard so that it is saved on an external server ran privately by the company. The com- pany may then adjust its advertising campaign so that the best play- ers are rewarded with free branded merchandise or service. Similarly, changing the graphics of the advergame will be not only possible,

21 but also recommended. leastwise, graphics depicting the advertised brand should be displayed somewhere in the game, so that the player may be exposed to the advertised brand and the advergame may have a chance to affect the player’s brand awareness. While advertisements and brand promoting images may be placed anywhere in the finished advergame, the face and back-face images of cards may offer an ideal opportunity for this placement. The back- face may, for example, depict the advertised brand or the company’s logo. The face images of the cards may then depict the advertised products or the brand’s mascot in various situations. The exemplary advergame provided in this thesis will promote an imaginary fast-food chain. The back faces will depicts the name of the fast-food chain ("memory food") while the front images will depicts meals from the imaginary restaurant’s menu. A real restaurant using the advergame in this manner could also place the meal’s prices and names on the images, but this example will omit such information. Changing the images depicted on cards will have to be a trivial task to execute technically, so that the advergame may meet the mod- ability requirement (as described in the section 3.2).

3.3.4 Technical design of the sample advergame The exemplary advergame provided in this thesis will be built using the Unity game engine[14], namely its version 5.3. Unity game engine is a cross-platform engine developed by Unity Technologies. Unity game engine can be used to create both 2D and 3D games as well as other kinds of graphical software. The unity game engine was chosen be- cause it makes it trivial to satisfy the portability requirement described in the section 3.2. This satisfaction is achieved so easily because any software developed in the environment of the Unity game engine can be effortlessly ported to any of the most widely used platforms; PC, Mac, Linux, WebGL, Android, iOS, and many others... Using the Unity game engine to develop the final advergame will also satisfy the requirement stating that the game must be built with free tools, because the Unity game engine has a freely available ver- sion (the personal edition) whose capabilities are sufficient for the development of the sample advergame.

22 During the development of the sample advergame, an extra em- phasis will be given towards meeting the modability requirement. The advergame’s code structure will reflect this by utilizing suitable de- sign patterns. A design pattern is a well-known and well-established template solution to a set of problems that commonly occur when programming a software application. The advergame designed in this thesis will implement the following design patterns:

Inversion of Control and Dependency Injection

In an object-oriented programming, the inversion of control design pattern is used to decouple a program’s classes from their depen- dencies so that the dependencies can be supplanted or updated with none or minimal changes to the source code of classes dependent on them. In a traditional object-oriented program, each portion of the pro- gram (a class) should ideally only do the computing logically bound to that portion of the program. A single portion of a program should not concern itself with the workings of the rest of the application – each class in the program should be as individual an entity as possi- ble. This ensures that the code of the program is decoupled and easy to modify – changing one portion of the program will not affect the rest of the application. However, such ideal encapsulation of the pro- gram’s portions into individual entities is not always possible. The problem stems from the fact that the portions of the program also need to interact with each other, which breaks the encapsulation. Ev- ery time a portion of the code needs to interact with another portion of the code, a dependency is created. When a portion of the code is later changed in the project’s development, all of the other portions who are depended on it will need to have their source code changed as well. The Inversion of Control design principle partially solves this prob- lem by making most of the portions of code in the program lose the control over their dependencies. This control is instead given to a dif- ferent portion of the program, and the sole purpose of that portion is to manage the dependencies of other portions by deciding which specific object to supplement to which specific dependency. Usingthe Inversion of Control design principle makes the code more modular

23 and encapsulated, because changing or modifying a class’ code won’t require the developer to change the code of other classes who are de- pendent on it. In addition to changing the class’ code, the developer will only need to change the portion of code that manages the class’ dependencies. There are multiple possible ways of implementing the Inversion of Control design principle. One of them is a design pattern called De- pendency Injection. The Dependency Injection pattern works by defin- ing an external portion of code called Injector. After that, when an individual object (also known as the client object) needs to directly interact with another object (which means that the client object is de- pendent upon another object), the client object does not find or con- struct the object it is dependent on. Instead, the dependency is made a part of the client’s object state and the dependent object is passed (injected) to this state via the injector. The client never calls the code in the injector, instead, it is the code in the injector that constructs the ob- jects the client is dependent on and passes (injects) these constructed objects to the client. This increases the modularity and encapsulation of the code, be- cause the client object does not need to know how to find or construct its dependencies and neither does it need to know which actual ob- jects and classes it depends on. The client object only needs to know about the interfaces of the objects it is dependent on, so that it can use them. Changing or modifying any of the objects that the client is dependent upon can be done without changing the client’s code at all. The object the client depends on can even be swapped for a com- pletely different object and the client’s code would never be affected by this swapping. This is possible because the swapping takes place in the injector’s code, not in the client’s. The swapped object only needs to implement the same interface as the object it was swapped for, so that the client knows how to use it. What’s more, all of this happens at run time, so the dependencies may be changed without actually recompiling the code. Implementing the Dependency Injection design pattern into the advergame’s code structure greatly helps the advergame to meet the modability requirement (as was described in the section 3.2). Since in- dividual portions of the advergame’s code are greatly independent upon other portions, it is possible to change and modify them with-

24 out breaking the whole project. A company using the advergame in it’s marketing campaign may, for example, decide to change the win- ning condition of the game, or the shape of the game board. Since all of these behaviours will be encapsulated in their own portions of the code, changing them will affect the code in the rest of the game and will therefore be an easy thing to do.

Model-View-Controller

Another software design patter that will be implemented in the sam- ple advergame’s code structure is the Model-View-Controller design pattern. When implemented in a software, this design pattern divides the software’s code into three interconnected parts; the part responsi- ble for managing the software’s data (the model), the part managing what does the user of the software see and how are the data from the model displayed (the view) and the part managing the user’s input and converting it into commands changing the states of the other two parts (the controller). Dividing the advergames’s source code in this manner will once again help the advergame meet the modability requirement, because it will be easy to locate and change individual components of the ap- plication without having to change other components. For example, it is almost certain that a company seeking to use this advergame in a marketing campaign will have a desire to change how does the ad- vergame look like, so that the looks of the advergame may better match the advertised brand. However, the company may desire to leave the gameplay and the rules of the game unchanged. The de- scribed modification will be easy to execute, because the portions of the code responsible for the display of the game will be indepen- dent on the portions responsible for the gameplay and the rules of the game. Changing one of these portions will not require to change the other ones.

Entity-Component-System

Lastly,the Entity-Component-System design pattern is a pattern com- monly used in the development of video games and the Unity engine uses it by default. A game built using the Entity-Component-System defines every object in the game scene as an entity. Every entity may

25 have one or more components assigned to it and each of the com- ponents adds additional functionality to the entity. Since the code in this thesis’ exemplary advergame will be divided into the model, view and controller categories, most components of every entity in the game scene will fall under the view category. Additionally, no component will ever fall under the model category (since classes from the model category will exist independently on the game scene). While the designed advergame will be rather simple and may not necessarily gain much from implementing all of these architectural patterns, I have taken in upon myself to expand the aim of this thesis by exploring the suitability of these design patterns in the develop- ment of video games. For example, the Model-View-Controller archi- tectural pattern is traditionally used for designing graphical user in- terfaces or web applications. However, its suitability for structuring the code architecture of video games is yet to be fully explored. This thesis strives to address that.

3.4 Implementation of the sample advergame

The following section will describe in greater detail how the sam- ple advergame got implemented and how the most important parts of its source code function. Additional information about the inner workings of the advergame’s source code may be found inside the advergame’s source code, in the forms of comments and documenta- tion.

3.4.1 Unity game engine The game will be implemented using the Unity game engine. The Unity game engine was briefly introduced previously in the section 3.3.4. However, this subsection will describe it in greater detail. The Unity game engine is released in a form of a standard applica- tion. Currently, it can be executed from the Windows and the Mac op- erating systems, although there is an experimental version available for Linux-based operating systems as well. Executing the Unity game engine application provides the developer with a graphical user in- terface. The graphical user interface helps the developer quicken the

26 developing process by allowing the developer to move around in the virtual space of the game scene and initialize the game entities with- out the need to write a single line of code. The graphical user interface also provides the developer with various menus and settings that can be used to quickly initialize various things in the project (for exam- ple, which platforms will the finished advergame target or what type of bitmap compression will the textures imported in the project use). Along with the graphical user interface, the Unity game engine offers the developer an application programming interface (API in short) that provides access to a rich library of pre-defined code. This code contains classes and methods essential for building graphical applications and video games. The utilization of this code library is necessary for an effective development in the Unity game engine. Any developer seeking to use the Unity game engine should be familiar with the code library’s API. The code structure of projects made with the Unity game engine uses the Entity-Component-System design pattern, as was described in the previous chapter. The Entity-Component-System design pat- tern is initially implemented in the Unity game engine in such a way that each component is represented by a script written in either the C programming language, or in the JavaScript programming language. To make a script into an attachable component, it only needs to im- plement a class extending the MonoBehaviour class provided by the Unity’s API. Components created in this manner can be attached to entities either via the graphical user interface described above, or via other scripts dynamically. Entities too can be added to the game scene either via the graphical user interface, or dynamically from scripts at- tached to other entities. In the Unity’s game engine, an entity is rep- resented by a class called GameObject. This class is publicly available from the Unity’s API. There should never be a need for other classes to extend the GameObject class, because all additional functionality should be added via components. The graphical user interface provided by Unity game engine does not include a text editor intended for the creation and modification of the scripts – the scripts must be written in an external text-editing application. The advergame designed in this thesis will use scripts written solely in the C programming language. The C programming language has been chosen because the StrangeIoC framework (which

27 will be described in the following subsection) has been implemented in it and relies on it to work correctly.

3.4.2 StrangeIoC framework StrangeIoC is an open-source framework written especially for C and Unity. StrangeIoC provides implementation for the Dependency In- jection and the Model-View-Controller design patterns described in the section 3.3.4. Utilizing the StrangeIoC framework helps to create cleaner, less brittle and more easily readable code. This is achieved by decoupling the dependencise in the code’s classes. StrangeIoC achieves this decoupling by introducing the concept of binding. The binding is done through a class called the Binder, or through a class that extends the Binder class. The Binder class is a col- lection class (similar to ArrayList or Dictionary classes, both of which can be found in the generic package of the C language). However, the specific purpose of the Binder class is to connect lists of things that are not necessarily related, but in need of some type of run time as- sociation. The keys and values in the Binder class can be though of as causes and effects, or actions and reactions. If the key action happens, ittrig- gers the value action. So, for example, dispatching an event may trig- ger an instantiation of a particular class. Or an instantiation of one particular class may trigger an instantiation of a different class. Most importantly, the Binder class is able to bind an abstract de- pendency of a particular class to a concrete implementation of that abstract dependency. The dependent class does not have to be aware that such binding ever took place. When the dependent class needs to use a concrete instance of its dependency, it will be provided with one by the binder. The class will then proceed to use the instance without knowing the concrete type of the instance it was given. The Binder class has direct control over which concrete class sat- isfies which abstract dependency. This control may be on a scale ofa single class, but it can also be on a scale of the whole project. Should the developer decide to change the concrete implementation of any abstract dependency in the project, the developer only changes it in the binder and does not has to modify the rest of the code.

28 Bellow is an exemplary code for setting up a dependency in the StrangeIoC framework: [ Inject ] public IInterface myInstance { get; set; } The [Inject] tag lets the binder know that the value in the property defined under the tag should be injected. However, in order forthe binder to inject a value, the value needs to be defined somewhere the binder can access it. The best place to inject them is in a central class called the Context (or in a central class that extends the Context class). How binding a key to a value works may be demonstrated by a following example: injectionBinder.Bind().To(); After the binding is defined like this, whenever a class needs to use IInterface, it will be provided with a ConcreteClass. The Con- creteClass could be changed in the Context any time during the de- velopment for a completely different class and the change could be registered over the whole project. The only requirement placed on the ConcreteClass is that it needs to implement the IInterface, the StrangeIoC will throw an exception otherwise. It makes no sense for any class extending the Context class to have more than one instance. However, there may be multiple classes ex- tending the context class in a single project. This allows the project to use different contexts at different places. For example, the project may require different bindings to operate in the main menu and different bindings to operate in the game scene. Or the project may require each level of the game to bind classes together in slightly different ways. Instantiating classes is done through the Binder class. This is dif- ferent from the traditional C code, where instantiating is done via the new keyword and using a regular constructor. The code bellow shows an example of class instantiation in the context of the StrangeIoC frame- work: IInterface instance = injectionBinder.GetInstance< IInterface >() as IInterface; The StrangeIoC framework also provides classes, methods and guidelines to help with the implementation of the Model-View-Con- troller design pattern (as was described in the section 3.3.4). Most of

29 these classes and methods can be accessed by extending the MVC- SContext class instead of the regular Context class to define bindings. In the StrangeIoC’s implementation of the Model-View-Controller design pattern, every piece of code falling under the view category is written in a script extending a class called the View. The View class ex- tends the MonoBehaviour class found in the Unity’s standard library, so it acts like a standard component that can be attached to entities (GameObjects). View classes are responsible for displaying graphical objects to the player – they hold no data about the game state, nor do they hold data about the graphical object they are displaying (unless the data is needed for the object to display properly, but even in that case, such data should hold no information value to the rest of the application). For every class extending the View class, there is also a class that extends the Mediator class defined. The Mediator class is, just like the View class, found in the StrangeIoC’s core library. Classes extending the View class never directly communicate with the rest of the appli- cation. Instead, they only communicate with the Mediator class as- signed to them. A class extending the View class will notify its Medi- ator when it registers that a state change has occurred in it. The View class may, for example, notify its Mediator every time the player clicks on a graphical object displayed by the View class. Or the View class may notify its Mediator when the graphical object displayed by the View class finishes playing a certain animation. The Mediator class will then forward this notification to the rest of the application, which will decide what to do with it further. Similarly, the Mediator class also receives requests from the rest of the application and forwards them to its view class, so that the view may update the displayed graphics. Assigning a certain Mediator class to a certain View is once again done through binding. A special kind of the binder class called the MediationBinder is defined for this kind of binding. The following code shows an example of binding a Mediator class to a View class: mediationBinder.Bind().To< ClassExtendingMediator >(); Responsibilities of the Mediator classes are generally very lean. The Mediator classes do not compute the game logic or change the

30 data stored in files falling under the model category. When a Medi- ator class receives a notification from its View class, it usually just dispatches this notification further into the application in a from ofa Signal. The Signal classes are another feature provided by the StrangeIoC framework. They serve as a dispatch mechanism similar to the well- known event design pattern. The Binder class found in the StrangeIoC framework can bind Signals to commands. A command is another well- known design pattern that encapsulates a request into an object. When a signal is dispatched, a command that has been previously bound to it gets instantiated and executed. Binding signals to commands is done via a special kind of binder class called the CommandBinder. The code bellow demonstrates how can signals be bound to commands in in the context of the StrangeIoC framework: commandBinder.Bind().To(); The commands are the controllers in the Model-View-Controller structure of the application built with StrangeIoC. They are responsi- ble for handling the game logic and the player input. Commands are also responsible for updating the state in models and then notifying the mediators about these changes. The models are portions of code assigned with the specific task of holding data. They should never listen to signals, their data should be updated via commands. The StrangeIoC framework expands the Model-View-Controller architectural pattern into a Model-View-Controller-Service architec- tural pattern. The portions of code falling under the services category are supposed to handle the communication with any service locate outside of the application (for example, distant servers on the web). The sample advergame developed in this thesis does not communi- cate with any service outside of the player’s device, so there is no portion of the advergame’s code falling under the services category. However, should the company using the advergame decide to, for ex- ample, send the leaderboard scores from the player’s device to their web server, the class handling this communication would fall under the services category.

31 Figure 3.1 shows the communication flow between the different portions of code designed under the Model-View-Controller-Services guidelines provided by the StrangeIoC framework.

Figure 3.1: StrangeIoC MVCS Context Architecture[28]

3.4.3 User iInterface of the sample advergame In order to achieve high level of modularity, the sample advergame is designed so that it is dividable into multiple different parts (the parts could also be described as contexts or scenes). These different parts

32 interlop in the finished advergame, but each of these parts can alsobe run on its own. This helps to increase the game’s modability, because changing any of the parts will not break the rest of the game. Encap- sulating parts of the advergame into independent parts also makes unit testing much easier. The sample advergame currently contains only two such parts – the part handling and displaying the user interface and the part han- dling and displaying the game scene. The User Interface of the sample advergame consists of the main menu screen and the in-game timer. The timer is rendered over the game scene and lets the player know about how much time has passed since the start of the game. The main menu screen contains the leaderboard, the "Start Game" but- ton which starts the game and the "X" button which terminates the application. The main menu also contains animated graphic element depicting a deck of cards laying on a floor in a virtual space. This graphic element serves no purpose except for the aesthetic one. It is entirely generated by a class called BackgroundCardsView. Swapping this class for a different one may change the background graphics en- tirely, for example to better suit the needs of the advertised brand. The user interface part of the advergame is set up in the file called UserInterface.unity which can be found in the Assets/Scenes folder of the project. Opening up this file in the Unity editor will reveal the initial set-up for the User Interface scene. On top of the GameOb- ject hierarchy in this scene is a GameObject named MainMenuCon- text, which has the UserInterfaceContextView component attached to it. This component instantiates the UserInterfaceContext class, which is a class extending the MVCSContext described above. The UserIn- terfaceContext handles all of the bindings for the user interface part of the advergame – it binds views to mediators, it binds interfaces of models to concrete classes and it binds commands to signals. The MainMenuContext GameObject has a child GameObject na- med UIView. The UIView contains several child GameObjects, all of which contain components from the Unity engine’s default UI pack- age. Together, these components and GameObjects set-up the look for all of the advegame’s user interface elements. None of the elements are set-up directly from the advergame’s code. Should the need to modify them arise in the future, it should be done so via the Unity editor.

33 The UIView GameObject also contains a component with the same name. The UIView class is responsible for handling the player’s input on the interface buttons. After registering a button press, the UIView will alert its mediator (which, like all mediators, is not initially in the scene, but will be created automatically by the MediationInjector af- ter the application is started). The mediator will then in turn alert the rest of the application by dispatching a Signal according to the type of the pressed button.

3.4.4 Setup of the game scene In the Scenes folder of the project structure, there is a file named GameScene.unity. This file can be opened in the Unity editor to reveal the initial set-up for the game scene. The game scene is responsible for handling the core of the game. It generates the deck of cards, shuffles it, displays it to the player and allows the player to click/tap on them in order to reveal them and match them into pairs. While the game scene can be run individually (for testing purposes), it is meant to be launched by pressing the "New Game" button in the User Interface. On top of the GameObject hierarchy in the game scene is a Ga- meObject called MemoryGameContext. Similarly to how it was in the user interface scene, the MemoryGameContext has a component at- tached to it and this component instantiates the GameboardContext class, which handles all of the bindings in the game scene. After instantiating and defining all of the bindings relevant for the game scene, the GameboardContext dispatches a NewGameSig- nal, which is bound through the CommandBinder to instatiate the NewGameCommand. The sole purpose of the NewGameCommand is to instatiate and initialize the GameboardView and the IGameboardMo- del classes. While the IGameboardModel is an abstract class (and there- fore, can not be instantiated), it already has a concrete implementa- tion bound to it in the GameboardContext. This concrete implementa- tion is a class named the GameboardModel and will be instantiated ev- ery time the IGameboardModel is called for. The GameboardModel

34 and GameboardView classes are responsible for most of the game’s logic and layout1. The GameboardModel class generates a deck of cards that the player will play the advergame with. In the GameboardModel, the deck of cards is represented by an array of object instances imple- menting the ICardModel class. While the ICardModel is also an ab- stract class, it has a concrete implementation bound to it through the GameboardContext, and therefore, the GameboardModel will auto- matically substitute the ICardModel for its concrete implementation when it’s called for. Each instance of the ICardModel has a TextureID property. The TextureID represents the image that gets displayed on the card’s face. TextureIDs are generated in such a way that exactly two instances of the ICardModel share the same TextureID. The deck of the ICardModels is shuffled randomly right after its generation. The TextureID properties are then deep-copied from the shuffled deck of cards and stored in an array of their own. Thisar- ray is then dispatched to the rest of the application via a Signal called GameboardModelResetSignal. Any object listening to this signal can ex- tract the randomized array of TextureID properties from the signal and use the array in any way it sees fit. Since the GameboardModel- ResetSignal only dispatches a deep copy of the TextureID properties, modifying them won’t have any effect on the original TextureID prop- erties stored in the GameboardModel and therefore, the code encap- sulation can not be broken. Currently, the only object listening to the GameboardModelRe- setSignal is the mediator of the GameboardView mentioned previ- ously. The GameboardView is a class extending the View class, so it has a mediator instantiated and assigned to it automatically through the GameboardContext’s MediationBinder. The task of the Gamebo- ardView class is to display the cards to the player and listen to the player’s mouse/touch input regarding the displayed cards. In order to do this, the GameboardView only needs the array of TextureID

1. In a more traditional code architecture, these two classes would be merged into one, single class, called simply the Gameboard. However, the Model-View- Controller architecture keeps them separated

35 properties sorted in the right order. This array is provided via the previously mentioned GameboardModelResetSignal. Using the array of TextureID properties, the GameboardView in- stantiates its own deck of cards. This deck of cards is represented by an array of GameObjects. Each of the GameObjects is instantiated as a from a prototype GameObject called the CardPrefab. The CardPrefab can be found in the Assets/Resources folder of the project structure, saved in a file named CardPrefab.prefab. The CardPrefab is a GameObject which has several components attached of it. Most of these components can be found in the Unity engine’s genral code li- brary, such as the BoxCollider component which allows the card to be clicked/tapped by the player or the MeshRenderer component which is responsible for rendering the card’s model. The card’s model is a very simple 3D model consisting of two quads (four triangular poly- gons, twelve vertices). Each of the quads has a texture mapped to it – the quad rendered on the back of the model has a back-face texture mapped to it and the quad rendered at the front of the model has a blank texture mapped to it. Once the CardPrefab is cloned, the blank texture of the cloned instance will be swapped for a face texture in accordance to the TextureID. The CardPrefab also has a component called CardView attached to it, which is responsible for animating the card’s model. Each CardView has a public field of the integer type named ID. The value of the ID field is unique for each instance of CardView and is always equal to the index the CardView’s GameOb- ject has in the GameboardView’s deck array2. The ID field is what maps the instances of the CardView class kept in the Gameboard- View to instances of the ICardModel class stored in the Gameboard- Model. In other words, the ICardModels in the IGameboardModel’s deck are mapped to the CardViews in the GameboardView’s deck via their indexes. Once the GameboardView instantiates all of the cards in the form of GameObjects, it needs to position them on the screen. The cards will be positioned face-down in a rectangular shape. Once the cards are arranged, the GameboardView zooms the player’s camera so that

2. This means that the card at the position 0 in the deck array has ID equalling to 0, the card at the position 1 in the deck array has ID equalling to 1, the card at the position 2 in the deck array has ID equalling to 2 and so on...

36 all of the cards are visible from as close a range as possible. This needs to be done dynamically after the cards are arranged, because the ad- vergame may be played on many different devices and each device may have a different screen resolution. Another reason for zooming the camera after the deck has been arranged is that the number of cards in the deck can be modified. By default, the cards are arranged in a shape that fills up the free space on the screen in the best way possible. The following figures demonstrate this. Figure 3.2 shows how the GameboardView arranges the card GameObjects if the advergame is played on a device with a screen aspect ratio of 16:9 and if there are 16 cards in the deck. Fig- ure 3.3 shows the advergame played on the same device, but with the amount of cards in the deck reduced to 6. The cards in the figure 3.3 are bigger in size to better fill up the free space. Figure 3.4 demon- strates how can the shape in which the cards are arranged change in order to better fit the screen resolution.

Figure 3.2: Screenshot of the sample advergame run on a device with a standard 16:9 screen aspect ratio.

Once the game scene is set up, the player may begin to play the game.

37 Figure 3.3: Screenshot of the sample advergame run on a device with a standard 16:9 screen aspect ratio, but with a reduced number of cards in the deck.

Figure 3.4: Screenshot of the sample advergame run on a device with an extremely widescreen aspect ratio.

3.4.5 Selecting the cards The GameboardView is responsible for listening to the player’s mouse/- touch input. Clicking (or tapping) on the cards will make the Game- boardView’s mediator dispatch a CardClickedSignal to let the rest of the application know that a card has been clicked (or tapped). The CardClickedSignal takes the clicked (or tapped) card’s ID as a pa- rameter.

38 Currently,there is no class directly listening to the CardClickedSig- nal. However, the CardClickedSignal is bound to the TrySelectCard- Command via the CommandBinder in the GameboardContext. There- fore, clicking/tapping a card always instantiates and executes a new instance of the TrySelectCardCommand. The TrySelectCardCommand tries to select a particular card (identified by the ID parameter passed in the CardClickedSignal). Selecting a card means that the TrySelect- CardCommand reveals the card’s image to the player. Failure to select a card happens if the card is an unselectable state (for example, it is already selected) or if there are more than two other cards already selected. If the selection succeeds, the card is marked as selected and begins to slowly play the revealing animation. After the player selects two cards, the game waits for both of them to finish their revealing animation (which consists of the card’s model slowly turning face-up) and then it compares their face images with each other by executing the TrySelectionCompareCommand. If the face images of the selected cards match (the TextureID properties of the two cards are equal to one another), the cards are removed from the game scene and the player may select another pair of cards. If the face images of the se- lected cards differ, the cards will stay in their revealed position for a short time before they begin to play their hiding animation. Hid- ing animation consists of the card’s model slowly turning face down. Halfway through the hiding animation, the cards are unselected and the player may select another pair of cards. Marking and unmarking the cards as selected is the responsibility of a class called the SelectionManagerModel. It is a simple container class that holds the IDs of the selected cards. Each ICardModel has an enum property of the CardState type. The CardState serves two purposes. One of the purposes is to make it pos- sible for the TrySelectCardCommand to decide if a card is selectable (the card is not selectable in certain states). The other purpose is to make the CardView component animate the card’s model correctly. The CardState enum may hold following values: Hidden The default state in which all of cards begin. A hiden card is displayed face-down and can be selected. Revealing A card is in the Revealing state right after it has been se- lected and is playing the revealing animation. The revealing an-

39 imation consists of the card’s model slowly turning face-up. A card in the Revealing state can not be selected.

Revealed A card enters the Revealed state after it finishes the Reveal- ing animation. A card in the Revealed state can not be selected.

Hiding After revealing two cards whose images do not match, both of these cards’ states change into the Hiding state. A card in the Hiding state is playing the hiding animation, which consists of the card’s model slowly turning face-down. A card in the Hid- ing state can not be selected.

HiddenAnimating When the hiding animation is halfway finished, the card playing the animation changes its state from Hiding to HiddenAnimationg. A card in the HiddenAnimating state is still playing the hiding animation, but is considered as hidden in all other aspects. A card in the HiddenAnimating state can be selected.

Ascending After revealing two cards whose images do match, both of these cards’ states change into the Ascending state. A card in the Ascending state is playing the ascending animation, which consists of the card’s model slowly disappearing from the scene. A card in the Ascending state can not be selected. However, the cards transitioning into the Ascending state are deselected right away - the player may select other cards without having to wait for the ascending animation to finish.

Destroyed Once a card finishes the ascending animation, it transi- tions into the Destroyed state. The card will stay in the Destroyed state until the game ends and the game scene is cleared. A card in the Destroyed state can not be selected.

The state diagram depicted in the figure 3.5 helps to illustrate the transitions between the card’s states.

3.4.6 Saving the score to the leaderboard Once the player clears all cards from the gameboardView, a class ex- tending the Signal class called the EndGameSignal will be dispatched.

40 Figure 3.5: The possible states in which a card may be; and the tran- sitions between them

This signal is bound to a class expanding the Command class called the EndGameCommand in the GameboardContext. Therefore, dispatch- ing the EndGameSignal will instantiate and execute the EndGameCom- mand. The EndGameCommand clears up the game scene. After the game scene is cleared, the EndGameCommand sequentially compares the time it took the player to finish the game with each record stored in the leaderboard, starting from the first place. If the EndGameCom- mand finds an empty place, or if it finds an entry with atimethat is higher than the time it took the player to finish the game, the en- try and all of the entries below it are shifted one place lower. The player is then prompted to input his name, which will be saved in the leaderboard at the place of the first shifted entry. Along with the player’s name, the time it took the player to finish the game will be saved in the leaderboard too. After the player submits the name, or if the player doesn’t place in the leaderboard, the game returns to the main menu.

41 If the advergame is played on a PC, the leaderboard is saved in an external text file located in the Advergame’s data directory. The path and name of this file can be changed in the Config file, which willbe described in the chapter 3.5.1. When played on a mobile devices, the leaderboard is saved via the PlayerPrefs class provided by the Unity engine.

3.5 Maintenance and modiability of the sample advergame

3.5.1 The IConfig class In both the UserInterfaceContext and GameboardContext classes, a concrete implementation of the IConfig class is bound to the IConfig class. Currently, in both contexts, the IConfig class is bound to a class called simply the Config, although a different implementation of the IConfig class may be created and bound to it in the future. The implementations of the IConfig class are used to configure the initial settings for the advergame. IConfig class contains various variables, values of which may be easily changed to achieve different gameplay experiences. For example, the value of the NumberOfCards variable determines how many cards will be laid out in single game. Setting the value to zero (or lower) will use twice as many cards as there are images in the Assets/Resources/Cards folder (more on chang- ing the images in the subsection 3.5.2). The shape in which the cards will be arranged can be changed via the IConfig class as well. The CardMargin variable determines how big the spaces between the cards will be in world units. The Initial- Width variable determines how many cards there will be in each row of the shape in which the cards are arranged. The number of cards in each column is calculated automatically from the InitialWidth and NumberOfCards variables. Setting the value of InitialWidth to zero makes GameboardView calculate the shape in which the cards will be arranged in such a way that there is as little unused space on the screen as possible.

42 3.5.2 Changing the images The card images in the sample advergame depicts meals from an imaginary fast-food restaurant’s menu. However, any company uti- lizing the advergame in an advertising campaign will most likely de- sire to change these images for different ones. The advergame is de- signed so that changing the images is a simple task and can be done without modifying the advergames’s source code. All of the images are located in the Assets/Resources/Cards folder of the project structure. Simply replacing these images for different images is sufficient. The file names of the images are irrelevant. The images may be of any file type that the Unity engine supports.

43

4 Conclusion

The first aim of this thesis was to introduce the concept of advergames and to provide a research analysis addressing the efficacy and cost ef- ficiency of advergaming. The second aim of this thesis was todemon- strate the principles of advergaming on a sample advergame that could be tweaked and used in various marketing campaigns. The concept of advergames was described in the sections 2.1 and 2.3. The rest of the chapter has conducted an analysis that drew from various academic and bussines studies (with the exception of the sec- tion 2.6 which mostly drew from analytical estimations). The analy- sis inclined towards the opinion that using advergames in marketing strategies may increase the customer’s brand recall ability and pos- itive brand attitude. The section 2.6 suggests that advergames may represent a cheap yet effective alternative to more traditional forms of advertising. The third chapter has described the development process of the sample advergame. The project was developed using the waterfall model development method. In the section 3.2, all of the require- ments that the sample advergame should meet were gathered before the development has begun. In the section 3.3, the advergame was de- signed while taking all of the previously defined requirements into consideration. The section 3.4 described how the project was imple- mented and how the logic of the project’s code works. Finally, the section 3.5 described how to simply tweak the advergame to better fit the needs of any company that would seek to use it in a marketing campaign. The sample project was built using the Unity game engine which was described in the section 3.3.4. The sample project has also utilized the StrangeIoC framework which was described in the section 3.4.2. Using the StrangeIoC framework, the Dependency Injection and the Model-View-Controller design patterns were implemented into the advergame’s code architecture. The utilization of the Dependency In- jection design pattern has encapsulated the advergame’s code into in- dividual portions, which made the code more modular and less brit- tle. The utilization of the Model-View-Controller design pattern has made the project’s code more easily readable, although it has also

45 made it a bit more lenghty. While the extra amount of code brought by the advergame abidance to the Model-View-Controller guidelines may seem unsuitable for such a simple project, the author of this the- sis believes that the increased readability accompanying it will prove useful in the future modifications to the advergame. The finished advergame is fully working and may be compiled to run across a wide variety of devices.

46 Bibliography

[1] https://www.kickstarter.com/projects/obsidian/project- eternity. [cit. 2016-02-27].

[2] http://www.metacritic.com/game/pc/pillars-of-eternity. [cit. 2016-02-27].

[3] http://www.pcgamer.com/pillars-of-eternity-review/. [cit. 2016-02-27].

[4] http://www.ign.com/articles/2015/03/27/pillars-of- eternity-review. [cit. 2016-02-27].

[5] 37 percent of u.s. population age 9 and older currently plays pc games. https://www.npd.com/wps/portal/npd/us/news/ press-releases/37-percent-of-us-population-age-9-and- older-currently-plays-pc-games/. [cit. 2016-01-21].

[6] About esa. http://www.theesa.com/about-esa/. [cit. 2016-01- 21].

[7] About the game. https://minecraft.net/game. [cit. 2016-03- 17].

[8] Adobe animate cc. http://www.adobe.com/products/ animate.html/. [cit. 2016-02-26].

[9] Advergames: It’s not child’s play. http:// www.agnesnairn.co.uk/policy_reports/advergames-its- not-childs-play.pdf. [cit. 2016-04-28].

[10] Average time spent playing games on mobile devices has increased 57 percent since 2012. https://www.npd.com/wps/ portal/npd/us/news/press-releases/2015/average-time- spent-playing-games-on-mobile-devices-has-increased- 57-percent-since-2012/. [cit. 2016-03-17].

[11] Bungie-activision contracte. http://documents.latimes.com/ bungie-activision-contract/. [cit. 2016-02-27].

47 [12] Canada’s in 2015. http://theesa.ca/ wp-content/uploads/2015/11/ESAC-Video-Games-Profile- 2015-FINAL.pdf. [cit. 2016-02-27].

[13] Communications technology in emerging and develop- ing nations. http://www.pewglobal.org/2015/03/19/1- communications-technology-in-emerging-and-developing- nations/. [cit. 2016-01-28].

[14] Create and connect with unity 5. https://unity3d.com/. [cit. 2016-02-26].

[15] Daily time spent playing video games per capita in the united states in 2008, 2013 and 2018 (in minutes). http://www.statista.com/statistics/186960/time-spent- with-videogames-in-the-us-since-2002/. [cit. 2016-01-21].

[16] Definition of digital marketing. http://lexicon.ft.com/ Term?term=digital-marketing. [cit. 2016-05-05].

[17] Digital market outlook. https://www.statista.com/outlook/ 203/100/digital-games/worldwide#market-revenue. [cit. 2016-03-17].

[18] Ea advertising opportunities. http://www.ea.com/1/ advertise. [cit. 2015-12-06].

[19] Free casual games association sector report: Smartphone tablet gaming 2013. http://newzoo.com/insights/cga- smartphones-and-tablets-2013-games-market-sector- report/. [cit. 2016-01-21].

[20] Games insights. https://newzoo.com/insights/markets/ games/. [cit. 2016-05-05].

[21] Games market revenue worldwide in 2015, 2016 and 2018, by segment and screen (in billion u.s. dollars). http://www.statista.com/statistics/278181/video-games- revenue-worldwide-from-2012-to-2015-by-source/. [cit. 2016-05-05].

48 [22] Gaming for marketers. http://www.slideshare.net/ AleixRisco/emarketer-gaming-for-marketers-let-the- mobile-games-begin. [cit. 2016-05-05]. [23] Germany insights. https://newzoo.com/insights/countries/ germany/. [cit. 2016-05-05]. [24] Global games market will grow 9.4% to $91.5bn in 2015. https://newzoo.com/insights/articles/global-games- market-will-grow-9-4-to-91-5bn-in-2015/. [cit. 2016-03- 17]. [25] ’gta 5’ costs $265 million to develop and market, mak- ing it the most expensive video game ever produced: Re- port. http://www.ibtimes.com/gta-5-costs-265-million- develop-market-making-it-most-expensive-video-game- ever-produced-report. [cit. 2016-02-26]. [26] Gta v dev costs over $137 million, says analyst. http: //www.gamesindustry.biz/articles/2013-02-01-gta-v- dev-costs-over-USD137-million-says-analyst. [cit. 2016- 02-26]. [27] Guinness ad topples record. http://www.theguardian.com/ media/2007/nov/08/advertising. [cit. 2016-03-10]. [28] Hey unity! it’s time to get strange.... http:// strangeioc.github.io/strangeioc/. [cit. 2016-05-19]. [29] Interactive media adds. https://developers.google.com/ interactive-media-ads/. [cit. 2016-01-22]. [30] Internet users. http://www.internetlivestats.com/ internet-users/. [cit. 2016-01-27]. [31] Internet users (per 100 people). http://data.worldbank.org/ indicator/IT.NET.USER.P2. [cit. 2016-01-21]. [32] Internet will be biggest medium in third of global ad market by 2017. http://www.zenithoptimedia.com/internet-will- biggest-medium-third-global-ad-market-2017/. [cit. 2016- 05-05].

49 [33] Lumberyard. https://aws.amazon.com/lumberyard/. [cit. 2016-04-27].

[34] Making digital and traditional marketing work together. https://econsultancy.com/blog/62546-making-digital- and-traditional-marketing-work-together/. [cit. 2016-05- 20].

[35] Minecraft sales on pc top 20m copies, more than 70m to- tal. http://www.polygon.com/2015/6/30/8872503/minecraft- sales-pc-mac-20-million-copies. [cit. 2016-03-17].

[36] No. 5 on scent of top 5. http://adage.com/article/news/5- scent-top-5/100271/. [cit. 2016-03-10].

[37] Number of worldwide internet users from 2000 to 2015 (in millions). http://www.statista.com/statistics/273018/ number-of-internet-users-worldwide/. [cit. 2016-01-27].

[38] Original digital video consumer study. http://www.iab.net/ media/file/GfKIAB2014OriginalDigitalVideoReport.pdf. [cit. 2016-01-21].

[39] The power to achieve your vision. http://cryengine.com/. [cit. 2016-02-26].

[40] Rogue legacy turned a profit within an hour on sale. http://www.vg247.com/2014/03/18/rogue-legacy-turned- a-profit-within-an-hour-on-sale/. [cit. 2016-03-17].

[41] Star wars: The old republic — the story behind a galac- tic gamble. http://herocomplex.latimes.com/games/ star-wars-the-old-republic-the-story-behind-a- galactic-gamble/?utm_source=dlvr.it&utm_medium= twitter&dlvrit=63378#/0. [cit. 2016-02-27].

[42] Statistics. https://minecraft.net/stats. [cit. 2016-03-17].

[43] Studio director andy semple and president leslie ben- zies take us through how the developer operates. http://www.develop-online.net/studio-profile/inside-

50 rockstar-north-part-2-the-studio/0184061. [cit. 2016-02- 26].

[44] Towards the global games market in 2017. https://issuu.com/ casualconnect/docs/ccnewzoospringreport-pages?e= 2336319/6014071. [cit. 2016-02-26].

[45] What is cocos2d? http://www.cocos2d-x.org/. [cit. 2016-02- 26].

[46] What is unreal engine 4? https://www.unrealengine.com/ what-is-unreal-engine-4. [cit. 2016-02-26].

[47] Taeyong Kim, Frank Biocca. Telepresence via television: Two dimensions of telepresence may have different connections to memory and persuasion. Journal of Computer-Mediated Commu- nication, 3(2), 1997.

[48] Tina Winkler, Kathy Buckner. Receptiveness of gamers to em- bedded brand messages in advergames: Attitudes towards prod- uct placement. Journal of Interactive Advertising, 7(1), 2006.

[49] Stephan Dahl, Lynne Eagle, Carlos Báez. Analyzing ad- vergames: active diversions or actually deception. an ex- ploratory study of online advergames content. Young Consumers, 10(1):46–59, 2009.

[50] David Deal. The ability of branded online games to build brand equity: An exploratory study. In Suzanne de Castell, Jen- nifer Jenson, editor, Proceedings of DiGRA 2005 Conference: Chang- ing Views – Worlds in Play, pages 1–7. Authors & Digital Games Research Association DiGRA, June 2005.

[51] Mira Lee, Ronald Faber. Effects of product placement in on-line games on brand memory: A perspective of the limited-capacity model of attention. Journal of Advertising, 36(4):75–90.

[52] Alina Ghirvu. Advergames: marketing advantages and risks in- volved. In Suzanne de Castell, Jennifer Jenson, editor, The Pro- ceedings of the International Conference "Marketing - from Informa- tion to Decision, pages 174–183, October 2011.

51 [53] Wei Pei-Shan, Lu Hsi-Peng. Why do people play mobile social games? an examination of network externalities and of uses and gratifications. Internet Research, 24(3):313–331, 2014.

[54] Nadav Lipkin. Examining indie’s independence: The meaning of “indie” games, the politics of production, and mainstream cooptation. Loading..., 7(11):8–24, 2012.

[55] Arthur Raney, Laura Arpan, Kartik Pashupati. At the movies, on the web: An investigation of the effects of entertaining and interactive web content on site and brand evaluations. Journal of Interactive Marketing, 17(4):38–53, 2003.

[56] Hassan Fattah, Pamela Paul. Gaming gets serious. American De- mographics, 24(5):38–44, 2002.

[57] Khim-Yong Goh, Jerry Wenjie Ping. Engaging consumers with advergames: An experimental evaluation of interactivity, fit and expectancy. Journal of the Association for Information Systems, 15(7):388–421, 2014.

[58] Martin Waiguny, Ralf Terlutter. Differences in children’s pro- cessing of advergames and tv commercials. In Shintaro Okazaki, editor, Advances in Advertising Research (Vol. 2), chapter 3, pages 35–51. Springer Gabler, Wiesbaden, 2011.

[59] Thomas Madden, Chris Allen, Jacquelyn Twible. Attitude to- ward the ad: An assessment of diverse measurement indices under different processing “sets”. Journal of Marketing Research, 25(3):242–252, 1988.

[60] Steven Bellman, Anna Kempa, Hanadi Haddada, Duane Varana. The effectiveness of advergames compared to television com- mercials and interactive commercials featuring advergames. Computers in Human Behavior, 32(2):276–283, 2014.

[61] Thomas Mackaya, Michael Ewinga, Fiona Newtona, Lydia Windischa. The effect of product placement in computer games on brand attitude and recall. International Journal of Advertising: The Review of Marketing Communications, 28(3):423–438.

52 [62] Marian Friestad, Peter Wright. The persuasion knowledge model: How people cope with persuasion attempts. Journal of Consumer Research, 21(1):1–31, 1994.

[63] Shu-Hsun Ho, Yu-Ling Lin, Yu-Ting Yang. In-game advertis- ing: Consumers’ attitude and the effect of product placements on memory. African Journal of Business Management, 5(24):10117– 10127, 2011.

53