استمرار درآمدزایی یکی از دغدغههایی است که استودیوهای بازی سازی دارند. خصوصا اگر شیوهی این درآمدزایی Freemium باشد. چرا که باید همواره معیارهایی از قبیل نرخ فعالسازی، نرخ بازگشت و متوسط مقدار خرید را مورد بررسی قرار دهند و در جهت بهبود آنها حرکت کنند. اگرچه جهت این حرکت مشخص است، اما دانستن جایگاه خودشان در این صنعت از طریق این معیارها کمک میکند تا به طور بهینه از منابع در اختیارشان استفاده کنند.
امسال کافهبازار گزارش جالبی از نحوه درآمدزایی و مقایسه معیارهای آن در بازیهای ایرانی و خارجی منتشر کرده است. از این گزارش برای محک زدن خودمان استفاده کردیم تا ببینیم اصطلاحا ما کجای کار هستیم و چه جاهایی باید بیشتر تلاش کنیم. همانطور که حتما میدانید، استودیو تاد در حال حاضر دو بازی فروتکرفت و پرسیتی را با سبک کارتی و شهرسازی در کارنامه خود دارد. در این نوشته قرار است معیارهای درآمدزایی این دو بازی را با توجه به گزارش کافه بازار بررسی کنیم.
ارزش خریدار در طول زمان
اولین معیار مورد بررسی، نشان میدهد که تعداد خریداران بازیهای ایرانی بیشتر از بازیهای خارجی است ولی به لحاظ درآمدی در یک رده قرار دارند. این یعنی در طول زمان، بازیکنهای بازیهای خارجی متوسط خرید بیشتری دارند. این اتفاق احتمالا ناشی از این است که در بازیهای خارجی محتوای بازی برای بازیکنها، نه به صورت یکجا بلکه در طول زمان ارائه میگردد. همین امر باعث میشود بازیکنهای کم حوصله، برای دسترسی زودتر به محتوا، اقدام به خرید کنند. البته حتما این اتفاق دلایلی دیگری هم دارد که به سبک و نوع بازی مرتبط است. رصد این معیار در طول زمان به سازنده کمک میکند تا به ابعاد مختلف آن بیاندیشد.
خُب، دستکشهای کارمان را دستمان کنیم و ببینیم ما در چه وضعیتی هستیم!
برای محاسبه این معیار ابتدا باید عمر خرید هر بازیکن نسبت به اولین خرید خودش را بدست بیاوریم. اولین خرید بازیکن که راحت بدست میآید:
SELECT t.PlayerID, min(t.CreationDate) AS AgeZero FROM Transactions AS t GROUP BY t.PlayerID
حالا بقیه خریدها را با این خرید مقایسه میکنیم و عمر همه تراکنشها را بدست میآوریم:
CREATE VIEW TransactionsOnlyFirst AS SELECT t.*, min(t.CreationDate) AS AgeZero FROM Transactions AS t GROUP BY t.PlayerID SELECT t.ID, t.PlayerID, floor((t.CreationDate - tof.AgeZero) / (24*3600)) AS Age FROM Transactions AS t JOIN TransactionsOnlyFirst AS tof ON t.PlayerID = tof.PlayerID
کافه بازار برای محاسبهی متوسط تعداد خرید بعد از اولین خرید بازههای ۱، ۳، ۷، ۱۴، ۳۰، ۶۰، ۱۲۰، ۱۵۰ و ۱۸۰ روزه را انتخاب کرده است. برای اینکار ابتدا مجموع تعداد خرید هر بازیکن و سپس متوسط آنها را در این بازهها حساب میکنیم:
CREATE VIEW TransactionsWithAge AS SELECT t.*, floor((t.CreationDate - tof.AgeZero) / (24*3600)) AS Age FROM Transactions AS t JOIN TransactionsOnlyFirst AS tof ON t.PlayerID = tof.PlayerID CREATE PROCEDURE PlayersAvgTrCount ( IN DaysPastFirstTransaction INT, OUT AvgTransactionCount DOUBLE ) BEGIN SELECT avg(dummy.TotalTransactionCount) INTO AvgTransactionCount FROM ( SELECT twg.PlayerID, count(1) AS TotalTransactionCount FROM TransactionsWithAge AS twg WHERE twg.Age < DaysPastFirstTransaction GROUP BY twg.PlayerID ) AS dummy; END CREATE PROCEDURE CalcPlayersAvgTrCount() BEGIN SET @i : = 1; WHILE @i <= 10 DO SET @day_string = elt(@i, '1', '3', '7', '14', '30', '60', '90', '120', '150', '180'); SET @day = cast(@day_string AS UNSIGNED); CALL PlayersAvgTrCount(@day, @atc); SET @query = concat ( 'SELECT "', @day_string, '" AS DaysPastFirstTransaction,', IF(@atc = NULL, 0, @atc), ' AS AvgTransactionCount' ); IF @i = 1 THEN SET @allquery : = @query; ELSE SET @allquery : = concat(@allquery, ' UNION ', @query); END IF; SET @i = @i + 1; END WHILE; PREPARE Statement FROM @allquery; EXECUTE Statement; END
دادههای هر دو بازی را بررسی کردیم و در نهایت با توجه به خروجی به دست آمده نمودار زیر را رسم کردیم:
از مقایسه نتیجه با نمودارهای گزارش اصلی نتیجه میگیریم که هر دو بازی در رده بازیهای عالی ایرانی هستند.
این نمودار نشان میدهد که ارزش خریداران این دو بازی با هم فرق دارد. وضعیت فروتکرفت بهتر از پرسیتی است. البته این تفاوت لزوما خبر خوب یا بدی نیست. تفاوتهای زیادی میان پرسیتی و فروتکرفت وجود دارد. تفاوت در سبک، عمر بازی، جامعه هدف و … که هر کدام تاثیر متفاوتی بر این معیار دارند. شاید اگر کافه بازار گزارشی به تفکیک سبک بازیها منتشر کند بتوانیم تحلیل بهتری داشته باشیم.
نرخ تکرار خرید
این معیار انگیزهی خریدار برای خرید دوباره را نشان میدهد. طبق گزارش، انگیزهی بازیکنها در بازیهای خارجی برای خرید دوباره تا ۶۰ روز بعد از اولین خریدشان افزایشی است. این در حالی است که بازیکنهای بازیهای ایرانی بعد از ۳۰ روز انگیزهی خود را برای خرید مجدد از دست میدهند. احتمالا این اتفاق ناشی از پایینتر بودن نرخ بازگشت به بازی یا اصطلاحا ماندگاری بازیکنها در بازیهای ایرانی نسبت به بازیهای خارجی باشد. به نظر میرسد وجود سازوکارهایی مانند جوایز روزانه، چالشهای روزانه و به طور کلی هر فرآیندی که به بازیکن انگیزه بازگشت مجدد به بازی بدهد نرخ تکرار خرید را هم افزایش خواهد داد.
برای محاسبه این معیار هم نیاز به حساب کردن عمر هر تراکنش داریم. بعد از آن باید تعداد خریدارها را در هر طول عمر بشماریم. مثلا تعداد کل افرادی که تراکنشی با عمر ۱ دارند، با عمر ۲ دارند و همین طور الی آخر. در گزارش کافه بازار نرخ تکرار خرید به صورت تجمعی محاسبه شده است. یعنی مثلا نرخ تکرار خرید در روز ۳۰ ام از حاصل تقسیم مجموع تعداد افراد خریداری که دارای تراکنشی با عمر ۱۵ تا ۳۰ روز هستند بر مجموع تعداد افراد خریدار بدست آمده است. به این شکل:
CREATE PROCEDURE TransactionRetention ( IN StartAge INT, IN EndAge INT, OUT TotalPaidPlayerCount INT ) BEGIN SELECT sum(dummy.PaidPlayerCount) INTO TotalPaidPlayerCount FROM ( SELECT twg.Age, count(DISTINCT twg.PlayerID) AS PaidPlayerCount FROM TransactionsWithAge AS twg GROUP BY twg.Age ) AS dummy WHERE dummy.Age >= StartAge AND dummy.Age <= EndAge; END CREATE PROCEDURE CalcTransactionRetention() BEGIN SET @i : = 1; SET @TotalPaidPlayers : = 0; WHILE @i <= 11 DO SET @prev_day : = @i - 1; IF @i > 2 THEN SET @day_string = elt(@i - 1, '0', '1', '3', '7', '14', '30', '60', '90', '120', '150', '180'); SET @prev_day = cast(@day_string AS UNSIGNED); SET @prev_day = @prev_day + 1; END IF; SET @day_string = elt(@i, '0', '1', '3', '7', '14', '30', '60', '90', '120', '150', '180'); SET @day = cast(@day_string AS UNSIGNED); CALL TransactionRetention(@prev_day, @day, @pc); IF @i = 1 THEN SET @TotalPaidPlayers : = IF(@pc = NULL, 0, @pc); ELSE SET @PaidPlayerRate : = @pc*100 / @TotalPaidPlayers; SET @query = concat ( 'SELECT "', @day_string, '" AS DaysPastFirstTransaction,', IF(@PaidPlayerRate = NULL, 0, @PaidPlayerRate), ' AS PaidPlayerRate' ); IF @i = 2 THEN SET @allquery : = @query; ELSE SET @allquery : = concat(@allquery, ' UNION ', @query); END IF; END IF; SET @i = @i + 1; END WHILE; PREPARE Statement FROM @allquery; EXECUTE Statement; END
نمودار حاصل از دادههای هر دو بازی را اینطور رسم کردیم:
از مقایسه این نمودار با گزارش کافه بازار متوجه میشویم که فروتکرفت در رده بازیهای عالی ایرانی و پرسیتی در بین بازیهای عالی خارجی است. همانطور که مشخص است بازیکنهای فروتکرفت از روز ۳۰ ام به بعد انگیزه خود را برای خرید مجدد از دست میدهند و بازیکنهای پرسیتی تا روز ۶۰ ام همچنان متمایل به خرید مجدد هستند.
در انتها از شما دعوت میکنیم تا اگر بازی ساز هستید، این معیارها را برای بازی خود محاسبه و منتشر کنید تا بتوانیم دادههای بیشتری برای محکزنی در سبکهای مختلف این صنعت بدست بیاوریم.