The surprise launch of cult classic roguelike Vampire Survivors was one of the more interesting mobile stories during The Game Awards. Fans had been clamouring for a mobile version of the top-down, Castlevania-inspired survival roguelike since its release in 2021. With developer poncle finally self-publishing to mobile as soon as it was announced with a surprise trailer. However, in a recent Steam update, they related the woes of seeking out publishers, including a number of messy interactions marred by discussions of ‘predatory’ monetisation.
This, according to poncle, is what led them to self-publish in order to manage monetisation and other elements on their own terms.
In the Steam post, founder of poncle Luca Galante discussed his philosophy behind monetising the port “If you’re like me, then if you wanted VS on mobile you’d have been happy to just pay a couple of bucks for it and call it a day; but the mobile market doesn’t work like that…This is why we ended up with a free-for-real approach, where monetization is minimal and is designed to never interrupt your game, always be optional and in your control through a couple of ‘watch ads’ buttons, and doesn’t have any of that real money sinks that mobile cash grabs are usually designed around. It’s just the full game, playable offline, in landscape or portrait, with touch controls or with a gamepad.”
What a horrible night to have a curse
Poncle’s position on monetisation carries a similar sentiment to many PC and indie devs, as well as their frustration with clones of Vampire Survivors appearing, “Not ‘games like Vampire Survivors’, but actual 1:1 copies with stolen code, assets, data, progression.” So it’s no surprise then that self-publishing was eventually the route they took to get their version out as soon as possible, and in their preferred manner.
For many developers, mobile monetisation has extremely negative connotations, but as pointed to by poncle it’s an inescapable fact of the market. In a way, Vampire Survivors was well-placed, with an existing devoted fanbase, to use lighter touch monetisation that still supported the developer without interfering with the core gameplay appeal.
Poncle’s perspective certainly raises interesting questions. Especially since Vampire Survivors quickly reached “a crazy amount of organic downloads”, mimicking the PC and console success for the small team. Whether mobile gaming observers agree with their position on monetisation or not, it’s hard not to see Vampire Survivors as a great example of how an indie-developer can find success on mobile via self-publishing, and maintain creative control of their game in the process.
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-image").attr("src"); FB.ui({ method: 'feed', display: 'popup', link: 'https://www.pocketgamer.biz/news/80554/vampire-survivors-developer-takes-new-approach-to-monetisation/', description: text, picture: 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'));