Files Gelistirme Gunlugu

Bölüm 2

Bir onceki bolumun uzerinden 2 haftanin uzerinde bir zaman gecti. Bu sure zarfinda dogrusunu soylemek gerekirse istedigim kadar ilerleme kaydedemedim. Ilerleyen zamanlarda okul ve baska seylerle mesgul olacagim icin gelistirme surecinin biraz yavaslayacagini tahmin ediyorum. Fakat ne kadar az olursa olsun her hafta belli bir suremi files'i gelistirmeye harcamaya ozen gosterecegim. Neyse girisi daha fazla uzatmadan son iki haftanin raporunu vereyim:

Yapılanlar:
-Gaya Sistemi
-ShopExRenewal
-Tooltip'e yeni eklentiler
-Yavastan dungeon ve quest yazimina giris
-Onceden eklenen sistemlerden kaynaklanan bazi hatalarin fixleri

Bu sekilde listelendigi zaman aslinda cok da bir sey yapmamis gibi gozukebilir fakat ozellike gaya sistemini istedigim sekilde eklemek yaklasik bir hafta mi aldi. Normalde uzerinde hic bir degisiklik yapmak zorunda olmadigim zaman ne kadar buyuk olursa olsun bir sistemi eklemek en fazla 2 gunu mu aliyor. Fakat forumlarda paylasilan gaya sistemlerinin hepsi TR tipi. Ben ise files daki gaya sisteminin daha farkli ve ise yarar olmasini istiyordum. Gaya marketinin belli zamanlarda yenilenmesi gibi ozellikleri kaldirmak, her zaman ayni itemlerin ayni fiyatta satilmasini, ayni zaman da da birden fazla sayfa olmasini istiyordum. Tum bu degisiklikleri yapmak icin sistemin nasil calistigini epey iyi anlamak gerekiyordu. Yaklasik 1 haftalik bir ugras sonucu sistemi istedigim hale getirebildim. Dogrunu soylemek gerekirse tum bunlarla ugrasmaya gerek kalmadan, direkt olarak ShopExRenewal sistemi sayesinde gaya'yi oyuna bir item olarak ekleyip, gaya markette satilan itemleri bir shop'a ekleyerek de istedigim sonuca ulasabilirdim buyuk ihtimal ama dogru yolunun bu oldugunu dusunerek bu sekil de yapmayi tercih ettim. Fakat benim gibi sistemi bu sekilde eklemek isteyen arkadaslarin aklina bulunsun bu yontem.

Linkleri görebilmek için giriş yap veya kayıt ol.

Bir baska yeni eklenti de tooltip'e ekledigim yardimci yazi ve gorseller oldu. Hizli birlestirme, hizli sandik acma olsun bu tur islemlerin hangi tus kombinasyolariyla yapildigi bilgisini oyuncuya bir sekilde vermek gerekiyor. Ben de bunun icin cogu files'da gorulebilecek benzer yontemi sectim. Dogrusunu soylemek gerekirse arka plan da sistemi ekledigim hali cok hosuma gitmedi. Kodun cok daha moduler bir sekilde yazilabileceginin farkindaydim fakat hem python bilgimin cok da iyi olmamasi hem de cok fazla zaman harcamamak istememden dolayi uzerinde cok fazla durmadim.

unknown.png

Bitmeyen Problemler

Galiba birisi benden herhangi bir yazilimi gelistirme surecini tek cumle de ozetlememi isterse(bu yazilim bir files olabilir, sifirdan yapilmis bir oyun olabilir, bir websitesi olabilir) "Problem cozmek." der gecerim herhalde. Gelistirilen bu yazilim bir oyun, ozellikle de bir mmorpg olunca karsilasan problemler de bir o kadar buyuk, bazen sacma, bazen tamamen sizden kaynakli bazense 20 yil once koreli bir abinin buyuk ihtimal sarhosken yazdigi kod olabiliyor. Kaynagi ne olursa olsun bu problemler genellikle cozmesi epey zaman alan, zamandan daha onemli de insanin motivasyonunu dusuren seyler oluyor. Bazen saatlerinizi bir sistemi eklerken kucuk bir yeri unuttugunuz veya bir harfi kucuk yazdiginiz icin harciyabiliyorsunuz.

