{
 "id": 37036,
 "slug": "2018-02-21_snake-97-fernije",
 "url": "https://agents.willem.com/fy/posts/2018-02-21_snake-97-fernije/",
 "source_url": "https://willem.com/fy/2018-02-21_snake-97-fernije/",
 "language": "fy",
 "date": "2018-02-21",
 "published": "2018-02-21T00:00:00+01:00",
 "created": "2025-06-26T22:10:27.779000+02:00",
 "updated": "2026-10-20T09:20:31.699000+02:00",
 "title": "Snake '97 fernije",
 "subtitle": "Oer de útdagings fan it ûntwikkeljen fan in ekstreem populêr spultsje",
 "summary": "In pear jier lyn smiet myn broer in bier oer myn iPhone yn in kroech yn Amsterdam. It earme ding fûn it Nederlânske bier net sa lekker as ik: it gie dea. Wylst ik wachte op in nije tillefoan, brûkte ik in âlde dy't neat koe útsein sms'en, belje en... Snake! Sa waard it idee foar Snake '97 berne en dizze moanne wie it tiid om dat ekstreem populêre spultsje te fernijen.",
 "topics": [
  "Windows",
  "android",
  "creating",
  "creativity",
  "design",
  "game",
  "iOS",
  "iPad",
  "iPhone",
  "programming",
  "retro",
  "server",
  "smartphone",
  "snake",
  "work"
 ],
 "author": {
  "name": "Willem L. Middelkoop",
  "url": "https://willem.com"
 },
 "provenance": {
  "kind": "model",
  "method": "Claude Sonnet, two passes (translation, then proofreading) against a glossary and the Fryske Akademy Foarkarswurdlist (hunspell fy_NL); official 2015 spelling",
  "date": "2026-10-20",
  "reviewed_by_native_reader": false,
  "language": "fy",
  "source_language": "en"
 },
 "translations": [
  {
   "language": "en",
   "title": "Updating Snake '97",
   "url": "https://agents.willem.com/en/posts/2018-02-21_updating-snake-97/",
   "source_url": "https://willem.com/en/2018-02-21_updating-snake-97/"
  },
  {
   "language": "nl",
   "title": "Snake '97 Updaten",
   "url": "https://agents.willem.com/nl/posts/2018-02-21_snake-97-updaten/",
   "source_url": "https://willem.com/nl/2018-02-21_snake-97-updaten/"
  },
  {
   "language": "de",
   "title": "Snake '97 aktualisieren",
   "url": "https://agents.willem.com/de/posts/2018-02-21_snake-97-aktualisieren/",
   "source_url": "https://willem.com/de/2018-02-21_snake-97-aktualisieren/"
  },
  {
   "language": "es",
   "title": "Actualizando Snake '97",
   "url": "https://agents.willem.com/es/posts/2018-02-21_actualizando-snake-97/",
   "source_url": "https://willem.com/es/2018-02-21_actualizando-snake-97/"
  },
  {
   "language": "fr",
   "title": "Mettre à jour Snake '97",
   "url": "https://agents.willem.com/fr/posts/2018-02-21_mettre-a-jour-snake-97/",
   "source_url": "https://willem.com/fr/2018-02-21_mettre-a-jour-snake-97/"
  },
  {
   "language": "it",
   "title": "Aggiornare Snake '97",
   "url": "https://agents.willem.com/it/posts/2018-02-21_aggiornare-snake-97/",
   "source_url": "https://willem.com/it/2018-02-21_aggiornare-snake-97/"
  },
  {
   "language": "pt",
   "title": "Atualizar o Snake '97",
   "url": "https://agents.willem.com/pt/posts/2018-02-21_atualizar-o-snake-97/",
   "source_url": "https://willem.com/pt/2018-02-21_atualizar-o-snake-97/"
  },
  {
   "language": "pap",
   "title": "Aktualisá Snake '97",
   "url": "https://agents.willem.com/pap/posts/2018-02-21_aktualisa-snake-97/",
   "source_url": "https://willem.com/pap/2018-02-21_aktualisa-snake-97/"
  }
 ],
 "image": "https://willem.com/global/images/da5f22919df3.webp",
 "image_width": 2560,
 "images": [
  {
   "url": "https://willem.com/global/images/06e55a3e0198.webp",
   "description": "Café 't Pakhuis yn Amsterdam, dêr't Snake '97 \"útfûn\" waard",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-1.jpg"
  },
  {
   "url": "https://willem.com/global/images/ee992b73bb44.webp",
   "description": "Snake '97 op in iPhone X, dat der útsjocht en oanfielt as it retro-tillefoanspultsje út de jierren njoggentich",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-2.jpg"
  },
  {
   "url": "https://willem.com/global/images/13f8f2dd6fc1.webp",
   "description": "Snake '97 yn de top fan de ranglisten tegearre mei Angry Birds en WhatsApp",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-3.jpg"
  },
  {
   "url": "https://willem.com/global/images/87b0ccd8c5d9.webp",
   "description": "iPhone 4, ah, swiete ûntwikkelersoantinkens fan doe't ien (lytse) maat foar elkenien paste...",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-4.jpg"
  },
  {
   "url": "https://willem.com/global/images/3da50637eff4.webp",
   "description": "Prototype fan Snake '97 op ferskillende apparaten",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-5.jpg"
  },
  {
   "url": "https://willem.com/global/images/8d20b82f1396.webp",
   "description": "De nije game engine programmearje en testen op in HMD Nokia 2 mei Android",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-6.jpg"
  },
  {
   "url": "https://willem.com/global/images/37052d0f8036.webp",
   "description": "Deselde 3310? Sjoch goed en fyn de ferskillen tusken de iPhone SE en de iPhone X",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-7.jpg"
  },
  {
   "url": "https://willem.com/global/images/98f47b70cb4c.webp",
   "description": "Wiidskermgameplay is no mooglik troch de nije responsive grafyk",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-8.jpg"
  },
  {
   "url": "https://willem.com/global/images/6848b7ac140f.webp",
   "description": "Snake '97 as macOS-buroblêdapp, mooglik makke troch de skaalbere grafyk",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-9.jpg"
  },
  {
   "url": "https://willem.com/global/images/a5e27801afbd.webp",
   "description": "Ferskillen yn spultsjesnelheid analysearje mei slow-motionfideo",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-10.jpg"
  },
  {
   "url": "https://willem.com/global/images/6251dc574a72.webp",
   "description": "De echte koade fan Snake '97 dy't de ôfstân útrekkent mei de stelling fan Pythagoras",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-11.jpg"
  },
  {
   "url": "https://willem.com/global/images/07b9c2f3b1a4.webp",
   "description": "Snake bestjoere mei in Super Nintendo-gamepad is geweldich (mei in SuperSmart-joy USB-oansluting)",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-12.jpg"
  },
  {
   "url": "https://willem.com/global/images/fa191d607fbb.webp",
   "description": "In trúk dêr't de oarspronklike Snake net oan tocht: it spultsje bestjoere mei in Bluetooth DualShock PlayStation-controller mei in analoge thumbstick",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-13.jpg"
  },
  {
   "url": "https://willem.com/global/images/12934c0ebe67.webp",
   "description": "UX-design foar in ynternasjonaal publyk. Ynterfaces sûnder wurden ûntwerpe is dreech!",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-14.jpg"
  },
  {
   "url": "https://willem.com/global/images/37c761847d86.webp",
   "description": "Wrâldkampioen fan Snake '97, mar net foar lang...",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-15.jpg"
  },
  {
   "url": "https://willem.com/global/images/d31a2077c5a4.webp",
   "description": "Sa sjocht de cloud der út, leave jonges en famkes. ",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-16.jpg"
  },
  {
   "url": "https://willem.com/global/images/5234dd3dd7ae.webp",
   "description": "Snake '97 as fergees te downloaden foar iOS, Android, macOS, Windows en ChromeOS",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_37036_images-17.jpg"
  }
 ],
 "text": "Snake '97\nOarspronklik haw ik it Snake-spultsje yn 2011 programmearre foar iOS. It hat my sa'n twa wiken kosten om in wurkjend prototype te meitsjen dat der útseach en oanfielde as de echte klassiker út de jierren njoggentich. Myn oare broer holp my mei de grafyk troch skerpe makro's te meitsjen fan myn âlde tillefoan (it bliuwt in nuvere gedachte dat safolle fan jimme in kopy fan myn tillefoan yn de bûse hawwe).\nIt waard oppakt troch guon grutte blogs (https://snake97.com/press/) en dêrtroch stie Snake '97 oeral yn de wrâld boppe yn de ranglisten. Hjoed de dei wurdt it oeral yn de wrâld spile, it is oerset yn 53 talen en it is der foar iOS, Android, Windows, ChromeOS en macOS.\nFernijing nedich\nYn 2011 wie der mar ien iPhone, de iPhone 4. As ûntwikkeler koest Android rêstich negearje en Windows Phone wie noch net iens útfûn. It libben wie sa moai as in (loaie) ûntwikkeler mar winskje koe: mar ien skermgrutte.\nSnel foarút nei hjoed: Apple ferkeapet no 8 iPhones en der binne miljoenen en miljoenen Android-apparaten mei allegearre ferskillende skermgruttes, prosessors, ûnthâld en softwareferzjes. It is in understatement om dit in útdaging te neamen...\nOm it nocht yn Snake '97 te hâlden moast ik de game engine yn de kearn fernije. Ik moast de grafyk op ien of oare manier passend meitsje foar elk skerm yn de wrâld en rekken hâlde mei de ferskillen yn rekenkrêft en ûnthâld....\nIen game engine om se allegear te hearskjen\nDe oarspronklike ferzjes fan it spultsje hiene allegearre in eigen engine. Ien foar iOS, ien foar Android, ien foar Windows ensafuorthinne. Doe't ik Snake 2k (de Snake II-farianten fan it spultsje) útbrocht, haw ik gewoan wer in set game engines tafoege. Yn totaal haw ik 6 ferskillende Snake-game engines programmearre yn Objective-C (iOS), Java (Android) en C# (Windows). Dizze engines draaiende hâlde op nije apparaten mei oare skermgruttes, prosessors en ûnthâldkonfiguraasjes waard hieltyd lestiger.\nMar dizze moanne haw ik de knoop trochhakt, en hoe. Ik haw noch in Snake-game engine ûntworpen en boud. Mar dizze moast alle foargeanden ferfange. Hy moat draaie op iOS, Android en Windows. Ik woe in engine dy't klear wie foar de takomst, foar elk skerm en elke soarte fan ynput (toetseboerd, touch, pencil, gamepad, joystick, neam it mar op).\nHTML5 Rocks\nIt web hat de native app-technology ynhelle. Der binne in soad nije API's yntrodusearre dy't rike ynteraktive ûnderfinings mooglik meitsje op in protte ferskillende apparaten. Ik frege my ôf hoe dreech it wêze soe om Snake '97 op webtechnology te litten wurkje. Der is mar ien manier om dat út te finen, dus ik bin begûn.\nResponsive grafyk\nEarst bin ik begûn mei it bouwen fan de grafyske engine op basis fan HTML5 canvas en in responsive skaalsysteem dat ik ûntwurpen hie foar de Android-ferzje fan Snake '97. Yn prinsipe mjit de engine de beskikbere skermgrutte, de oriïntaasje en de pikseldichtheid. It rekkent heechsteande foto's automatysk om, sadat se by dyn skerm passe.\nDe nije grafyske engine hâldt sels rekken mei nuvere dingen lykas de notch fan de iPhone X. Dit giet allegearre yn in split sekonde. Ik haw de nije grafyske engine ek sa ûntworpen dat hy reagearret op feroaringen yn skermgrutte. No kin it spultsje spile wurde yn portret of lânskip, yn in finster of folslein skerm (of splitskerm as it op in iPad is).\nFerskillen yn rekenkrêft\nTinkst dat in ienfâldich spultsje him gjin soargen hoecht te meitsjen oer rekenkrêft? Fout! Yn in spultsje as Snake is timing essinsjeel. Minsken spylje it spultsje op \"spiergeheugen\" en tippe op it touchscreen sûnder oer de losse bewegingen nei te tinken.\nDe game engine moat foarsisber wêze, hy moat konstant draaie. Mar fierders moat de ûnderfining gelyk wêze, of do no op in âld Android-apparaat sitst of op in krêftpatser mei 6 kearnen lykas de iPhone X.\nIk haw de hegesnelheidsvideokamera fan de iPad Pro brûkt om Snake-gameplay yn slow motion fêst te lizzen. Mei de fideo koe ik ferskillen yn snelheid sjen, frame foar frame. Dat late ta in yntern benchmarksysteem (mei timers, dy't millisekonden telle) dat de snelheid fan it spultsje automatysk oanpast en krekt ôfstimt op dyn apparaat.\nBestjoering: Touch, toetseboerd, Pencil, Gamepad\nSpilers bestjoere de Snake mei de retro-knoppen (it âlde tillefoantoetseboerd). De oarspronklike iOS-ferzje fan it spultsje brûkte fêste trochsichtige UIButtons dy't ik oer de foto's fan de âlde tillefoan pleatst hie. In ienfâldige en effektive start.\nSpitigernôch hiene de knoppen fan iOS wat lag (dat foar ûnfoarsisbere fertraging yn ynput soarge) en skaalden fansels net nei ferskillende skermgruttes. Ik haw letterlik foar elke nije iPhone dy't Apple de lêste jierren útbrocht hat nije koördinaten hardcode.... gjin noflik wurk.\nDe nije game engine brûkt in trúk dy't ik foar de Android-ferzje ûntwikkele haw: dynamysk pleatste firtuele knoppen. Mei de skaaljinformaasje dy't de grafyske engine útrekkent, hâld ik dynamysk in matriks fan X- en Y-koördinaten by dy't by de firtuele knoppen hearre. As in spiler it skerm oanrekket, rekkent de engine mei wiskunde út wat de tichtstby lizzende knop is: de stelling fan Pythagoras.\nDit wurket as in tierelier en makket effektyf it hiele skerm ta in knop. It spultsje is op dizze manier folle moaier om te spyljen. Neist touch haw ik stipe foar it toetseboerd tafoege, sadat ek minsken sûnder touchscreen Snake spylje kinne.\nDoe't ik dwaande wie mei de bestjoering ûntdekte ik noch mear HTML5-moaiens: de GamePad API. Dêrmei kinne programmeurs lykas ik gamepads, joysticks en oare ynputapparaten stypje dy't fia USB of Bluetooth ferbûn binne.\nFerskillende gamepads stypje is útdaagjend, mar dochs grappich. Ik haw der perfoarst in hiele dei oan kwytrekke wylst ik oan it \"testen\" wie... myn feardigens ferfine mei de prachtige SNES-gamepad en de lekkere analoge stick fan de DualShock-controller. (\"Sorry skat, ik bin hjir oan it wurk...\")\nYnternasjonalisaasje\nAs do dit lêst, begryp datst wierskynlik Ingelsk. Mar in grut part fan it Snake '97-publyk is net Ingelsktalich. Der binne sels spilers dy't mear as 30 ferskillende talen brûke. Fan Spaansk oant Russysk, fan Arabysk oant Hebrieusk, fan Dútsk oant Japansk. Neam it mar op, Snake hat it.\nIn ynterface ûntwerpe dy't op tekst rint is útdaagjend as do de hiele wrâld dwaan wolst. Ikoanen binne ek net perfekt (in ôfbylding kin yn in oare kultuer wat oars betsjutte). As UX-ûntwerper moatst nei konsepten sykje dy't breed brûkt wurde oer de hiele wrâld. Foar Snake haw ik ikoanen brûkt fan in klok, in snelheidsmeter, in lúdspreker en in trofee. Dizze ikoanen binne oeral yn de wrâld gewoan en binne krekt dêrom keazen.\nDe app-beskriuwing bestiet út tekst dy't ik troch in profesjonele oersetstjinst oersette litten haw. Guon oare útjouwers fertrouwe op Google Translate, mar ik wit dat dat tryst resultaat jout.\nWrâldwide ranglist\nOp 'e jierren njoggentich krigest in soad strjitrespekt as do in moaie skoare yn Snake helle hiest. Yn de oarspronklike ferzjes fan Snake '97 hiest allinnich dyn eigen heechste skoare om te ferslaan en op iOS koest dyn skoare nei GameCenter uploade.\nFoar de nije ferzje woe ik in wiidner berik, mei in \"wrâldwide ranglist\". It is it nije yntegreare leaderboard dat dyn spultsje direkt rangskikt en skoares fan minsken fan oeral yn de wrâld fergeliket. Der binne trije ranglisten: altyd, 24 oeren en it lêste oere.\nDe heechste skoares wurde ferwurke troch in machtige 48-kearns Intel XEON-server mei in bulte ûnthâld. Hy draait Debian GNU/Linux, MariaDB, NGINX en NodeJS. Yn de drokke oeren ferwurket hy mear as 10 spultsjeskoares yn de sekonde. De serveropset is in eigen blogberjocht weardich dat ik letter skriuwe sil, hâld dit blog dus yn de gaten as big data dyn ding is.\nDownload no\nDer is mar ien manier om út te finen oft myn wurk wat wie: probearje it sels.\n- Android (https://play.google.com/store/apps/details?id=com.dsd164.snake97)\n- ChromeOS (https://play.google.com/store/apps/details?id=com.dsd164.snake97)\n- iOS (https://itunes.apple.com/us/app/snake-97-retro-phone-classic/id438052745?mt=8)\n- Mac (https://itunes.apple.com/app/snake-97-retro-phone-classic/id1349761776?mt=12)\n- Windows (https://www.microsoft.com/en-us/store/p/snake-97/9nblggh0ccmr)\n- Web (https://snake97.com)\nLit it my witte as do bugs tsjinkomst, myn kontaktynformaasje fynst do hjir (https://willem.com/).",
 "word_count": 1317,
 "markdown_url": "https://agents.willem.com/fy/posts/2018-02-21_snake-97-fernije/post.md"
}