
Berita / ONI Games
Cara kami membuat situs game 300 halaman dalam 16 bahasa dengan satu skrip Python
Tanpa CMS dan tanpa framework: satu file Python menulis setiap halaman onirealms.com dalam 16 bahasa, dan sebuah Cloudflare Worker kecil menyajikannya.
Kami membuat game gratis untuk Android: dua RPG idle, sebuah puzzle balok, dan tycoon pabrik robot. Masing-masing butuh halaman sendiri, dan setiap halaman harus ada di semua bahasa tempat game itu dimainkan. Totalnya 16 versi: Inggris, Jerman, Spanyol (Spanyol dan Amerika Latin), Prancis, Kroasia, Indonesia, Italia, Jepang, Korea, Portugis (Brasil dan Portugal), Rusia, Slovenia, Turki, dan Mandarin Tradisional.
CMS terasa terlalu berat untuk situs yang berubah setiap kali sebuah game berubah. Jadi seluruh onirealms.com ditulis oleh satu skrip Python sebagai file statis biasa, dengan sebuah Cloudflare Worker kecil di depannya.
Bentuknya
Skripnya, site.py, adalah satu file sekitar 3.200 baris. Di dalamnya ada dictionary GAMES dengan satu entri per game: nama paket, tema, key art, pita gambar di antara bagian, genre, rating usia, dan apakah game sudah rilis. Semua yang lain diturunkan dari situ.
Teksnya disimpan dalam dictionary Python biasa per bahasa, satu modul per bagian: beranda, setiap game, FAQ, judul dan deskripsi SEO, panduan, dan berita. Halaman game adalah fungsi yang menerima game dan bahasa lalu mengembalikan HTML. Empat game dalam 16 bahasa, ditambah beranda, berita, panduan, daftar cyborg, kebijakan privasi, dan press kit, totalnya lebih dari 300 halaman. Satu build penuh memakan waktu sekitar 26 detik.

Pada akhirnya, tiga hal ternyata lebih penting daripada generatornya sendiri.
1. hreflang harus lengkap, kalau tidak percuma
Setiap halaman menautkan ke semua versi bahasanya yang lain, termasuk dirinya sendiri, ditambah x-default. Sitemap mengulang grup yang sama. Kalau satu saja hilang, mesin pencari menganggap halaman-halaman itu sebagai duplikat yang tidak saling terkait. Skrip membangun tautan ini dari daftar bahasa yang sama dengan yang dipakai untuk menulis halaman, jadi keduanya tidak mungkin tidak sinkron.
2. Redirect bahasa tidak boleh menjebak crawler
Worker mengarahkan pengunjung yang masuk ke halaman bahasa Inggris ke halaman yang sama dalam bahasa browser mereka. Bagus untuk pemain, tapi buruk untuk pencarian kalau dibuat asal-asalan, karena crawler hanya akan melihat redirect-nya. Karena itu redirect dilewati untuk bot, dilewati jika pengunjung datang dari halaman lain di situs ini (mereka sengaja memilih bahasa Inggris), dilewati jika alamat berisi ?lang=, dan tidak memakai cookie. Ini adalah 302 dengan Vary: Accept-Language, bukan 301.
3. Aset immutable butuh nama file baru
Semua yang ada di /assets/ dikirim dengan Cache-Control: max-age=31536000, immutable. Itu pengaturan yang tepat, sampai kamu mengganti gambar dan tidak ada yang melihatnya selama setahun. Karena itu skrip gambar menulis nama file baru untuk setiap versi baru, bukan menimpa yang lama.

Bagian kecil yang sangat berguna
- Kode QR di setiap halaman game, dibuat saat build. Kode itu mengarah ke tautan pendek
/go/<game>di Worker, yang meneruskan ke Google Play dengan tag referrer, sehingga Play Console menampilkan instalasi per sumber. - Analitik yang menghormati persetujuan. Tag dimulai dengan semua jenis penyimpanan ditolak (consent mode v2) dan baru aktif setelah pengunjung menyetujui di banner cookie.
- IndexNow setelah setiap deploy, agar Bing dan Yandex melihat perubahan di hari yang sama.
- Feed RSS untuk setiap bahasa, agar pembaca feed dan agregator menangkap berita.
- Press kit berupa file ZIP, dikemas oleh skrip dari gambar game.
Yang akan kami lakukan secara berbeda
Tulis daftar bahasa dan tabel teks sebelum HTML, bukan sesudahnya. Memasukkan 16 bahasa ke markup yang dibuat untuk bahasa Inggris adalah bagian paling lambat dari seluruh proyek: panjang baris, font cadangan untuk Jepang, Korea, dan Mandarin, serta font cadangan Sirilik untuk Rusia, masing-masing butuh putaran kerja sendiri.
Game kami adalah Idle Ronin: Cyber RPG, Idle Summoner: Pixel RPG, Block Brain dan Idle AI Factory: Robot Tycoon, semuanya gratis di Google Play.







