[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:game-dev\u002Fgame-physics-collision":4,"config":126},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":40,"samples":41},"game-dev","Oyun Geliştirme","","game-physics-collision","Game Physics Collision","tr",75,600,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,34,37],{"key":19,"name":20,"count":11},"game-ai-pathfinding","Game Ai Pathfinding",{"key":22,"name":23,"count":11},"game-input-audio","Game Input Audio",{"key":25,"name":26,"count":11},"game-loop-fundamentals","Game Loop Fundamentals",{"key":28,"name":29,"count":11},"game-networking-multiplayer","Game Networking Multiplayer",{"key":31,"name":32,"count":11},"game-performance-optimization","Game Performance Optimization",{"key":8,"name":9,"count":11},{"key":35,"name":36,"count":11},"game-rendering-pipeline","Game Rendering Pipeline",{"key":38,"name":39,"count":11},"game-state-management","Game State Management",[],[42,60,74,87,100,113],{"id":43,"topic":9,"difficulty":44,"body":45,"options":46,"correct_key":57,"explanation":59},"019f6b28-1767-768b-ac55-efe8ad4dff09",1,"Oyun motorlarında çarpışma tespitinin temel amacı nedir?",[47,50,53,56],{"key":48,"text":49},"a","Aktif tüm nesnelerin her karede kullandığı toplam belleği hesaplamak",{"key":51,"text":52},"b","Bir seviye başlamadan önce hangi nesnelerin diskten yükleneceğine karar vermek",{"key":54,"text":55},"c","Nesneleri konumlarına göre doğru aydınlatma ve gölgeyle render etmek",{"key":57,"text":58},"d","İki veya daha fazla nesnenin ne zaman çakıştığını ya da temas ettiğini belirlemek","Çarpışma tespitinin görevi yalnızca nesneler arasında çakışma\u002Ftemas olup olmadığını belirlemektir; sonrasında ne olacağı (sekme, hasar alma, kapı açılması) ayrı bir tepki mantığıyla ele alınır. (a) bellek yönetimi, (b) asset streaming, (c) render — bunların hiçbiri çarpışma tespitinin kendisi değildir.",{"id":61,"topic":9,"difficulty":62,"body":63,"options":64,"correct_key":48,"explanation":73},"019f6b28-1767-7f17-b949-16dd78d5da91",2,"Her karede her nesnenin tam şeklini diğer her nesnenin tam şekliyle karşılaştırmak doğru sonuç verir ama ölçekte çoğu zaman çok yavaştır. Motorların bunu uygun maliyetli tutmak için kullandığı yaygın iki aşamalı strateji nedir?",[65,67,69,71],{"key":48,"text":66},"Önce ucuz bir testle temas etmeyen çiftleri ele, sonra kesin testi yalnızca kalanlarda çalıştır",{"key":51,"text":68},"Belirli bir hız eşiğinin altında hareket eden nesneler için çarpışma kontrolünü tamamen atlamak",{"key":54,"text":70},"Tam şekil kontrolünü yalnızca seviye yüklenirken bir kez çalıştırıp sonucu seviye boyunca yeniden kullanmak",{"key":57,"text":72},"Ekrandaki nesne sayısı arttıkça kare hızını düşürmek","Bu, ucuz-sonra-kesin iki aşamalı ayrımdır: kaba yaklaşık test çoğu çifti hızla eler, pahalı kesin test yalnızca hayatta kalan az sayıda çiftte çalışır. (b) yanlıştır çünkü ilgili kriter hız değil yakınlıktır. (c) yanlıştır çünkü nesne konumları her karede değişir. (d) altta yatan maliyeti çözmeden oyunu bozar.",{"id":75,"topic":9,"difficulty":62,"body":76,"options":77,"correct_key":54,"explanation":86},"019f6b28-1768-77f8-b95b-56de9fd6b66c","Bir bulmaca oyununda tek ekranda 200 hareketli nesne var. Programcı çarpışma tespitini her karede her nesneyi diğer her nesneyle karşılaştırarak gerçekliyor ve nesne sayısı arttıkça performans sert düşüyor. Kök neden nedir?",[78,80,82,84],{"key":48,"text":79},"Çarpışma tespiti açıkken render pipeline her nesneyi iki kez çiziyor",{"key":51,"text":81},"Her nesnenin collider'ı her tek karede mesh'inden sıfırdan yeniden inşa ediliyor",{"key":54,"text":83},"İkili karşılaştırma sayısı yaklaşık olarak nesne sayısının karesiyle büyür",{"key":57,"text":85},"Fizik motoru ayrı bir thread'de çalışıyor ve render tarafından CPU zamanından mahrum bırakılıyor","Naif tüm-çiftler kontrolü O(n²)'dir: n=200'de yaklaşık 19.900 çift; n=400'de yaklaşık 79.800 çift — nesne sayısı 2 katına çıkarken iş yaklaşık 4 katına çıkıyor. Bu büyüme spatial partitioning'in neden önemli olduğunu doğrudan açıklar. (a), (b) ve (d) makul görünse de anlatılan nedenin kendisi değildir.",{"id":88,"topic":9,"difficulty":44,"body":89,"options":90,"correct_key":51,"explanation":99},"019f6b28-1769-733c-944e-5d799862b9fd","Oyun dünyasını çarpışma amacıyla bölgelere (ör. bir grid'e) bölmenin temel fikri nedir?",[91,93,95,97],{"key":48,"text":92},"Uzaktaki bölgelerin daha düşük detaylı dokularla çizilmesini sağlar",{"key":51,"text":94},"Yakın nesneleri gruplar, karşılaştırmalar yerel kalır",{"key":54,"text":96},"Çakışan nesneleri otomatik olarak tek bir birleşik nesneye dönüştürür",{"key":57,"text":98},"Ses motorunun hangi bölgenin seslerinin susturulacağına karar vermesini sağlar","Spatial partitioning, nesneleri konumlarına göre gruplayarak karşılaştırmaları tüm nesne kümesi yerine yakın bölgelerle sınırlar; bu, önceki senaryodaki ikili karşılaştırma maliyetini doğrudan azaltır. (a) level-of-detail render'ı anlatır, (c) partitioning'in yaptığı şey değildir, (d) ses culling'idir.",{"id":101,"topic":9,"difficulty":62,"body":102,"options":103,"correct_key":54,"explanation":112},"019f6b28-1769-79b7-9252-fa25506c740b","Çok büyük bir açık dünya haritasının zıt köşelerinde, gerçekçi olarak asla temas edemeyecek kadar uzakta iki nesne var. Naif bir çarpışma sisteminde bu iki nesne yine de her karede karşılaştırılıyor. Grid tabanlı bir partitioning şeması bu boşa harcanan işi tipik olarak nasıl önler?",[104,106,108,110],{"key":48,"text":105},"Mesafe bir eşiği aştığında iki nesneden birini bellekten silerek",{"key":51,"text":107},"Mesafeden bağımsız olarak iki nesneyi aynı fizik gövdesine birleştirerek",{"key":54,"text":109},"Onları farklı, komşu olmayan hücrelere yerleştirerek; böylece asla karşılaştırılmazlar",{"key":57,"text":111},"Harita boyutu belirli bir sınırı aştığında çarpışma tespitini tamamen devre dışı bırakarak","Nesneler yalnızca kendi hücresini (veya komşu hücreleri) paylaşan diğer nesnelerle karşılaştırılır; birbirinden çok uzak iki nesne ilgisiz hücrelere düşer ve hiçbir zaman bir kontrol için eşleştirilmez. (a), (b) ve (d) yıkıcı ya da hep-ya-da-hiç yaklaşımlar tanımlar; partitioning bu şekilde çalışmaz.",{"id":114,"topic":9,"difficulty":62,"body":115,"options":116,"correct_key":57,"explanation":125},"019f6b28-176a-726e-97bc-37c3f988fb3e","Bir nesnenin collider'ı için basit bir şekil (kutu veya küre gibi) ile görsel mesh'i yakından takip eden bir şekil kullanmak arasındaki temel trade-off nedir?",[117,119,121,123],{"key":48,"text":118},"Basit şekiller görsel mesh ile her zaman birebir aynı görünür, dolayısıyla gerçek bir trade-off yoktur",{"key":51,"text":120},"Mesh tabanlı collider'lar yalnızca hiç hareket etmeyen nesneler için doğru çalışır",{"key":54,"text":122},"Basit şekiller, ekstra dolgu verisi gerektirdiği için tam mesh collider'lardan daha fazla bellek gerektirir",{"key":57,"text":124},"Basit şekiller test etmesi ucuzdur ama daha az hassastır; mesh şekiller doğrudur ama daha pahalıdır","Bu, temel collider trade-off'udur: maliyet vs. doğruluk. Basit primitifler matematiksel olarak test etmesi ucuzdur ama köşelerde küçük görsel boşluklara ya da sahte temaslara izin verebilir; mesh collider'lar görsel şekle sıkı sıkıya uyar ama özellikle ölçekte test edilmesi çok daha pahalıdır.",{"fields":127,"seniorities":311,"interview_shapes":312,"locales":317,"oauth":319,"question_count":322,"coach_enabled":323,"jd_match_enabled":323},[128,153,173,190,214,227,246,265,287,294,300,305],{"key":129,"name_tr":130,"name_en":130,"sort":44,"specializations":131},"backend","Backend",[132,135,138,141,144,147,150],{"key":133,"name":134,"field":129},"general","Genel",{"key":136,"name":137,"field":129},"go","Go",{"key":139,"name":140,"field":129},"python","Python",{"key":142,"name":143,"field":129},"java","Java",{"key":145,"name":146,"field":129},"csharp","C#\u002F.NET",{"key":148,"name":149,"field":129},"nodejs","Node.js",{"key":151,"name":152,"field":129},"php","PHP",{"key":154,"name_tr":155,"name_en":155,"sort":62,"specializations":156},"frontend","Frontend",[157,158,161,164,167,170],{"key":133,"name":134,"field":154},{"key":159,"name":160,"field":154},"javascript","JavaScript",{"key":162,"name":163,"field":154},"typescript","TypeScript",{"key":165,"name":166,"field":154},"react","React",{"key":168,"name":169,"field":154},"vue","Vue",{"key":171,"name":172,"field":154},"angular","Angular",{"key":174,"name_tr":175,"name_en":175,"sort":176,"specializations":177},"fullstack","Fullstack",3,[178,179,180,181,182,183,184,185,186,187,188,189],{"key":133,"name":134,"field":174},{"key":136,"name":137,"field":129},{"key":139,"name":140,"field":129},{"key":142,"name":143,"field":129},{"key":145,"name":146,"field":129},{"key":148,"name":149,"field":129},{"key":151,"name":152,"field":129},{"key":159,"name":160,"field":154},{"key":162,"name":163,"field":154},{"key":165,"name":166,"field":154},{"key":168,"name":169,"field":154},{"key":171,"name":172,"field":154},{"key":191,"name_tr":192,"name_en":192,"sort":193,"specializations":194},"devops-cloud","DevOps \u002F Cloud",4,[195,196,199,202,205,208,211],{"key":133,"name":134,"field":191},{"key":197,"name":198,"field":191},"aws","AWS",{"key":200,"name":201,"field":191},"gcp","GCP",{"key":203,"name":204,"field":191},"azure","Azure",{"key":206,"name":207,"field":191},"kubernetes","Kubernetes",{"key":209,"name":210,"field":191},"terraform","Terraform",{"key":212,"name":213,"field":191},"linux","Linux",{"key":215,"name_tr":216,"name_en":216,"sort":217,"specializations":218},"ai-engineer","AI Engineer",5,[219,220,221,224],{"key":133,"name":134,"field":215},{"key":139,"name":140,"field":215},{"key":222,"name":223,"field":215},"llm-rag","LLM\u002FRAG",{"key":225,"name":226,"field":215},"mlops","MLOps",{"key":228,"name_tr":229,"name_en":230,"sort":231,"specializations":232},"database","Veritabanı","Database",6,[233,234,237,240,243],{"key":133,"name":134,"field":228},{"key":235,"name":236,"field":228},"postgresql","PostgreSQL",{"key":238,"name":239,"field":228},"mysql","MySQL",{"key":241,"name":242,"field":228},"mongodb","MongoDB",{"key":244,"name":245,"field":228},"redis","Redis",{"key":247,"name_tr":248,"name_en":249,"sort":250,"specializations":251},"mobile","Mobil","Mobile",7,[252,253,256,259,262],{"key":133,"name":134,"field":247},{"key":254,"name":255,"field":247},"ios-swift","iOS (Swift)",{"key":257,"name":258,"field":247},"android-kotlin","Android (Kotlin)",{"key":260,"name":261,"field":247},"flutter","Flutter",{"key":263,"name":264,"field":247},"react-native","React Native",{"key":266,"name_tr":267,"name_en":268,"sort":269,"specializations":270},"security","Güvenlik","Security",8,[271,272,275,278,281,284],{"key":133,"name":134,"field":266},{"key":273,"name":274,"field":266},"appsec","AppSec",{"key":276,"name":277,"field":266},"offensive-pentest","Offensive \u002F Pentest",{"key":279,"name":280,"field":266},"cloud-security","Cloud Security",{"key":282,"name":283,"field":266},"devsecops","DevSecOps",{"key":285,"name":286,"field":266},"blue-team-incident","Blue Team \u002F Incident",{"key":288,"name_tr":289,"name_en":290,"sort":291,"specializations":292},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[293],{"key":133,"name":134,"field":288},{"key":295,"name_tr":296,"name_en":296,"sort":297,"specializations":298},"data-engineer","Data Engineer",10,[299],{"key":133,"name":134,"field":295},{"key":5,"name_tr":6,"name_en":301,"sort":302,"specializations":303},"Game Development",11,[304],{"key":133,"name":134,"field":5},{"key":306,"name_tr":307,"name_en":307,"sort":308,"specializations":309},"ml-engineer","ML Engineer",12,[310],{"key":133,"name":134,"field":306},[14,15,16],{"junior":313,"mid":315,"senior":316},{"questions":314,"median_sec":3},20,{"questions":314,"median_sec":3},{"questions":314,"median_sec":3},[10,318],"en",[320,321],"google","github",21750,true]