{"id":33533,"date":"2025-11-04T03:31:09","date_gmt":"2025-11-04T00:31:09","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/"},"modified":"2025-11-04T03:31:09","modified_gmt":"2025-11-04T00:31:09","slug":"html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/","title":{"rendered":"HTML5 Oyun Merkezi: JavaScript ile Duyarl\u0131 ve Basit Bir Oyun Hub&#8217;\u0131 \u0130n\u015fa Edin"},"content":{"rendered":"<p><body><\/p>\n<p>Kendi HTML5 oyun merkezinizi olu\u015fturarak oyunlar\u0131n\u0131z\u0131 tek bir \u00e7at\u0131 alt\u0131nda toplamak, hem portf\u00f6y\u00fcn\u00fcz\u00fc g\u00fc\u00e7lendirecek hem de geli\u015ftirme becerilerinizi sergilemenin e\u011flenceli bir yolu olacakt\u0131r. Bu makalede, JavaScript ve duyarl\u0131 tasar\u0131m prensiplerini kullanarak s\u0131f\u0131rdan basit bir oyun hub&#8217;\u0131 nas\u0131l in\u015fa edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.<\/p>\n<p>Geli\u015fen web teknolojileri sayesinde art\u0131k taray\u0131c\u0131 tabanl\u0131 oyunlar, masa\u00fcst\u00fc uygulamalar\u0131 kadar zengin ve etkile\u015fimli deneyimler sunabiliyor. Bu noktada, kendi HTML5 oyun merkezinizi olu\u015fturmak, geli\u015ftirdi\u011finiz veya favori g\u00f6rd\u00fc\u011f\u00fcn\u00fcz oyunlar\u0131 d\u00fczenli bir \u015fekilde sergilemenizi sa\u011flayan ki\u015fisel bir platform anlam\u0131na gelir. Peki, neden bu yola ba\u015fvurmal\u0131y\u0131z ve bu platform bize ne gibi avantajlar sunar?<\/p>\n<p>\u00d6ncelikle, bir HTML5 oyun merkezi, t\u0131pk\u0131 bir e-ticaret sitesinin \u00fcr\u00fcnleri sergiledi\u011fi gibi, oyunlar\u0131n\u0131z\u0131 kategorize edebilece\u011finiz, detaylar\u0131n\u0131 g\u00f6sterebilece\u011finiz ve do\u011frudan ba\u015flatabilece\u011finiz interaktif bir vitrindir. Bu, \u00f6zellikle ba\u011f\u0131ms\u0131z geli\u015ftiriciler veya hobi ama\u00e7l\u0131 kod yazanlar i\u00e7in b\u00fcy\u00fck bir f\u0131rsatt\u0131r. Geli\u015ftirdi\u011finiz k\u00fc\u00e7\u00fck oyun demolar\u0131n\u0131, prototipleri veya bitmi\u015f projeleri d\u00fczenli bir aray\u00fczle sunarak potansiyel i\u015fverenlere, i\u015f ortaklar\u0131na veya sadece oyun tutkunlar\u0131na kolayca eri\u015filebilir k\u0131lars\u0131n\u0131z. Bu durum, bir portf\u00f6y sitesi niteli\u011fi ta\u015f\u0131yarak yeteneklerinizi pratik bir \u00f6rnekle kan\u0131tlaman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, bir oyun geli\u015ftirme ajans\u0131 i\u00e7in i\u015f ba\u015fvurusu yapt\u0131\u011f\u0131n\u0131zda, s\u00f6zl\u00fc olarak yeteneklerinizi anlatmak yerine, canl\u0131 bir oyun merkezini referans g\u00f6stermek \u00e7ok daha etkili olacakt\u0131r. Ger\u00e7ek d\u00fcnya senaryolar\u0131ndan biri olarak, k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli bir oyun st\u00fcdyosu, demo oyunlar\u0131n\u0131 m\u00fc\u015fterilerine g\u00f6stermek ve geri bildirim almak i\u00e7in b\u00f6yle bir hub kullanabilir; bu da proje d\u00f6ng\u00fcs\u00fcn\u00fc h\u0131zland\u0131r\u0131r ve ileti\u015fimi kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>Kendi oyun merkezinizi kurman\u0131n bir di\u011fer \u00f6nemli nedeni ise \u00f6\u011frenme s\u00fcrecine yapt\u0131\u011f\u0131 katk\u0131d\u0131r. Bu proje, sadece oyun geli\u015ftirme de\u011fil, ayn\u0131 zamanda modern web geli\u015ftirme tekniklerini (HTML, CSS, JavaScript) peki\u015ftirmeniz i\u00e7in harika bir f\u0131rsatt\u0131r. Duyarl\u0131 tasar\u0131m, DOM manip\u00fclasyonu, olay dinleyicileri ve belki de yerel depolama gibi konular\u0131 pratik yaparak derinlemesine kavrayacaks\u0131n\u0131z. Her bir oyun kart\u0131n\u0131 olu\u015ftururken veya filtreleme mekanizmas\u0131n\u0131 entegre ederken, bir yandan kodlama becerilerinizi geli\u015ftirirken, di\u011fer yandan da kullan\u0131c\u0131 deneyimi odakl\u0131 d\u00fc\u015f\u00fcnmeyi \u00f6\u011freneceksiniz. K\u0131sacas\u0131, bu proje sadece bir \u00e7\u0131kt\u0131 de\u011fil, ayn\u0131 zamanda de\u011ferli bir \u00f6\u011frenme arac\u0131d\u0131r. Bu sayede, gelecekte daha karma\u015f\u0131k web uygulamalar\u0131 geli\u015ftirmek i\u00e7in sa\u011flam bir temel olu\u015fturabilirsiniz. Ayr\u0131ca, farkl\u0131 oyun motorlar\u0131ndan veya k\u00fct\u00fcphanelerden (Phaser, Three.js, vb.) gelen oyunlar\u0131 tek bir \u00e7at\u0131 alt\u0131nda birle\u015ftirerek, farkl\u0131 teknolojiler aras\u0131ndaki entegrasyonu da deneyimleme \u015fans\u0131n\u0131z olur.<\/p>\n<p>Son olarak, bir oyun merkezi, oyun tutkunlar\u0131 i\u00e7in ki\u015fiselle\u015ftirilmi\u015f bir deneyim sunar. Kendi se\u00e7ti\u011finiz, be\u011fendi\u011finiz veya geli\u015ftirdi\u011finiz oyunlar\u0131 bir araya getirerek, kendi k\u00fcrat\u00f6rl\u00fc\u011f\u00fcn\u00fczde bir oyun k\u00fct\u00fcphanesi olu\u015fturabilirsiniz. Bu, oyunlar\u0131 arkada\u015flar\u0131n\u0131zla veya toplulukla payla\u015fmak i\u00e7in merkezi bir nokta sa\u011flar. B\u00f6ylece, favori oyunlar\u0131n\u0131z\u0131 farkl\u0131 platformlarda aramak yerine, her \u015feye tek bir yerden eri\u015febilirsiniz. T\u00fcm bu nedenler g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, kendi HTML5 oyun merkezinizi in\u015fa etmek, hem ki\u015fisel geli\u015fiminiz hem de dijital varl\u0131\u011f\u0131n\u0131z i\u00e7in olduk\u00e7a de\u011ferli bir ad\u0131m olacakt\u0131r.<\/p>\n<h2>Oyun Merkezinizin \u0130skeletini Olu\u015fturmak: HTML Yap\u0131s\u0131 Nas\u0131l Kurulur?<\/h2>\n<p>Bir HTML5 oyun merkezinin temelini atmak, sa\u011flam ve semantik bir HTML yap\u0131s\u0131 olu\u015fturmakla ba\u015flar. Bu iskelet, i\u00e7eri\u011fin d\u00fczenini belirleyecek ve sonraki ad\u0131mlarda CSS ile \u015fekillendirme ve JavaScript ile etkile\u015fim ekleme s\u00fcre\u00e7lerini kolayla\u015ft\u0131racakt\u0131r. Amac\u0131m\u0131z, hem taray\u0131c\u0131lar hem de arama motorlar\u0131 i\u00e7in anlaml\u0131, eri\u015filebilir ve kolayca anla\u015f\u0131labilir bir yap\u0131 kurmakt\u0131r.<\/p>\n<p>\u0130lk olarak, her modern web sayfas\u0131n\u0131n olmazsa olmaz\u0131 olan temel HTML5 belge yap\u0131s\u0131n\u0131 olu\u015fturmal\u0131y\u0131z. Bu, <code><!DOCTYPE html><\/code>, <code><html><\/code>, <code><head><\/code> ve <code><body><\/code> etiketlerini i\u00e7erir. <code><head><\/code> etiketi i\u00e7inde sayfan\u0131n meta bilgilerini, ba\u015fl\u0131\u011f\u0131n\u0131 ve CSS dosyalar\u0131m\u0131z\u0131n ba\u011flant\u0131s\u0131n\u0131 tan\u0131mlayaca\u011f\u0131z. <code><title><\/code> etiketi, taray\u0131c\u0131 sekmesinde g\u00f6r\u00fcnen metni belirleyecektir. UTF-8 karakter setini belirtmek ve duyarl\u0131 tasar\u0131m i\u00e7in viewport ayarlar\u0131n\u0131 yapmak da ba\u015flang\u0131\u00e7 i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<pre><code>\n<!DOCTYPE html>\n<html lang=\"tr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Kendi HTML5 Oyun Merkeziniz<\/title>\n    <link rel=\"stylesheet\" href=\"style.css\">\n<\/head>\n<body>\n    <!-- \u0130\u00e7erik buraya gelecek -->\n    <script src=\"script.js\" defer><\/script>\n<\/body>\n<\/html>\n<\/pre>\n<p><\/code><\/p>\n<p>Ard\u0131ndan, sayfa i\u00e7eri\u011fini mant\u0131ksal b\u00f6l\u00fcmlere ay\u0131rmak i\u00e7in semantik HTML5 etiketlerini kullanaca\u011f\u0131z. Bir oyun merkezinde genellikle bir \u00fcst k\u0131s\u0131m (ba\u015fl\u0131k, arama \u00e7ubu\u011fu), oyunlar\u0131n listelendi\u011fi ana b\u00f6l\u00fcm ve bir alt bilgi bulunur. Bu yap\u0131 i\u00e7in <code><\/p>\n<header><\/code>, <code><main><\/code> ve <code><\/p>\n<footer><\/code> etiketleri idealdir. <code><\/p>\n<header><\/code> i\u00e7inde, oyun merkezinizin ad\u0131n\u0131 i\u00e7eren bir <code><\/p>\n<h1><\/code> (ana sayfa ba\u015fl\u0131\u011f\u0131) veya bu makalenin \u00f6zel kurallar\u0131na uygun olarak bir <code><\/p>\n<h2><\/code> etiketi kullanabiliriz. Ayr\u0131ca, oyunlar\u0131 aramak veya filtrelemek i\u00e7in bir <code><input><\/code> alan\u0131 ekleyebiliriz.<\/p>\n<pre><code>\n<header class=\"site-header\">\n    <div class=\"container\">\n        <h2>Benim Oyun Hub'\u0131m<\/h2>\n        <input type=\"text\" id=\"searchInput\" placeholder=\"Oyun ara...\" aria-label=\"Oyun arama \u00e7ubu\u011fu\">\n    <\/div>\n<\/header>\n<main class=\"game-list-container\">\n    <div class=\"container\">\n        <section id=\"gameList\" class=\"game-grid\">\n            <!-- Oyun kartlar\u0131 JavaScript ile buraya eklenecek -->\n        <\/section>\n    <\/div>\n<\/main>\n<footer class=\"site-footer\">\n    <div class=\"container\">\n        <p>&copy; 2023 Benim Oyun Hub'\u0131m. T\u00fcm Haklar\u0131 Sakl\u0131d\u0131r.<\/p>\n    <\/div>\n<\/footer>\n<\/pre>\n<p><\/code><\/p>\n<p>Oyun kartlar\u0131 i\u00e7in ise semantik bir yakla\u015f\u0131m benimsemeliyiz. Her bir oyun kart\u0131, oyun hakk\u0131nda bilgi (isim, a\u00e7\u0131klama, g\u00f6rsel) ve bir ba\u015flatma d\u00fc\u011fmesi i\u00e7erecektir. Bu yap\u0131y\u0131 olu\u015fturmak i\u00e7in <code><\/p>\n<article><\/code> etiketi uygun bir se\u00e7imdir, \u00e7\u00fcnk\u00fc ba\u011f\u0131ms\u0131z ve kendi ba\u015f\u0131na anlam ifade eden bir i\u00e7erik par\u00e7as\u0131n\u0131 temsil eder. <code><\/p>\n<figure><\/code> ve <code><figcaption><\/code> etiketlerini kullanarak oyun g\u00f6rselini ve ba\u015fl\u0131\u011f\u0131n\u0131 ili\u015fkilendirebiliriz. Bu, eri\u015filebilirlik a\u00e7\u0131s\u0131ndan da \u00f6nemlidir.<\/p>\n<pre><code>\n<!-- \u00d6rnek bir oyun kart\u0131 yap\u0131s\u0131 (JavaScript ile \u00e7o\u011falt\u0131lacak) -->\n<article class=\"game-card\" data-game-id=\"game1\">\n    <figure class=\"game-thumbnail\">\n        <img decoding=\"async\" src=\"assets\/game1-thumbnail.jpg\" alt=\"Oyun Ad\u0131 1 Resmi\" loading=\"lazy\">\n        <figcaption>Oyun Ad\u0131 1<\/figcaption>\n    <\/figure>\n    <div class=\"game-info\">\n        <p>Bu, harika bir beceri oyunudur. Reflekslerinizi test edin!<\/p>\n        <button class=\"play-button\" data-game-path=\"games\/game1\/index.html\">Oyna<\/button>\n    <\/div>\n<\/article>\n<\/pre>\n<p><\/code><\/p>\n<p>Bu semantik yap\u0131, sadece g\u00f6rsel olarak d\u00fczenli bir sayfa sunmakla kalmaz, ayn\u0131 zamanda web standartlar\u0131na uygunluk, SEO performans\u0131n\u0131n art\u0131r\u0131lmas\u0131 ve ekran okuyucular gibi yard\u0131mc\u0131 teknolojiler i\u00e7in daha iyi eri\u015filebilirlik sa\u011flar. Her bir oyun kart\u0131, JavaScript taraf\u0131ndan dinamik olarak olu\u015fturulacak ve ana <code><\/p>\n<section id=\"gameList\"><\/code> i\u00e7ine yerle\u015ftirilecektir. Bu iskelet \u00fczerine in\u015fa edece\u011fimiz CSS ve JavaScript ile oyun merkezimiz canlanacak ve i\u015flevsel hale gelecektir.<\/p>\n<h2>Duyarl\u0131 Tasar\u0131m Harikalar\u0131: CSS ile Oyun Merkezini Nas\u0131l Bi\u00e7imlendiririz?<\/h2>\n<p>Modern bir web uygulamas\u0131n\u0131n olmazsa olmaz\u0131 duyarl\u0131 tasar\u0131md\u0131r. Kendi HTML5 oyun merkezinizi in\u015fa ederken, kullan\u0131c\u0131lar\u0131n farkl\u0131 cihaz boyutlar\u0131nda (masa\u00fcst\u00fc, tablet, mobil) kusursuz bir deneyim ya\u015famas\u0131n\u0131 sa\u011flamak hayati \u00f6nem ta\u015f\u0131r. CSS ile duyarl\u0131 tasar\u0131m prensiplerini uygulayarak, oyun hub'\u0131n\u0131z\u0131n her ekranda estetik ve i\u015flevsel g\u00f6r\u00fcnmesini sa\u011flayaca\u011f\u0131z.<\/p>\n<p>\u0130lk ad\u0131m olarak, taray\u0131c\u0131lar aras\u0131 tutarl\u0131l\u0131k sa\u011flamak i\u00e7in basit bir CSS s\u0131f\u0131rlama (reset) uygulamak faydal\u0131d\u0131r. Bu, taray\u0131c\u0131lar\u0131n varsay\u0131lan stil farkl\u0131l\u0131klar\u0131n\u0131 ortadan kald\u0131rarak kendi stilimizi daha kolay y\u00f6netmemize olanak tan\u0131r. Geni\u015f kapsaml\u0131 bir reset yerine, \u00e7o\u011fu modern taray\u0131c\u0131n\u0131n zaten sa\u011flad\u0131\u011f\u0131 tutarl\u0131l\u0131\u011f\u0131 g\u00f6z \u00f6n\u00fcnde bulundurarak minimal bir yakla\u015f\u0131m sergileyebiliriz. Genel yaz\u0131 tipi, renk paleti ve kutu modelini (box-sizing: border-box) tan\u0131mlamak da iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<pre><code>\n\/* style.css *\/\n* {\n    box-sizing: border-box;\n    margin: 0;\n    padding: 0;\n}\n\nbody {\n    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n    line-height: 1.6;\n    background-color: #f4f4f4;\n    color: #333;\n}\n\n.container {\n    max-width: 1200px;\n    margin: 0 auto;\n    padding: 0 20px;\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Oyun kartlar\u0131n\u0131n d\u00fczenini olu\u015fturmak i\u00e7in CSS Grid veya Flexbox kullanabiliriz. Her ikisi de modern ve g\u00fc\u00e7l\u00fc d\u00fczen ara\u00e7lar\u0131d\u0131r, ancak oyun kartlar\u0131 gibi \u0131zgara tabanl\u0131 bir d\u00fczen i\u00e7in CSS Grid genellikle daha sezgiseldir. Bu y\u00f6ntemle, kartlar\u0131n belirli bir say\u0131da s\u00fctuna yay\u0131lmas\u0131n\u0131 ve ekran boyutuna g\u00f6re otomatik olarak yeniden d\u00fczenlenmesini sa\u011flayabiliriz. \u00d6rne\u011fin, masa\u00fcst\u00fcnde 3 s\u00fctun, tablette 2 s\u00fctun ve mobilde tek s\u00fctun \u015feklinde bir d\u00fczen hedefleyebiliriz.<\/p>\n<pre><code>\n.game-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); \/* Masa\u00fcst\u00fc i\u00e7in varsay\u0131lan *\/\n    gap: 30px;\n    padding: 30px 0;\n}\n\n.game-card {\n    background-color: #fff;\n    border-radius: 10px;\n    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);\n    overflow: hidden;\n    transition: transform 0.3s ease, box-shadow 0.3s ease;\n    display: flex;\n    flex-direction: column; \/* \u0130\u00e7eri\u011fin dikey s\u0131ralanmas\u0131 i\u00e7in *\/\n}\n\n.game-card:hover {\n    transform: translateY(-5px);\n    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);\n}\n\n.game-thumbnail img {\n    width: 100%;\n    height: 180px;\n    object-fit: cover;\n    display: block;\n}\n\n.game-thumbnail figcaption {\n    padding: 15px;\n    font-size: 1.2em;\n    font-weight: bold;\n    color: #007bff;\n}\n\n.game-info {\n    padding: 0 15px 15px;\n    flex-grow: 1; \/* Bilgi alan\u0131n\u0131n kalan bo\u015flu\u011fu doldurmas\u0131 i\u00e7in *\/\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n}\n\n.game-info p {\n    font-size: 0.9em;\n    color: #666;\n    margin-bottom: 15px;\n}\n\n.play-button {\n    background-color: #28a745;\n    color: white;\n    border: none;\n    padding: 10px 20px;\n    border-radius: 5px;\n    cursor: pointer;\n    font-size: 1em;\n    transition: background-color 0.3s ease;\n    align-self: flex-start; \/* D\u00fc\u011fmeyi sola hizala *\/\n}\n\n.play-button:hover {\n    background-color: #218838;\n}\n<\/pre>\n<p><\/code><\/p>\n<h3>Mobil Cihazlara Uyum: Media Query'ler Nas\u0131l Kullan\u0131l\u0131r?<\/h3>\n<p>Duyarl\u0131 tasar\u0131m\u0131n kalbinde media query'ler yer al\u0131r. Bu sayede, ekran boyutuna, \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011fe veya cihaz y\u00f6n\u00fcne g\u00f6re farkl\u0131 CSS kurallar\u0131 uygulayabiliriz. Oyun merkezimiz i\u00e7in, belirli k\u0131r\u0131lma noktalar\u0131nda (breakpoint) oyun kartlar\u0131n\u0131n d\u00fczenini ve belki de yaz\u0131 tiplerini ayarlayabiliriz.<\/p>\n<div class=\"uzman-ipucu\">\n  Uzman \u0130pucu: Media query'leri tasar\u0131ma ba\u015flamadan \u00f6nce mobil \u00f6ncelikli (mobile-first) yakla\u015f\u0131mla kullanmak, genellikle daha iyi performans ve daha y\u00f6netilebilir CSS sa\u011flar. K\u00fc\u00e7\u00fck ekranlar i\u00e7in temel stilleri tan\u0131mlay\u0131p, daha b\u00fcy\u00fck ekranlar i\u00e7in kademeli olarak stil ekleyin.\n<\/div>\n<pre><code>\n\/* K\u00fc\u00e7\u00fck ekranlar (mobil) i\u00e7in stiller *\/\n@media (max-width: 768px) {\n    .game-grid {\n        grid-template-columns: 1fr; \/* Tek s\u00fctun *\/\n        gap: 20px;\n        padding: 20px 0;\n    }\n\n    .site-header h2 {\n        font-size: 1.8em;\n    }\n\n    #searchInput {\n        width: 100%;\n        margin-top: 15px;\n    }\n}\n\n\/* Orta ekranlar (tablet) i\u00e7in stiller *\/\n@media (min-width: 769px) and (max-width: 1024px) {\n    .game-grid {\n        grid-template-columns: repeat(2, 1fr); \/* \u0130ki s\u00fctun *\/\n        gap: 25px;\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rneklerde g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, <code>max-width<\/code> ve <code>min-width<\/code> kullanarak farkl\u0131 ekran aral\u0131klar\u0131 i\u00e7in \u00f6zelle\u015fmi\u015f stiller tan\u0131mlayabiliriz. Mobil cihazlarda oyun kartlar\u0131 tek s\u00fctun halinde g\u00f6r\u00fcn\u00fcrken, tabletlerde iki s\u00fctun ve masa\u00fcst\u00fcnde ise <code>auto-fit<\/code> ile tan\u0131mlanan dinamik s\u00fctun say\u0131s\u0131na uyum sa\u011flayacakt\u0131r. Ayr\u0131ca, arama \u00e7ubu\u011fu ve ba\u015fl\u0131k gibi di\u011fer elementlerin de mobil g\u00f6r\u00fcn\u00fcmde daha uygun boyutlara getirilmesi, kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirecektir. CSS ge\u00e7i\u015fleri (transitions) ve hafif hover efektleri ekleyerek, kullan\u0131c\u0131 aray\u00fcz\u00fcne daha canl\u0131 ve interaktif bir his katabiliriz. Bu sayede, kullan\u0131c\u0131lar oyun kartlar\u0131n\u0131n \u00fczerine geldi\u011finde ho\u015f bir g\u00f6rsel geri bildirim al\u0131rlar.<\/p>\n<p>Sonu\u00e7 olarak, CSS ile duyarl\u0131 tasar\u0131m uygulamak, oyun merkezinizin profesyonel ve modern g\u00f6r\u00fcnmesini sa\u011flar. Kullan\u0131c\u0131lar\u0131n\u0131z\u0131n hangi cihazdan eri\u015firse eri\u015fsin, tutarl\u0131 ve keyifli bir deneyim ya\u015famas\u0131n\u0131 garantileyerek, projenizin eri\u015filebilirli\u011fini ve ba\u015far\u0131s\u0131n\u0131 art\u0131r\u0131rs\u0131n\u0131z.<\/p>\n<h2>Dinamik Etkile\u015fimler: JavaScript ile Oyunlar\u0131 Nas\u0131l Y\u00f6netir ve Entegre Ederiz?<\/h2>\n<p>HTML5 oyun merkezinizin iskeletini HTML ile olu\u015fturup, g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc CSS ile \u015fekillendirdikten sonra s\u0131ra, ona hayat vermeye geliyor: JavaScript ile etkile\u015fim eklemek. JavaScript, oyun kartlar\u0131n\u0131 dinamik olarak olu\u015fturmam\u0131z\u0131, arama\/filtreleme \u00f6zelliklerini uygulamam\u0131z\u0131 ve oyunlar\u0131 ba\u015flatmam\u0131z\u0131 sa\u011flayan temel ara\u00e7t\u0131r. Bu b\u00f6l\u00fcmde, oyun verilerini nas\u0131l y\u00f6netece\u011fimizi ve DOM manip\u00fclasyonu ile bunlar\u0131 nas\u0131l kullan\u0131c\u0131ya sunaca\u011f\u0131m\u0131z\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h3>Oyun Verilerini Y\u00f6netmek: Basit Bir Veri Yap\u0131s\u0131 Nas\u0131l Olu\u015fturulur?<\/h3>\n<p>Her \u015feyden \u00f6nce, oyunlar\u0131m\u0131z\u0131 JavaScript i\u00e7inde yap\u0131land\u0131r\u0131lm\u0131\u015f bir \u015fekilde saklamam\u0131z gerekiyor. Bunun i\u00e7in bir dizi (array) ve her bir oyun i\u00e7in bir nesne (object) kullanmak en pratik yakla\u015f\u0131md\u0131r. Her nesne, oyunun ad\u0131, a\u00e7\u0131klamas\u0131, k\u00fc\u00e7\u00fck g\u00f6rselinin yolu, oyunun URL'si ve belki de etiketleri gibi bilgileri i\u00e7erecektir. Bu yap\u0131, oyunlar\u0131 kolayca eklememize, g\u00fcncellememize ve filtrelememize olanak tan\u0131r.<\/p>\n<pre><code>\n\/\/ script.js\nconst games = [\n    {\n        id: 'flappy-bird-clone',\n        title: 'Flappy Bird Klonu',\n        description: 'T\u00fcyl\u00fc dostunuzu engellerden ge\u00e7irin! H\u0131z ve refleks gerektiren e\u011flenceli bir oyun.',\n        thumbnail: 'assets\/flappy-thumbnail.jpg',\n        path: 'games\/flappy-bird\/index.html',\n        tags: ['arcade', 'skill', 'retro']\n    },\n    {\n        id: 'memory-game',\n        title: 'Haf\u0131za Oyunu',\n        description: 'Kartlar\u0131 e\u015fle\u015ftirerek haf\u0131zan\u0131z\u0131 test edin. Zihinsel becerilerinizi geli\u015ftirin!',\n        thumbnail: 'assets\/memory-thumbnail.jpg',\n        path: 'games\/memory-game\/index.html',\n        tags: ['puzzle', 'brain', 'casual']\n    },\n    {\n        id: 'snake-game',\n        title: 'Y\u0131lan Oyunu',\n        description: 'Klasik y\u0131lan oyunu deneyimi! Yiyecekleri topla ve y\u0131lan\u0131n\u0131 b\u00fcy\u00fct.',\n        thumbnail: 'assets\/snake-thumbnail.jpg',\n        path: 'games\/snake-game\/index.html',\n        tags: ['arcade', 'classic', 'retro']\n    }\n    \/\/ Daha fazla oyun buraya eklenebilir\n];\n<\/pre>\n<p><\/code><\/p>\n<h3>DOM Manip\u00fclasyonu ile Oyun Kartlar\u0131n\u0131 Olu\u015fturma<\/h3>\n<p>Oyun verilerimiz haz\u0131r oldu\u011funda, bu verileri kullanarak HTML i\u00e7inde dinamik olarak oyun kartlar\u0131 olu\u015fturabiliriz. Bu i\u015flem, genellikle sayfa y\u00fcklendi\u011finde veya kullan\u0131c\u0131 bir arama yapt\u0131\u011f\u0131nda ger\u00e7ekle\u015fir. JavaScript'in <code>document.createElement()<\/code> metodu ile yeni HTML elemanlar\u0131 olu\u015fturup, <code>appendChild()<\/code> veya <code>innerHTML<\/code> ile bunlar\u0131 sayfam\u0131za ekleyece\u011fiz.<\/p>\n<pre><code>\nconst gameListSection = document.getElementById('gameList');\nconst searchInput = document.getElementById('searchInput');\n\nfunction displayGames(gameArray) {\n    gameListSection.innerHTML = ''; \/\/ \u00d6nceki kartlar\u0131 temizle\n    gameArray.forEach(game => {\n        const gameCard = document.createElement('article');\n        gameCard.classList.add('game-card');\n        gameCard.dataset.gameId = game.id; \/\/ Oyun ID'sini data-attribute olarak ekle\n\n        gameCard.innerHTML = <code><figure class=\"game-thumbnail\">\n                <img decoding=\"async\" src=\"${game.thumbnail}\" alt=\"${game.title} Resmi\" loading=\"lazy\">\n                <figcaption>${game.title}<\/figcaption>\n            <\/figure>\n            <div class=\"game-info\">\n                <p>${game.description}<\/p>\n                <button class=\"play-button\" data-game-path=\"${game.path}\">Oyna<\/button>\n            <\/div><\/code>;\n        gameListSection.appendChild(gameCard);\n    });\n}\n\n\/\/ Sayfa y\u00fcklendi\u011finde oyunlar\u0131 g\u00f6ster\ndocument.addEventListener('DOMContentLoaded', () => {\n    displayGames(games);\n});\n<\/pre>\n<p><\/code><\/p>\n<h3>Oyun Y\u00fckleme Fonksiyonlar\u0131 ve Etkinlik Dinleyicileri<\/h3>\n<p>Oyun kartlar\u0131 olu\u015ftuktan sonra, her bir \"Oyna\" d\u00fc\u011fmesine t\u0131klan\u0131ld\u0131\u011f\u0131nda ilgili oyunun ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flamam\u0131z gerekir. Bunun i\u00e7in olay dinleyicileri (event listeners) kullanaca\u011f\u0131z. Oyunlar\u0131 yeni bir sekmede a\u00e7mak veya modal pencere i\u00e7inde y\u00fcklemek gibi farkl\u0131 y\u00f6ntemler mevcuttur. Basitlik a\u00e7\u0131s\u0131ndan, oyunlar\u0131 yeni bir sekmede a\u00e7mak i\u00e7in <code>window.open()<\/code> metodunu kullanabiliriz.<\/p>\n<pre><code>\n\/\/ Dinamik olarak eklenen d\u00fc\u011fmeler i\u00e7in olay dinleyici atama\ngameListSection.addEventListener('click', (event) => {\n    if (event.target.classList.contains('play-button')) {\n        const gamePath = event.target.dataset.gamePath;\n        if (gamePath) {\n            window.open(gamePath, '_blank'); \/\/ Oyunu yeni sekmede a\u00e7\n        }\n    }\n});\n<\/pre>\n<p><\/code><\/p>\n<div class=\"uzman-ipucu\">\n  Uzman \u0130pucu: Oyunlar\u0131 bir iframe i\u00e7inde a\u00e7mak, kullan\u0131c\u0131y\u0131 oyun merkezinden ay\u0131rmadan oyun deneyimi sunman\u0131z\u0131 sa\u011flar. Ancak, bu durumda oyunun iframe i\u00e7inde d\u00fczg\u00fcn \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmeniz ve g\u00fcvenlik \u00f6nlemlerini g\u00f6z \u00f6n\u00fcnde bulundurman\u0131z gerekebilir.\n<\/div>\n<h3>Arama ve Filtreleme \u00d6zellikleri Nas\u0131l Uygulan\u0131r?<\/h3>\n<p>Kullan\u0131c\u0131lar\u0131n istedikleri oyunlar\u0131 kolayca bulabilmesi i\u00e7in bir arama \u00e7ubu\u011fu eklemek olduk\u00e7a faydal\u0131d\u0131r. Arama \u00e7ubu\u011funa girilen metni dinleyerek, <code>games<\/code> dizisi \u00fczerinde filtreleme yapabilir ve sonu\u00e7lar\u0131 <code>displayGames()<\/code> fonksiyonu ile tekrar g\u00f6sterebiliriz.<\/p>\n<pre><code>\nsearchInput.addEventListener('input', (event) => {\n    const searchTerm = event.target.value.toLowerCase();\n    const filteredGames = games.filter(game =>\n        game.title.toLowerCase().includes(searchTerm) ||\n        game.description.toLowerCase().includes(searchTerm) ||\n        game.tags.some(tag => tag.toLowerCase().includes(searchTerm))\n    );\n    displayGames(filteredGames);\n});\n<\/pre>\n<p><\/code><\/p>\n<p>Bu JavaScript kodlar\u0131, oyun merkezinizin dinamik ve interaktif bir yap\u0131ya b\u00fcr\u00fcnmesini sa\u011flar. Kullan\u0131c\u0131lar oyunlar aras\u0131nda arama yapabilir, be\u011fendikleri oyunlar\u0131 kolayca bulup ba\u015flatabilirler. Bu temel ad\u0131mlarla, sa\u011flam ve i\u015flevsel bir HTML5 oyun merkezi olu\u015fturmak i\u00e7in gerekli JavaScript bilgisine sahip olacaks\u0131n\u0131z. \u0130leri seviye \u00f6zellikler i\u00e7in ise bu temel \u00fczerine in\u015fa etmeye devam edebiliriz.<\/p>\n<h2>Oyun Merkezinizi Gelece\u011fe Ta\u015f\u0131y\u0131n: Performans ve \u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 Nelerdir?<\/h2>\n<p>Basit bir HTML5 oyun merkezi olu\u015fturman\u0131n temel ad\u0131mlar\u0131n\u0131 tamamlad\u0131n\u0131z. \u015eimdi s\u0131ra, bu projeyi bir sonraki seviyeye ta\u015f\u0131mak, performans\u0131 optimize etmek ve kullan\u0131c\u0131lara daha zengin bir deneyim sunmak i\u00e7in ileri d\u00fczey ipu\u00e7lar\u0131n\u0131 ve teknikleri ke\u015ffetmekte. Bu geli\u015ftirmeler, oyun hub'\u0131n\u0131z\u0131n sadece i\u015flevsel de\u011fil, ayn\u0131 zamanda modern web standartlar\u0131na uygun ve gelece\u011fe haz\u0131r olmas\u0131n\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h3>Performans Optimizasyonu: H\u0131z ve Ak\u0131c\u0131l\u0131k \u0130\u00e7in Neler Yapmal\u0131y\u0131z?<\/h3>\n<p>Web sitelerinin h\u0131z\u0131, kullan\u0131c\u0131 deneyimi ve SEO a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Oyun merkezimizde g\u00f6rsel a\u011f\u0131rl\u0131kl\u0131 i\u00e7erik oldu\u011fu i\u00e7in resim optimizasyonu ve \"lazy loading\" (tembel y\u00fckleme) teknikleri b\u00fcy\u00fck fayda sa\u011flayacakt\u0131r. Oyun k\u00fc\u00e7\u00fck resimlerinin boyutlar\u0131n\u0131 uygun \u015fekilde ayarlamak ve modern formatlar (WebP) kullanmak, dosya boyutlar\u0131n\u0131 d\u00fc\u015f\u00fcrerek y\u00fckleme s\u00fcrelerini k\u0131salt\u0131r.<\/p>\n<pre><code>\n<!-- \"loading=\"lazy\"\" attribute'\u00fc ile g\u00f6rselleri tembel y\u00fckleyin -->\n<img decoding=\"async\" src=\"${game.thumbnail}\" alt=\"${game.title} Resmi\" loading=\"lazy\">\n<\/pre>\n<p><\/code><\/p>\n<p>G\u00f6rsel optimizasyonun yan\u0131 s\u0131ra, JavaScript kodunuzu da optimize etmeniz \u00f6nemlidir. Gerekirse, b\u00fcy\u00fck JavaScript dosyalar\u0131n\u0131 b\u00f6l\u00fcmlere ay\u0131rarak yaln\u0131zca ihtiya\u00e7 duyuldu\u011funda y\u00fcklenmelerini sa\u011flayabilirsiniz (code splitting). Ayr\u0131ca, DOM manip\u00fclasyonlar\u0131n\u0131 minimize etmek ve maliyetli i\u015flemleri (\u00f6rne\u011fin, yo\u011fun filtreleme) geciktirmek (debounce\/throttle) de performans\u0131 art\u0131rabilir. Bir di\u011fer nokta, oyunlar\u0131 ba\u015flat\u0131rken bir y\u00fckleme g\u00f6stergesi eklemek veya oyunlar y\u00fcklenece\u011fi zaman bir ara sayfa (splash screen) g\u00f6stermek, kullan\u0131c\u0131 bekleme deneyimini iyile\u015ftirecektir.<\/p>\n<h3>PWA (Progressive Web App) D\u00f6n\u00fc\u015f\u00fcm\u00fc: Uygulama Deneyimi Nas\u0131l Sunulur?<\/h3>\n<p>Oyun merkezinizi bir PWA'ya d\u00f6n\u00fc\u015ft\u00fcrmek, kullan\u0131c\u0131lar\u0131n\u0131za neredeyse yerel bir uygulama deneyimi sunman\u0131n modern bir yoludur. PWA'lar, \u00e7evrimd\u0131\u015f\u0131 \u00e7al\u0131\u015fma, bildirim g\u00f6nderme ve ana ekrana eklenebilme gibi \u00f6zellikler sunar. Bunun i\u00e7in bir <code>manifest.json<\/code> dosyas\u0131 olu\u015fturman\u0131z ve bir \"service worker\" kaydetmeniz gerekir. <code>manifest.json<\/code> uygulaman\u0131n ad\u0131n\u0131, simgelerini, ba\u015flang\u0131\u00e7 URL'sini ve g\u00f6r\u00fcnt\u00fcleme modunu tan\u0131mlar.<\/p>\n<pre><code>\n<!-- HTML'e ekleyin -->\n<link rel=\"manifest\" href=\"\/manifest.json\">\n<\/pre>\n<p><\/code><\/p>\n<pre><code>\n\/\/ manifest.json\n{\n    \"name\": \"Benim Oyun Hub'\u0131m\",\n    \"short_name\": \"Oyun Hub\",\n    \"start_url\": \".\",\n    \"display\": \"standalone\",\n    \"background_color\": \"#f4f4f4\",\n    \"theme_color\": \"#007bff\",\n    \"icons\": [\n        {\n            \"src\": \"assets\/icons\/icon-192x192.png\",\n            \"sizes\": \"192x192\",\n            \"type\": \"image\/png\"\n        },\n        {\n            \"src\": \"assets\/icons\/icon-512x512.png\",\n            \"sizes\": \"512x512\",\n            \"type\": \"image\/png\"\n        }\n    ]\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Service worker ise arka planda \u00e7al\u0131\u015fan ve a\u011f isteklerini keserek \u00e7evrimd\u0131\u015f\u0131 \u00f6nbellekleme ve di\u011fer PWA \u00f6zelliklerini sa\u011flayan bir JavaScript dosyas\u0131d\u0131r. Bu sayede, internet ba\u011flant\u0131s\u0131 olmasa bile kullan\u0131c\u0131lar oyun merkezinize eri\u015febilir ve \u00f6nbelle\u011fe al\u0131nan oyunlar\u0131 oynayabilirler. Bu, \u00f6zellikle mobil kullan\u0131c\u0131lar i\u00e7in kesintisiz bir deneyim sunar.<\/p>\n<h3>Geli\u015fmi\u015f Filtreleme, S\u0131ralama ve Etiketleme<\/h3>\n<p>Basit bir arama \u00e7ubu\u011fu iyi bir ba\u015flang\u0131\u00e7 olsa da, kullan\u0131c\u0131lar\u0131n oyunlar\u0131 kategoriye, pop\u00fclerli\u011fe veya yeni eklenme tarihine g\u00f6re filtreleyebilmesi veya s\u0131ralayabilmesi, kullan\u0131c\u0131 deneyimini zenginle\u015ftirir. Oyun veri yap\u0131n\u0131za ek etiketler, puanlar veya tarih bilgileri ekleyerek bu \u00f6zellikleri kolayca uygulayabilirsiniz. \u00d6rne\u011fin, etiketlere g\u00f6re filtreleme i\u00e7in bir d\u00fc\u011fme grubu veya bir \"\u00c7oktan aza s\u0131rala\" d\u00fc\u011fmesi ekleyebilirsiniz.<\/p>\n<pre><code>\n\/\/ \u00d6rnek: Etiketlere g\u00f6re filtreleme (HTML'e d\u00fc\u011fmeler eklenmelidir)\nconst filterButtons = document.querySelectorAll('.filter-button');\n\nfilterButtons.forEach(button => {\n    button.addEventListener('click', () => {\n        const filterTag = button.dataset.tag;\n        const filteredGames = games.filter(game => game.tags.includes(filterTag));\n        displayGames(filteredGames);\n    });\n});\n<\/pre>\n<p><\/code><\/p>\n<h3>API Entegrasyonlar\u0131 ve Harici Oyun Verileri<\/h3>\n<p>Oyun merkezinizi daha da dinamik hale getirmek isterseniz, harici oyun API'lerini entegre etmeyi d\u00fc\u015f\u00fcnebilirsiniz. \u00d6rne\u011fin, RAWG API gibi platformlardan oyun bilgileri, g\u00f6rselleri veya pop\u00fclerlik verilerini \u00e7ekerek kendi statik <code>games<\/code> diziniz yerine dinamik bir i\u00e7erik ak\u0131\u015f\u0131 sa\u011flayabilirsiniz. Bu, oyun merkezinizin her zaman g\u00fcncel kalmas\u0131n\u0131 ve geni\u015f bir oyun yelpazesi sunmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>S\u00fcr\u00fcm Kontrol\u00fc ve Da\u011f\u0131t\u0131m<\/h3>\n<p>Projenizi geli\u015ftirirken Git gibi bir s\u00fcr\u00fcm kontrol sistemi kullanmak, de\u011fi\u015fiklikleri takip etmenizi ve ekip i\u00e7inde \u00e7al\u0131\u015f\u0131yorsan\u0131z i\u015f birli\u011fini kolayla\u015ft\u0131r\u0131r. Bitmi\u015f projenizi GitHub Pages, Netlify veya Vercel gibi hizmetler arac\u0131l\u0131\u011f\u0131yla kolayca da\u011f\u0131tabilirsiniz. Bu platformlar, genellikle \u00fccretsiz katmanlar sunar ve basit web sitelerinin yay\u0131nlanmas\u0131n\u0131 otomatize eder, b\u00f6ylece oyun merkeziniz d\u00fcnya genelinde eri\u015filebilir hale gelir.<\/p>\n<p>Bu ileri d\u00fczey teknikleri uygulayarak, HTML5 oyun merkezinizi sadece basit bir koleksiyon olmaktan \u00e7\u0131kar\u0131p, g\u00fc\u00e7l\u00fc, h\u0131zl\u0131 ve kullan\u0131c\u0131 dostu bir web uygulamas\u0131na d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz. Bu s\u00fcre\u00e7, web geli\u015ftirme becerilerinizi derinle\u015ftirmek ve ger\u00e7ek d\u00fcnya projelerinde kar\u015f\u0131la\u015fabilece\u011finiz zorluklara haz\u0131rlanmak i\u00e7in m\u00fckemmel bir yoldur.<\/p>\n<h2>\u00d6zet ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bu makalede, JavaScript ve duyarl\u0131 tasar\u0131m prensiplerini kullanarak s\u0131f\u0131rdan basit bir HTML5 oyun merkezi in\u015fa etmenin temel ad\u0131mlar\u0131n\u0131 ve ileri d\u00fczey tekniklerini derinlemesine inceledik. HTML ile projenin semantik iskeletini olu\u015fturduk, CSS ile duyarl\u0131 ve estetik bir g\u00f6r\u00fcn\u00fcm kazand\u0131rd\u0131k, JavaScript ile dinamik oyun kartlar\u0131 olu\u015fturduk, arama ve filtreleme \u00f6zellikleri ekledik ve oyunlar\u0131 ba\u015flatma mekanizmas\u0131n\u0131 kurduk. Ayr\u0131ca, performans\u0131 art\u0131rmak, PWA \u00f6zelliklerini entegre etmek ve kullan\u0131c\u0131 deneyimini zenginle\u015ftirmek i\u00e7in ileri d\u00fczey ipu\u00e7lar\u0131na de\u011findik. Kendi oyun hub'\u0131n\u0131z\u0131 kurmak, hem web geli\u015ftirme becerilerinizi peki\u015ftirecek hem de ki\u015fisel projelerinizi sergilemek i\u00e7in harika bir platform sa\u011flayacakt\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ol>\n<li>\n<h4>HTML5 oyun merkezimde hangi t\u00fcr oyunlar\u0131 bar\u0131nd\u0131rabilirim?<\/h4>\n<p>Taray\u0131c\u0131 tabanl\u0131 \u00e7al\u0131\u015fan her t\u00fcrl\u00fc HTML5 oyununu bar\u0131nd\u0131rabilirsiniz. Bu oyunlar saf HTML, CSS ve JavaScript ile yaz\u0131lm\u0131\u015f olabilece\u011fi gibi, Phaser, Three.js, Babylon.js gibi oyun motorlar\u0131 veya k\u00fct\u00fcphaneleri kullan\u0131larak da geli\u015ftirilmi\u015f olabilir. Tek \u015fart, oyunun bir taray\u0131c\u0131da \u00e7al\u0131\u015fabilir bir \"index.html\" dosyas\u0131na sahip olmas\u0131d\u0131r.<\/p>\n<\/li>\n<li>\n<h4>Oyun merkezimi \u00e7evrimd\u0131\u015f\u0131 eri\u015filebilir hale getirebilir miyim?<\/h4>\n<p>Evet, Progressive Web App (PWA) tekniklerini kullanarak oyun merkezinizi \u00e7evrimd\u0131\u015f\u0131 eri\u015filebilir hale getirebilirsiniz. Bunun i\u00e7in bir <code>manifest.json<\/code> dosyas\u0131 olu\u015fturup uygulama meta verilerini tan\u0131mlaman\u0131z ve bir Service Worker kayd\u0131 yaparak statik kaynaklar\u0131 (HTML, CSS, JS, oyun varl\u0131klar\u0131) \u00f6nbelle\u011fe alman\u0131z gerekir. Bu sayede, kullan\u0131c\u0131lar internet ba\u011flant\u0131s\u0131 olmasa bile \u00f6nbelle\u011fe al\u0131nan i\u00e7eri\u011fe eri\u015febilirler.<\/p>\n<\/li>\n<li>\n<h4>Oyun merkezimdeki oyunlar\u0131 nas\u0131l g\u00fcncelleyebilirim veya yenilerini ekleyebilirim?<\/h4>\n<p>Oyun verilerini y\u00f6netti\u011fimiz JavaScript dosyas\u0131ndaki <code>games<\/code> dizisine yeni oyun nesneleri ekleyerek veya mevcut oyun nesnelerinin bilgilerini g\u00fcncelleyerek merkezinizi kolayca g\u00fcncelleyebilirsiniz. E\u011fer harici bir API kullan\u0131yorsan\u0131z, API'den gelen veriler otomatik olarak g\u00fcncellenecektir. Sadece yeni oyunun dosyalar\u0131n\u0131 sunucunuza y\u00fcklemeyi unutmay\u0131n.<\/p>\n<\/li>\n<li>\n<h4>Performans\u0131 art\u0131rmak i\u00e7in ek olarak ne yapabilirim?<\/h4>\n<p>G\u00f6rsel optimizasyonu (WebP format\u0131, lazy loading) ve JavaScript kod optimizasyonunun (code splitting, debounce\/throttle) yan\u0131 s\u0131ra, CDN (Content Delivery Network) kullanarak statik dosyalar\u0131n\u0131z\u0131n daha h\u0131zl\u0131 sunulmas\u0131n\u0131 sa\u011flayabilir, HTTP\/2 veya HTTP\/3 protokollerini destekleyen bir sunucu kullanabilir ve taray\u0131c\u0131 \u00f6nbellekleme ba\u015fl\u0131klar\u0131n\u0131 do\u011fru yap\u0131land\u0131rarak tekrarlayan ziyaretlerde y\u00fckleme s\u00fcrelerini azaltabilirsiniz.<\/p>\n<\/li>\n<li>\n<h4>Oyun merkezime kullan\u0131c\u0131 yorumlar\u0131 veya puanlama sistemi ekleyebilir miyim?<\/h4>\n<p>Evet, bu t\u00fcr etkile\u015fimli \u00f6zellikler eklemek m\u00fcmk\u00fcnd\u00fcr ancak daha karma\u015f\u0131k bir yap\u0131 gerektirir. Kullan\u0131c\u0131 verilerini depolamak i\u00e7in bir backend (\u00f6rne\u011fin, Node.js + Express veya Firebase gibi BaaS - Backend as a Service) ve bir veritaban\u0131 (MongoDB, PostgreSQL) entegrasyonu yapman\u0131z gerekir. Frontend'de ise JavaScript ile formlar olu\u015fturup, API \u00e7a\u011fr\u0131lar\u0131 yaparak yorumlar\u0131 g\u00f6nderip, al\u0131p g\u00f6r\u00fcnt\u00fcleyebilirsiniz. Bu, projenizin kapsam\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde geni\u015fleten bir ad\u0131md\u0131r.<\/p>\n<\/li>\n<\/ol>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Kendi HTML5 oyun merkezinizi olu\u015fturarak oyunlar\u0131n\u0131z\u0131 tek bir \u00e7at\u0131 alt\u0131nda toplamak, hem portf\u00f6y\u00fcn\u00fcz\u00fc g\u00fc\u00e7lendirecek hem de geli\u015ftirme becerilerinizi&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[129],"tags":[],"class_list":{"0":"post-33533","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-javascript","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>HTML5 Oyun Merkezi: JavaScript ile Duyarl\u0131 ve Basit Bir Oyun Hub&#039;\u0131 \u0130n\u015fa Edin<\/title>\n<meta name=\"description\" content=\"Kendi HTML5 oyun merkezinizi olu\u015fturarak oyunlar\u0131n\u0131z\u0131 tek bir \u00e7at\u0131 alt\u0131nda toplamak, hem portf\u00f6y\u00fcn\u00fcz\u00fc g\u00fc\u00e7lendirecek hem de geli\u015ftirme becerilerinizi sergilemenin e\u011flenceli bir yolu olacakt\u0131r. Bu makalede, JavaScript ve duyarl\u0131 tasar\u0131m prensiplerini kullanarak s\u0131f\u0131rdan basit bir oyun hub&#039;\u0131 nas\u0131l in\u015fa edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HTML5 Oyun Merkezi: JavaScript ile Duyarl\u0131 ve Basit Bir Oyun Hub&#039;\u0131 \u0130n\u015fa Edin\" \/>\n<meta property=\"og:description\" content=\"Kendi HTML5 oyun merkezinizi olu\u015fturarak oyunlar\u0131n\u0131z\u0131 tek bir \u00e7at\u0131 alt\u0131nda toplamak, hem portf\u00f6y\u00fcn\u00fcz\u00fc g\u00fc\u00e7lendirecek hem de geli\u015ftirme becerilerinizi sergilemenin e\u011flenceli bir yolu olacakt\u0131r. Bu makalede, JavaScript ve duyarl\u0131 tasar\u0131m prensiplerini kullanarak s\u0131f\u0131rdan basit bir oyun hub&#039;\u0131 nas\u0131l in\u015fa edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-04T00:31:09+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"HTML5 Oyun Merkezi: JavaScript ile Duyarl\u0131 ve Basit Bir Oyun Hub&#8217;\u0131 \u0130n\u015fa Edin\",\"datePublished\":\"2025-11-04T00:31:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/\"},\"wordCount\":3275,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Javascript\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/\",\"name\":\"HTML5 Oyun Merkezi: JavaScript ile Duyarl\u0131 ve Basit Bir Oyun Hub'\u0131 \u0130n\u015fa Edin\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-04T00:31:09+00:00\",\"description\":\"Kendi HTML5 oyun merkezinizi olu\u015fturarak oyunlar\u0131n\u0131z\u0131 tek bir \u00e7at\u0131 alt\u0131nda toplamak, hem portf\u00f6y\u00fcn\u00fcz\u00fc g\u00fc\u00e7lendirecek hem de geli\u015ftirme becerilerinizi sergilemenin e\u011flenceli bir yolu olacakt\u0131r. Bu makalede, JavaScript ve duyarl\u0131 tasar\u0131m prensiplerini kullanarak s\u0131f\u0131rdan basit bir oyun hub'\u0131 nas\u0131l in\u015fa edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"HTML5 Oyun Merkezi: JavaScript ile Duyarl\u0131 ve Basit Bir Oyun Hub&#8217;\u0131 \u0130n\u015fa Edin\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"HTML5 Oyun Merkezi: JavaScript ile Duyarl\u0131 ve Basit Bir Oyun Hub'\u0131 \u0130n\u015fa Edin","description":"Kendi HTML5 oyun merkezinizi olu\u015fturarak oyunlar\u0131n\u0131z\u0131 tek bir \u00e7at\u0131 alt\u0131nda toplamak, hem portf\u00f6y\u00fcn\u00fcz\u00fc g\u00fc\u00e7lendirecek hem de geli\u015ftirme becerilerinizi sergilemenin e\u011flenceli bir yolu olacakt\u0131r. Bu makalede, JavaScript ve duyarl\u0131 tasar\u0131m prensiplerini kullanarak s\u0131f\u0131rdan basit bir oyun hub'\u0131 nas\u0131l in\u015fa edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/","og_locale":"tr_TR","og_type":"article","og_title":"HTML5 Oyun Merkezi: JavaScript ile Duyarl\u0131 ve Basit Bir Oyun Hub'\u0131 \u0130n\u015fa Edin","og_description":"Kendi HTML5 oyun merkezinizi olu\u015fturarak oyunlar\u0131n\u0131z\u0131 tek bir \u00e7at\u0131 alt\u0131nda toplamak, hem portf\u00f6y\u00fcn\u00fcz\u00fc g\u00fc\u00e7lendirecek hem de geli\u015ftirme becerilerinizi sergilemenin e\u011flenceli bir yolu olacakt\u0131r. Bu makalede, JavaScript ve duyarl\u0131 tasar\u0131m prensiplerini kullanarak s\u0131f\u0131rdan basit bir oyun hub'\u0131 nas\u0131l in\u015fa edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.","og_url":"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-04T00:31:09+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"HTML5 Oyun Merkezi: JavaScript ile Duyarl\u0131 ve Basit Bir Oyun Hub&#8217;\u0131 \u0130n\u015fa Edin","datePublished":"2025-11-04T00:31:09+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/"},"wordCount":3275,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Javascript"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/","url":"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/","name":"HTML5 Oyun Merkezi: JavaScript ile Duyarl\u0131 ve Basit Bir Oyun Hub'\u0131 \u0130n\u015fa Edin","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-04T00:31:09+00:00","description":"Kendi HTML5 oyun merkezinizi olu\u015fturarak oyunlar\u0131n\u0131z\u0131 tek bir \u00e7at\u0131 alt\u0131nda toplamak, hem portf\u00f6y\u00fcn\u00fcz\u00fc g\u00fc\u00e7lendirecek hem de geli\u015ftirme becerilerinizi sergilemenin e\u011flenceli bir yolu olacakt\u0131r. Bu makalede, JavaScript ve duyarl\u0131 tasar\u0131m prensiplerini kullanarak s\u0131f\u0131rdan basit bir oyun hub'\u0131 nas\u0131l in\u015fa edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/html5-oyun-merkezi-javascript-ile-duyarli-ve-basit-bir-oyun-hubi-insa-edin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"HTML5 Oyun Merkezi: JavaScript ile Duyarl\u0131 ve Basit Bir Oyun Hub&#8217;\u0131 \u0130n\u015fa Edin"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=33533"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33533\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}