8 Ara 2019
440
21
18
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? :)
 
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? :)

Hah işte iyi bir yere değindin. Bu yöntemlerin en iyisini seçebilmek önemli dolayısıyla bu da senin profesyonelliğini her şeye ne kadar hakim olduğunu gösterir.
Mesela 100 tane değişken array vs kullanıp silah sistemi yaparsın ama adamın biri çıkar structer ve enumaration kullanıp kolay yoldan halleder. Daha profesyonel bilgi gerektirir ama daha kolay ve ileriye dönüktür. Senin yaptığın sistem anlık işini görür ve her silah yapımında seni uğraştırır fakat onun yaptığı sistemde 2 tıkla yeni silah eklemek mümkündür ve her yerde düzgün çalışmaktadır.
Çarpma yerine toplama yapmak gibidir bu. Zamanını çalar belli formülü yoktur ve yanlış hesaplayabilirsin.

Bu konular pratikle gelişiyor bende bodoslama dalıyorum bazen mal mal sistemler kuruyorum karmakarışık. Çalışıyor , fakat sıkıntılar doğruyor.Optimizasyon sorunları çıkarıyor ve tekrar tekrar uğraştırıyor. Birkaç yol vardır birde binlerce yol vardır birde en iyi yol vardır sen birkaç yolu yada en iyisinden birtanesini seçeceksin geri kalan binlerce yol sıkıntı yaratır.

Sen şimdi animasyondan örnek verdin collisiondan. Şimdi sen collisionu koydun dimi adam kılıcı salladı sana değerse hasar verecek. Fakat adam elini kaldırdı ya tam kaldırdı sende elinin ordasın sana daha vurmadan hasarı yersin. Line trace sistemi var adamın kılıcının yolu boyunca çizelge atıyor bu çizelgelere değen şeyler hasar alıyor. Bu daha mantıklı mesela. Adam alan vuruyorsa 1 tane box yerine çizelge olsun yolu izlesin önüne gelen her şeye hasar versin bu çizelge ise adam tam vuruşu gerçekleştirirken ortaya çıksın mesela. Anladın mı demek istediğimi...
 
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. Peki ya senin 100 tane ağaç kesmen gerekecekse. Bir elektrikli testere alıp kullanmayı öğrenmek mantıklı olmasmı? 
Mesela yukarıda gösterdigim sorunu küçük manüel bir 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

Not: Birde meseleye şöyle bakmak lazım. Senin modun "Ben biraz takiliyorum buralarda. Çok ta kasmaya gerek yok "  sa bir taraf daha mantıklı  gelebilir. "Ben bu işi gerçekten öğreneceğim, hatta ekmeğimi de bundan kazanacağım" diyorsan başka bir taraf mantıklı gelebilir.
 
erginegider' Alıntı:
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

Ahahaha, bu linkteki konuyu hatırlıyorum arkadaşa ben demiştim ki. Visiblity kullan düğmeye gelince aç falan demiştim sende baştan sistem kodlamıştın.Hatırlıyorum bu konuyu...
Sonuç olarak senin yaptığın sistem geleceğe dönük olarak mantıklıydı.Ağaç örneği de güzel olmuş.Benim de senden bir ricam olacak büyük ihtimalle ileri düzey C++ bilgisine sahip birisin.
Bana da şu konuda yardımcı olabilir misin?

http://www.unrealengineturkiye.com/c-ve-programlama-dilleri-konusu.html


Benim de burada bir sıkıntım var ve ne yapacağımı bilemiyorum.. teşekkürler