mrtcnaslnts' Alıntı:
Bu konuyu anlaşılır bi şekilde Nasıl Anlatcamı bilemiyorum ama. Oyun programlarken kodlarımda pek sıkıntı yaşamıyorum aslında çalışıyorlar ama aklıma takılıyor.
Blueprintte bi çok alternatif kodlama var Örn hasarla alakalı, bildiğim Mesela Anim Notify kullanarak, Kılıca capsule yada box vs. ekleyerek, veya Karakterin önüne büyük bi box collision eklersin tuşa basıp anim oynayınca box içinde olan kişiye hasar verir vs gibi gibi. Sadece Hasara odaklanmayın bu sadece örnek. Anlatmak istediğim Yaptığımız bi kod Testte çalışıyorsa tamam mıdır? Yani Hasar illa Kılıcın ucuna Box ekleyerek midir. Temel bi kodlama var mıdır Yoksa alternatif kodlar çalışıyorsa iş tamam mıdır?
Ağaç illa Elektrikli testereyle mi kesilmeli yoksa, El testeresi de işimizi görür mü? Veya ben baltayla kesebiliyorsam sorun yok mudur?
Leonscottkfm çok güzel açıklamış ama bende aynı şeyi değişik şeklilde anlatayım.
Kimse oyun oynarken senin koduna bakmayacak sonuçta. Eğer oyun senin bulduğun bir çözümle 10 numara çalışıyorsa, hiç problem çıkarmıyorsa oyuncu açısından bakacak olursak hiç fark etmez. Senin problemi nasıl çözdüğün oyuncuyu onu etkilemediği sürece hiç ilgilendirmez. Bu bakımdan sorun yok yani.
Ancak meseleye senin açından bakacak olursak herşey bu kadar basit değil. Daha önce çok defa burda degisik kişilere söylediğim şeylere dikkat etmissindir. Bir kodun ister BP olsun ister c++ olsun ister python, php vb. her ne olursa olsun, her zaman kolay anlaşılır, düzenli, basit, ilerde her türlü müdahaleye uygun, hatalara kapalı, başka taraflardaki kodlara minimum dayanan, başka taraflardaki kodları minimum etkileyen şekilde yazılması lazımdır. Mesela bir yazılım şirketinde çalışıyor olsan eğer bu konulara dikkat etmiyorsan kodun istediğin kadar 10 numara çalışsın bir süre sonra ekip seni işten atar. Neden. Çünkü yazdığın kodu bir başka ekip arkadaşın okuduğunda başı ağrıyordur . Yada bir şey eklemek değiştirmek istediklerinde arap saçına dönüyordur herşey, yada senin yazdığın kodu sağlam yazmadığından diğer yerlerden senin kod yüzünden hata çıkıyordur. Bu noktada geliştirici açısından problemi çözüyor olması tek başına yeterli değildir.
Senin acından bakacak olursak. Biraz esneme payın olabilir tek kişi olduğun için ama dikkat et "esneme payı" diyorum. Bu çok önemli.
Mesela oyunun bitiş aşamasındasın. Zaman az çok küçük bir şey eklemen lazım. Başka hiç bir yeri etkilemeyecekse, sonradan gelistirilebilirlik ekleme yapılabilirlik ten imtina edip hemen aklına ilk nasıl geliyorsa öyle çözüm uygulayabilirsin belki. Çünkü proje bitmiş zaten. Daha bir şey eklemeyeceksen böyle "yama" bir çözümle kurtarabilirsin.
Ancak proje yeni başlamış ya da daha yeni gelişiyorsa sen kendin mutlaka birşey ekleyeceksin mutlaka 100 defa degistirmen gerekecek. Aynen bir firma da çalışıyormuş gibi tüm yukarıdaki konulara dikkat edersen projen "yönetilebilir" olur. Sonraki safhalarda her şey çok daha basit olur. Herşey arap saçına dönmez. Birisi sana şunu şöyle yapsaydın dediğinde oturup bu benim 1 ayımı alır demezsin. 1 saat sonra adama değiştirip gösterebilirsin. Yada bir bug çıktığında saçlarını yolmazsin. Neyin nerde olduğu bellidir. Stresin bile olmaz.
Bu konuda geçenlerde birisine yardım için buraya koyduğum video
https://drive.google.com/file/d/1QVcH3mhuINEaHo51dkFaak8zaJL3gjLM/view?usp=sharing
Baktığın zaman "bu kadar ufak mesele ne kadar saçmaladı " diye düşünebilirsin. Ama orada sonradan buraya bir musluk ekle musluguda açabilsin desen 5 dk , bir ot ekle otuda yiyebilsin desen 5dk. Ileriye doğru bana sonsuz olanak sağlıyor. Herşeyin yeri de belli ve tamamen birbirinden ayrı. Tüm kodlar çok basit ve anlaşılır, en fazla kod 5 6 node dan oluşuyor. Bir bug varsa onu bulmam çok kolay..
Yani sonuç genel olarak yazdığın kod oyuncu açısından sorun oluşmadığı taktirde sorun yok desekte senin acından çok sorun olabilir. Yaptığın şey ne kadar komplex ise bu dediklerime o kadar çok riayet etmek zorundasın. Bunun tersi de geçerli. Mesela ne kadar basit se o kadar az da riayet edebilirsin. Mesela yılan oyunu gibi. Ama büyük projelerde ( bizimkiler hep büyük oluyor) Yaptığın şeyi yaparken gelecekteki seni de düşünmek zorundasın. Düşünmezsen ileride duvara toslayıp devam edememe riski olur.
Şimdi senin analojiye gelirsek, elektrikli testere daha pahalidir, kullanmayı da bilmek gerekir. Ama el testeresi ile de ağaç kesebilirsin. Eğer bir kere keseceksen iş görebilir de. Ama yorulursun. Kişiye göre bi sefer için elektrikli testere almak ta mantıklı gelebilir. Mesela yukarıda gösterdigim sorunu küçük manüel bit yöntemle de çözebilirim ama ya bundan bir tane daha ama başka şekilde yapmam gerekecekse ( çok fazla ağaç keseceksem). Ayrıca usulüne uygun çözersem sonradan kullanmam modifiye etmem çok kolay olur.( elektrikli tes. kullansam daha düzgün pürüzsüz olur her yerde kestiğim parçayı kullanabilirim).
Sonuç eğer projenin son demlerinde rutuş larında değilsen her zaman temiz, bağımsız, anlaşılır, geliştirilebilir, değiştirilebilir ve sağlam kod yaz.
Kolay gelsin