Ben de files'i gelistirirken tahmin edebileceginiz gibi bir suru hatayla karsilasiyorum gunluk. Bu hatalarin cogu da benim sifirdan kendi yazdigim sistemlerden veya dolayli olarak bu sistemlerin etkiledigi baska sistemlerden kaynakli oluyor. Bu hatalari tespit etmesi ve bulmasi cok zor oluyor cunku internete yazip daha once ayni hatayla karsilasan baskalari olmus mu, olmussa nasil cozmus diye bakamiyorum. Bu yazi da da karsilastigim bazi sorunlardan ve bazi ilginc seylerden bahsetmek istiyorum:

Bahsedecegim ilk sorun aslinda epey bir zamandir birlikte yasadigim, sebebi hakkinda hic bir fikrimin olmadigi bir sorun. Bu sorun o kadar sacma o kadar ilginc bir sorun ki cani ne zaman isterse o zaman ortaya cikiyor. Neyin sebep olduguna dair ise neredeyse hic bir fikrim yok. Sorun aslinda oldukca basit ch1'i kapatmak istedigim zaman core veriyor. stop.sh scriptini cagirdigim zaman auth ve diger core'lar basarili bir sekilde kapaniyor, fakat ch1 core veriyor.

error1.JPG

Syserr herhangi bir log dusmuyor, syslog ise genel de surada kaliyor. Genel de diyorum cunku yanlis hatirlamiyorsam bir kac kere farkli yerler de durdugu da olmustu log dosyasinin.

error2.JPG

Hatanin sebebi cok buyuk character_manager class'i destroy edilirken tum maplarin uzerinden geciyor ve her map'in icerisindeki karakterleri teker teker yok ediyor. Tahminim bu islem olurken olmayan bir karakteri yok etmeye calisiyor o da programi cokertiyor. Bu sorun o kadar gicik bir sorun ki bazen 1 hafta boyunca, veya saatlerce acik biraktiginiz bir zaman basiniza gelmezsken 2 dakikaligina actiginiz kisa bir oturum da basiniza gelebiliyor. Hatayi tekrar uretemedigim icin de gdb kullanarak debug etme sansim hic olmadi. Ilerleyen zamanlarda core'u her zaman gdb ile calistirmayi boylece cokerse eger sorunun kaynagini ogrenmeyi planliyorum.

Karsilastigim bir baska hata ise catacomb'un 3.kata isinlanirken bulundugum channel'in core vermesi. Bu problem de bazen olup bazen olmayan sebebini anlayamadigim problemlerden bir tanesi. gdb ile debug ettigim zaman sorunun kaynagini pek de anlayamadim cunku source icerisinde hic bir yere isaret etmiyordu hata. Core vermeden 3.kata attigi zamansa bazen aradan 5-10 saniye gectikten sonra dungeon disina atiyor sebebini anlamadigim bir sekilde.

Bunun disinda RegenEditor kullanarak catacomb mapini acmaya calistigim zaman program crash veriyor. Diger hic bir mapte olmuyor sadece catacomb mapinde oluyor. RegenEditor degisik surumleriyle acmayi denedim, baska fileslarin catacomb dosyalariyla acmaya calistim ama nafile. Catacomb konusunda cok dertliyim.

Genel olarak quest ve dungeon konusunda isim pek de yaver gitmiyor. Cok sacma sapan hatalarla karsilasiyorum. Zaten zindanlari epey bir degistirme, offical hallerine gore daha da kolaylastirma gibi bir planim vardi. Simdi ise hepsini sifirdan yazmayi planliyorum. Cunku internette buldugum questlerin neredeyse hepsinde bir problem oluyor. Bu problemeri cozmek icin harcayacagim zaman neredeyse sifirdan yazsaydim harcayacagim zamana esit olmaya basladi.

