Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Monday, 1 June 2020

Zynga acquires Turkey’s Peak Games for $1.8B, after buying its card games studio for $100M in 2017

Today, some news of a huge acquisition out of Turkey that represents the first billion-dollar-plus exit for a startup out of the country. Social gaming company Zynga confirmed that it is buying Istanbul-based Peak Games, the company behind popular Candy-Crush-style mobile gaming apps Toon Blast and Toy Blast, for $1.8 billion — $900 million in cash, and $900 million in Zynga shares.

Interestingly, this is the second time that Zynga has made a Peak Games acquisition. In 2017, it purchased the company’s mobile card games business for $100 million (more on that below).

The news caps off a short period of speculation about an upcoming deal, with local tech publications like Webrazzi calling the sale (and correct price) last month.

Peak’s investors had included European VCs Earlybird and Hummingbird Ventures — both active backers of startups in emerging markets in the region — and Endeavor Global (the nonprofit that invests via its Endeavor Catalyst fund). Sidar Sahin, the founder and CEO, had been the company’s biggest shareholder.

As with all M&A in the world of gaming, Zynga is getting a couple of big gains out of this sale.

The first is picking up two very popular titles/franchises that it doesn’t have do develop from scratch (in hopes of investing R&D budget in what it hopes but can’t guarantee will be a hit). Toon Blast and Toy Blast together total more than 12 million DAUs. And on top of that, those two games are some of the highest-grossing among all in Apple’s App Store, ranking among the top-10 and top-20 games in the past two years, Zynga noted in its announcement.

It’s not just about adding popular games content, but expanding Zynga’s advertising business as well. Significantly, Peak Games’ primary users are outside of Zynga’s home market of the US, representing a real growth opportunity for the company to cross-sell other games. Zynga says that bolting on Peak’s games network to its own will boost its number of mobile daily active users by 60%, which mean a lot of scaling up for its ad network.

Of course, sustaining both of those titles and their respective franchises as hits for the long run is not a given — the world of gaming regularly sees blockbusters fizzle out when the next big thing comes along — although these “forever franchises” with their steady popularity have a strong play to be exactly that.

However, the long play is also where the third big asset comes in: talent. Peak has 100 employees working on its current franchises and other games. So while the back ends (and revenues) may be getting combined, Zynga says Peak’s people will stay put and continue to work under the Peak brand on the existing franchises as well as on new projects that are already in development.

Zynga says the deal will close in the third quarter of 2020, and it’s updated its guidance already on the news, sending its stock up more than 5% in pre-market trading. Specifically, Zynga today said it believes the deal will bump up revenues by $40 million for the year, to $1.840 billion.

A startup so nice, Zynga bought it twice

The deal is notable not just because of what it’s adding to Zynga today, but because it highlights some interesting history between the two companies.

Back in November 2017, Zynga acquired one division of Peak Games, its mobile card games studio, for $100 million in cash.

The deal included games like Spades Plus and Gin Rummy Plus, respectively the largest spade and rummy mobile games in the world at the time; and games that were popular in Peak’s home market, 101 Okey Plus and Okey Plus. And according to analysis from Apptopia, it looks like Zynga was set to recoup the money it paid out by 2019, meaning that business is now profitable.

The remainder of Peak Games is another story. If Zynga tried to buy the whole business two years ago, it might have been that Peak was reluctant to sell its remaining two titles — its own Candy Crush crushers — Toon Blast and Toy Blast for anything near $100 million. And with good reason, since (as Zynga itself pointed out) they went on to become some of the consistently highest-grossing games in all of the App Store.

In the intervening period, Zynga tried to create its own rivals, namely Wonka’s World of Candy, but it’s never been as big of a hit as the others. (Apptopia’s Adam Blacker today told me, after I published this piece, that in fact Wonka’s World has made but a tiny fraction of the revenue of Peak’s titles.)

Hence, two years on, Zynga possibly finally found the “right price” for the whole of Peak Games.

“We are honored to welcome Sidar and team to Zynga. Peak is one of the world’s best puzzle game makers and we could not be more excited to add such creative and passionate talent to our company,” said Frank Gibeau, Chief Executive Officer of Zynga, in a statement. “With the addition of Toon Blast and Toy Blast, we are expanding our live services portfolio to eight forever franchises, meaningfully increasing our global audience base and adding to our exciting new game pipeline. As a combined team, we are well positioned to grow faster together.”

“This is a monumental partnership not only for Zynga and Peak, but for the whole mobile gaming industry,” said Sidar Sahin, founder and Chief Executive Officer of Peak, in a statement. “Both companies share a common vision — to bring people together through games. Peak’s culture is rooted in relentless learning and progress, so as we embark on this new chapter in our journey together with Zynga, we remain as committed as ever to our unique culture. We’re very excited for our combined future and what we will accomplish together.”

Zynga and games business strategies aside, this is also a huge deal for Turkey’s tech ecosystem.

Turkey has been a steady presence straddling both the European and MENA markets (much as Turkey’s wider economy and political presence does), but so far with little impact in terms of exits and activity that extend outside of the region.

This acquisition is a testament to the exciting companies and talent that are being developed in the market, and is of course yet another sign of how big tech companies based out of more established centres like the Bay Area will continue to take bigger leaps to tap talent ever further afield, in their ongoing consolidation push and search for both business and audience growth.

One impact of the COVID-19 pandemic has been that many are starting to see a much faster decentralisation in the world of technology. People are working remotely, and some are even planning to move away from tech hubs; and deals are getting done not in person but over videoconferencing links. This acquisition also demonstrates how that is also playing out in the world of M&A, too.



from TechCrunch https://ift.tt/3chLDAg
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support