Korean developer and publisher Com2Us turned a profit in 2023, moving out of the red and earning ₩4.4 billion ($3.3 million) in net profit. This turn to surplus was achieved after 2022’s deficit of -₩9.3 billion (-$7 million), and came despite a continued year-on-year deficit in operating profit.
Though its net profit result gives Com2Us cause to celebrate, the company can’t rest on its laurels just yet; after all, the fourth quarter saw a 19.5% decline in consolidated revenue attributed to “negative seasonality”, as per the company’s latest financials. Consolidated profits were down too, continuing a year-on-year trend for Q4.
Partial improvement
Com2Us’ operating losses were ₩17.6 billion ($13.2 million) in Q4 due to “one-time losses in media business”, rather than a gaming shortfall; in fact, Com2Us’ games catalogue generated ₩126.4 billion ($98.9 million) in the quarter, accounting for 77% of the company’s ₩164.5 billion ($123.4 million) in total earnings. This also meant Q4 gaming sales only fell by 3% year-on-year, versus a 48.5% fall from wider media.
And looking at 2023 as a whole, Com2Us did indeed turn to surplus, making a profit thanks in part to a 13.5% YoY rise in games sales. Games generated ₩562 billion ($421.6 million) for Com2Us in 2023, marking a substantial climb from the ₩495 billion ($371 million) earned in the 2022 fiscal year.
The casual game genre saw the biggest surge in profitability in 2023, with Minigame Party: Pocket Edition, increasing the genre’s earnings by a massive 95.3% year-on-year. Com2Us’ sports game earnings rose too, up 31.2%.
Meanwhile, RPGs saw a 16.6% decline in 2023, peaking in Q2 at ₩116.4 billion ($87 million) and falling as low as ₩73.6 billion ($55 million) in Q4, quite contrary to the genre’s trend in consumer spending industry-wide.
A bigger slice
Com2Us’ proportion of game sales within Korea marginally increased, up 0.2% year-on-year, but the overseas market continued to contribute the bulk of the dev’s earnings; 68.5% of game revenues came from abroad with ₩86.6 billion ($65 million) generated last year, which was in fact a 3.4% decline. Com2Us attributed this to the fall in RPG sales.
Even so, Com2Us’ biggest RPG Summoners War: Sky Arena is still going strong as it approaches its 10th anniversary with over 200 million downloads and ₩3.2 trillion ($2.4 billion) in earnings, making it the top RPG by sales in 162 regions.
As for what 2024 may hold, Com2Us soft-launched Frostpunk: Beyond the Ice last month and intends to take it global – China excluded – in the second half of the year. The current exclusion comes as little surprise given China’s approval process, ever-changing and complex to navigate.
window.fbAsyncInit = function() {
// init the FB JS SDK FB.init( appId : 250161755076617, // App ID //channelUrl : '//'+window.location.hostname+'/channel.php', // Path to your Channel File status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true // parse XFBML );
FB._PG = url: "/useractions/loginfb/", response: "allowed",
// Common handler to fetch FB details and reload the page process: function(me) $.post( FB._PG.url, username: me.username, uname: me.name, uid: me.id, uimg: 'https://graph.facebook.com/' + me.id + '/picture?type=large' ) .done(function(xml) if ( $("status", xml).text() == FB._PG.response ) window.location.reload(); else alert('Error: Something bad just happened. Our tech department has been notified. Please try again later.');
) .fail(function(xml)
alert("Error: something wasn't right there, please try again.");
); ,
// Used by event subscriptions to handle the response handleResponse: function(response) if (response.authResponse) FB.api('/me', function(me) if (me.name) FB._PG.process(me); );
,
post: function(text, image) image = image ;
FB.Event.subscribe('auth.statusChange', FB._PG.handleResponse);
FB.Event.subscribe('edge.create', function(response) $.post('/ajax/social-links/', site: 'facebook' ); ); };
(function(d, s, id) var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "http://connect.facebook.net/en_US/all.js"; fjs.parentNode.insertBefore(js, fjs); (document, 'script', 'facebook-jssdk'));