Mesela seytan kulesinin 4.katinda ilk basta bir tane metni kesiyorsunuz. Daha sonra ise 6-7 tane metin arasindan dogru metni bulmaya calisiyorsunuz. Benim kullandigim ilk questte 4.kattaki ilk metni kestikten sonra spawnlanan 6-7 metinden hep iki tane spawnlaniyordu. Neden oluyor diye bakarken su asagida resmini biraktigim kod su sekilde olunca 8016 vnumlu mob kesildigi zaman asagidaki kill eventi sebebini anlamadigim bir sekilde iki kere cagiriliyor:

Hata verin hali:
when kill with npc.get_race() == 8016 begin


error3.JPG

Iki kod arasinda nasil bir fark var hic bilmiyorum ama su son 4-5 gundur boyle sorunlari cozmekle ugrasiyorum. Son zamanlarda ugrastigim genellike quest ve zindanlar uzerine olan bu hatalar biraz motivasyonumu dusurdu dogrusunu soylemek gerekirse. Bilmiyorum quest yazma konusunda yeni oldugum icin mi boyle hatalarla karsilasiyorum. Altyapi olarak kullandigim files'a ait kafamda ciddi soru isaretleri var. Bakalim gelecek neler gosterecek. Okudugunuz icin tesekkurler!

Chrmgr ile ilgili bir sorun yok aslında burda sadece logunu yazdırıyor. Bu işlem başarıyla gerçekleşti gibi. Flush ederken de gördüğün gibi loga yazdırıyor.

Yazını okudum tamamen, ellerine sağlık bu files hazırlarken çoğumuzu tilt eden olaylardan biri. Aslında bu sinir olmanın arkasında mükemmeliyetçilik yatıyor. Motivasyonunu düşürme. Files geliştirme çok uzun bi serüven illa ki o hata bir yerde daha patlak vericektir.

Quest kısmında neden 2 kere spawnladığı hakkında herhangi bir fikrim yok açıkcası. Questleri 0'dan yazmak tercihimdir. İşi ymir'a bırakamayız xd.
 
En son bir moderatör tarafından düzenlenmiş:
şu kapatırken core verme olayı için;

gcc ile build ediyorsan makefile cflags kısmına -ggdb3 -O0

clang ile ediyorsan -g -O0

ekle, core verdiğinde gdb ile açmayı dene bakalım, bt full yazdığında neler çıkacak. bu arada ilk önce bt full yerine bt yazmanı da tavsiye ederim..
 
Chrmgr ile ilgili bir sorun yok aslında burda sadece logunu yazdırıyor. Bu işlem başarıyla gerçekleşti gibi. Flush ederken de gördüğün gibi loga yazdırıyor.

Yazını okudum tamamen, ellerine sağlık bu files hazırlarken çoğumuzu tilt eden olaylardan biri. Aslında bu sinir olmanın arkasında mükemmeliyetçilik yatıyor. Motivasyonunu düşürme. Files geliştirme çok uzun bi serüven illa ki o hata bir yerde daha patlak vericektir.

Quest kısmında neden 2 kere spawnladığı hakkında herhangi bir fikrim yok açıkcası. Questleri 0'dan yazmak tercihimdir. İşi ymir'a bırakamayız xd.
2-3 kere tam olarak ayni yerde core vermesinden dolayi sorunun oradan kaynakli olabilecegini dusunmustum. Dedigim gibi aklima baska bir sebep de gelmiyor.

şu kapatırken core verme olayı için;

gcc ile build ediyorsan makefile cflags kısmına -ggdb3 -O0

clang ile ediyorsan -g -O0

ekle, core verdiğinde gdb ile açmayı dene bakalım, bt full yazdığında neler çıkacak. bu arada ilk önce bt full yerine bt yazmanı da tavsiye ederim..
Tavsiye icin tesekkurler, en mantiklisi sizin dediginiz sekilde yapmak gibi.
 
Bu resimdekikini bende düşünmüştüm ama yeterli bilgiye sahip olaamadığım için hiç yapamadım. Başarılar dilerim. (y):coffee:
unknown.png
 
Geri
Üst