Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
Sayfa: 1 2 [3] 4 5 ... 7   Aşağı git
Yazdır
Gönderen Konu: River Raid (atari 2600) Remake  (Okunma Sayısı 75457 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
hakanzade
Ziyaretçi
« Yanıtla #30 : Mayıs 16, 2009, 18:14:40 ÖS »

Eğer gerçeğine uygun yapılacaksa şöyle bir değişiklik dikkatimi çekti, normalde uçağın ateşinin geçebildiği her türlü aralıktan uçakta patlamadan geçiyordu, burda uçağın kenarı deyse patlıyor, ama bu sadece patlama için geçerli, uçağın kanadını deydirerekte benzin alınabiliyor, aza önce c64 için olanını oynadım.
Logged
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.756


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #31 : Mayıs 16, 2009, 19:31:01 ÖS »

6502'den anlayanlar var aranızda, oyunun random haritayı yaratma şeklini çözebilirsek süper olacak hesaplama şeklini bilirsek sadece bir feed ile tüm harita hazır olacak Kahkaha

Arda, haritanın random hesaplandığından emin misin?
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
Arda
Uzman
*****
Mesaj Sayısı: 2.326


I'm *the* guy from Argleton


Üyelik Bilgileri WWW
« Yanıtla #32 : Mayıs 16, 2009, 20:21:31 ÖS »

6502'den anlayanlar var aranızda, oyunun random haritayı yaratma şeklini çözebilirsek süper olacak hesaplama şeklini bilirsek sadece bir feed ile tüm harita hazır olacak Kahkaha

Arda, haritanın random hesaplandığından emin misin?

elbette. Random demek her seferinde ayrı çıkıyor demek değil. Haritayı oluşturan random algoritmanın sabit bir besleme değeri var. Böylece her oyunda aynı harita açılıyor. tabii kartuşu hackleyip seed'i değiştirirseniz başka bir levelden başlar(default değer $14A8). Riverraid random algoritması 57337 farklı level oluşturabiliyormuş.

river raidde her level 16 random bloktan oluşuyor. Her blok kendi içinde iki bloğa ayrılmış durumda. 16 numaralı blok herzaman köprü. diğer 15'i geniş, dar, ada, helikopter, gemi vs. dolduruluyor.
« Son Düzenleme: Mayıs 16, 2009, 20:25:00 ÖS Gönderen: Arda » Logged

Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.756


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #33 : Mayıs 16, 2009, 21:36:41 ÖS »

Doğru diyorsun şimdi eski basic programlarını hatırladım. Random number oluşturmak için seed (senin besleme değeri dediğin) olarak zamanlayıcıdan dönen değer kullanılıyordu.

Kod:
10 RANDOMIZE TIMER
20 A=INT(RND(100))+1
30 PRINT "1-100 ARASI RASTGELE SAYI:";A
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.756


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #34 : Mayıs 16, 2009, 21:38:59 ÖS »

Bu default $14A8 değeri değiştirilerek farklı River Raid versiyonları yapılabilir mi acep?
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
Arda
Uzman
*****
Mesaj Sayısı: 2.326


I'm *the* guy from Argleton


Üyelik Bilgileri WWW
« Yanıtla #35 : Mayıs 17, 2009, 10:36:22 ÖÖ »

Bu default $14A8 değeri değiştirilerek farklı River Raid versiyonları yapılabilir mi acep?

zaten hepsi öyle yapılıyor. Farklı river raid versionu yapmanın başka yöntemi yok herhangi bir haritayı 4k'lık kartuşa sığdırmak pek mümkün değil.



Evet arkadaşlar, WOS'u taikp eden varsa bilir, bu başlıktaki ilker'in çalışmaları bana river raid'in 8bit versionlarının ne kadar berbat olduğunu hatırlattı. Özellikle zx spectrum portu. Sonra steem ile bir el river raid oynamak istedim. Sonra dikkatimi çekti ki orjinal river raid'in düzgün bir portunu yapmak biraz sihirle mümkün olabilir. Kafamdaki fikirler ve tasarımlarımı diğer spectrum kullanıcıları ile paylaştım.

Aşağıda bu tartışlamalarımızın meyvesi görülüyor. Spectrum'u biraz tanıyan varsa aşağıdaki görüntünün spectrumda çizilmesinin mümkün olmadığını bilir. Joefish, 4-5 demo coder'ının da ipuçlarını kullanarak, river raid oyununun aslına çok uygun bir şekilde yapılmasının mümkün olduğunu göstermiş oldu.

Aşağıdaki demo'da spectrum border'ına yollar çiziliyor, 8x1'lik renk bilgisi ile renklerin birbirine karışmaması sağlanıyor. 1 pixellik yumuşak bir scrolling de mevcut.


http://www.veanewmedia.com/ardae/fish/sinclair/Joefish_River_Raid_Tech_Demo_01.tap

Bu demo'nun oyuna dönüşmesi çok ama çok karmaşık bir iş, fakat diklemesine tam ekran olan oyun alanı orjinalindeki gibi dar boyuta indilirdiğinde biraz daha işlem yapacak zaman kalacak gibi.

ilkerin başlığını dağıtmak amacında değilim, bu sonucun çıkmasının yegane sebebi yaptığı river raid klonudur, bir kıvılcımın ne tür sonuçlar çıkarabileceğinin bir göstergesi sadece.
« Son Düzenleme: Mayıs 17, 2009, 10:41:01 ÖÖ Gönderen: Arda » Logged

ilkergorkem
Üye
***
Mesaj Sayısı: 179



Üyelik Bilgileri
« Yanıtla #36 : Mayıs 17, 2009, 12:41:06 ÖS »

Herkese merhaba , 9 gündür foruma girmiyorum desem yeridir bütün boş anlarımda oyunu kodlamaya çalışıyorum. En son halini dün 19:55 de aldı. Level ların kodlamasını tamamladım. Dizayn edilmesi gerekicek sadece . Level’ların kodları 4 gün uğraştırdı beni benim örnek aldığım Stella daki river raid e göre olsun isteyince. Flash da movieClip lerin derinliklerini ayarlamaya uğraştım. Sonunda problemin kütüphaneden çekilmeden direkt ekrana basılan yakıt göstergesininde oldugu panel den kaynaklandığına karar verdim ki öyleymiş gerçekten. Sorun şu idi: Bir level biterken yeni level da üstten başka bir movieclip olarak akmaya başlamalı ama köprü vurulamazsa yeni hakta eski leveldan başlamalı, yada köprü vurulursa ama eski levelda son anda çarparsan yeni level dan başlamalısın bunların derinlik olayına bir de panelin derinliği girince movieclip panelin üstüne geliyodu vs. Dün bunlar bitince bir rahatladımki ohhh dedim ama kısa sürdü hemen yeni levellarda düşman hareketlerini düşünmeye başladım kısa sürer derken epey bir zorlayacak gibi oldugunu anladım. (diziliş itibari ile helikopter burnunun oldugu yöne hareket etmeli) ilk problem bu. acaba orjinalde her helikopter için tek tek mi data verilmiş vs.

Diğer yandan ,
+ Sağa sola yukarı aşağı ivmeli hızlanma tamam
+ merminin hızı da arttırıldı orjinali gibi
+ scroll olayını 30 dan 45 frame çıkarıp iyice pürüzsüz hale getirdim tabi normal, yavaş, hızlı gidişlerde ki zaman kısalınca onlarıda değişkenlere koydum birdaha frame ile oynarsam işim kolay olacak


@ Arda , şu an oyun bitince ‘d’ tuşuna basarak restart oluyor aslında F2 yaptımda flash da çalışırken F2 olmuyor diye hiçbirşeyi etkilemeyen d tuşuna atadım. Ayrıca dün aklına gelip göz atman beni çok sevindirdi hatta RiverRaid olarak boşluksuz denemeyi bile düşünmüşün, adresi değiştirmiştim çünkü.

@ Alp Yener , seslere dün başlasam mı dedim ama yine sonraya bıraktım. Düşman hareketlerine başlamaya karar verdim.

@ wizofwor , dikkatli incelemen için teşekkürler ama benim baz aldığım stelladaki river raid de de space basılı tutarsan sürekli ateş ediyor. Ama tabiki ateş den sonra ya ekranı terkedecek yada bişeylere çarpacak ki yenisi ateşlensin yoksa ard arda ateşlenmiyor

@hakanzade , demek istediğin anlayamadım ama belkide c64 de oynadığın içindir , orda kenarlarda morumsu bir border mı vardı onlara çarpmıyodu galiba yıllardır c64 de oynamadım hatırlamıyorum tam olarak ve c64 deki karalar çok girintili çıkıntılıydı. Onu demek istedin sanırım ?

@ Özay Turay , yakın takibin için teşekkürler

Ve son olarak sizlere
-- Sorum şu : Ben düşmanları dizilerde tuttum
var helicopters:Array = Array("h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8");  ve for döngüsü ile çarpışmaları kontrol ettim. Şimdi nasıl yapmış diye düşünüyorumda bizim abla . Mesela hareket ilk defa ilk level ın sonunda yavaşlarsanız son helikopterde ve tanker ile başlıyor ve sonraki levellarda var. İlk başta düşündüğüm level 2 den itibaren uçak düşmana belli bir mesafeye geldiğinde random olarak ya olsun ya olmasındı. Hadi burası kolayda . Eğer bu hareketi yukardaki dizinin kontrol edildiği for da yapınca tüm helikopterler her an hareket halinde ve birisi karaya değdiğinde dönerken diğerleride dönüyor. Yani ayrı ayrı helicopterlere sen şu an da git demek mi lazım bir de bir sağa biri sola bakarken ilk harekette kıçın kıçın gidiyorlar  . Aslında çok çaresiz kalırsam sorarım diyordum ama şu an içimden paylaşmak geldi .




// HELICOPTERS
         for (var h = helicopters.length-1; h>=0; h--) {
            if (_level0[ykopru][helicopters[h]].hitTest(plane)) {
               var helicopterName:String = _level0[ykopru][helicopters[h]];
               crashHeliAnim(helicopterName);
               crashAnim();
            } else if (_level0[exykopru][helicopters[h]].hitTest(plane)) {
               var helicopterName:String = _level0[exykopru][helicopters[h]];
               crashHeliAnim(helicopterName);
               crashAnim();
            }
         }
 
Logged

ZX Spectrum 48K+ , Amiga 1200 , ZX Spectrum +2 , Amstrad 6128
---------------
7D9 Oyun Yarışması 2.si Board Soccer
7DX Oyun Yarışması 3.sü Run Baby Run
7DX 2013 Oyun Yarışması 3.sü Falcon Patrol
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.785


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #37 : Mayıs 17, 2009, 13:28:59 ÖS »

Düşman hareketleri yok ama bu haliyle bile ölmeyi beceriyorum. Demek ki iyice paslandık artık.

Bence de şimdilik seslerle uğraşmasan daha iyi. Çünkü seslerle uğraşmak bayağı bir zamanını alacaktır. ve sürecin sonunda oyunun oynanabilirliği artmayacak. Düşman harektelerinin daha faydalı bir konu olduğunu düşünüyorum.
Logged

Arda
Uzman
*****
Mesaj Sayısı: 2.326


I'm *the* guy from Argleton


Üyelik Bilgileri WWW
« Yanıtla #38 : Mayıs 18, 2009, 12:35:39 ÖS »

Ve son olarak sizlere
-- Sorum şu : Ben düşmanları dizilerde tuttum
var helicopters:Array = Array("h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8");  ve for döngüsü ile çarpışmaları kontrol ettim. Şimdi nasıl yapmış diye düşünüyorumda bizim abla . Mesela hareket ilk defa ilk level ın sonunda yavaşlarsanız son helikopterde ve tanker ile başlıyor ve sonraki levellarda var. İlk başta düşündüğüm level 2 den itibaren uçak düşmana belli bir mesafeye geldiğinde random olarak ya olsun ya olmasındı. Hadi burası kolayda . Eğer bu hareketi yukardaki dizinin kontrol edildiği for da yapınca tüm helikopterler her an hareket halinde ve birisi karaya değdiğinde dönerken diğerleride dönüyor. Yani ayrı ayrı helicopterlere sen şu an da git demek mi lazım bir de bir sağa biri sola bakarken ilk harekette kıçın kıçın gidiyorlar  . Aslında çok çaresiz kalırsam sorarım diyordum ama şu an içimden paylaşmak geldi .

Oyunun kaynak koduna göre konuşursam,
oyun önce görüntüye girecek her bloğu on-the-fly yani anında yaratıyor. Yani bir levelin tüm haritası bir kerede yaratılmıyor. Yaratılacak blok iki alt bloktan oluşuyor. Yani totalde her level 32 miniblok uzunlukta. Her bir mini blok yaratılırken oyun şunun kararını veriyor:
bu blokta ne olacak? fuel, düşman(heli/gemi/uçak) ya da ev.
Eğer düşman ise x pozisyonu belirleniyor ve YÖNÜ ayarlanıyor.

Unutmayın ki atari 2600'de sadece 128b (evet byte) ram var. Ve oyunların tüm değişkenleri bu aralıkta tutulmalı.

Bu durumda önceden ayarlanmış bir hareket yok, o da random tutuluyormuş. Hatta tam olarak söylersem, her 16 satırda bir atılan zarla sıradaki düşmanın hareket edip etmeyeceği hesaplanıyor.

Oyuna bakınca sanki kolaydan zora doğru gidiyormuş gibi geliyor. Bu sıralamayı bulabilmek için oyunu yazanlar birsürü Random Seed denemişlerdir eminim.


son olarak bir bloğun datasının nasıl tutulduğuna bakalım:


PF1_PAGE_FLAG   = %00000001     ; harita deseninin hangi page'de tutulduğu
PF2_PAGE_FLAG   = %00000010     ; devamı
PF_COLOR_FLAG   = %00000100     ; devamı
DIRECTION_FLAG  = %00001000     ; objenin gidiş yönü
PATROL_FLAG     = %00010000     ; düşmanın gidiş yönünü değiştirmek için
PF_COLLIDE_FLAG = %00100000     ; düşman karaya çarptı
ENEMY_MOVE_FLAG = %01000000     ; hareket ediyor
PF_ROAD_FLAG    = %10000000     ; yol ve köprü göster

evet tüm data 1 byte içinde tutuluyor. O blok içindeki düşmanı hareket ettirmek için rastgele olarak move_flag işaretleniyor, ve patrol flag'a göre kaydırılıyor. Eğer collide_flag set edilmiş ise yön değiştiriliyor.
« Son Düzenleme: Mayıs 18, 2009, 12:47:09 ÖS Gönderen: Arda » Logged

Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.756


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #39 : Mayıs 18, 2009, 13:06:54 ÖS »

128 byte hafıza ve ışın tabancasının bulunduğu her satırda o satırın önceden hesaplanmış olması gerektiğine göre atari programcıları baya bir saç baş yolmuşlar zamanında.
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
LW3D
Yönetici
*****
Mesaj Sayısı: 11.418


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #40 : Mayıs 18, 2009, 13:08:18 ÖS »

küçük bir hatırlatma...River Raid Carol Shaw adlı bir bayan tarafından yazılmıştır ve kendisi ilk bayan oyun tasarımcısı olarak bilinir...

http://en.wikipedia.org/wiki/Carol_Shaw_(video_game_designer)
Logged

ilkergorkem
Üye
***
Mesaj Sayısı: 179



Üyelik Bilgileri
« Yanıtla #41 : Mayıs 21, 2009, 19:07:09 ÖS »

Beklenmedik bir problem ve henüz çözemedim. Kaynak dosyayı koydum MeG yada flash ile uğraşan başka arkadaş varsa belki çözümü bulabilir. Burası flash sitesi değil derseniz özel den fikirlerinizi paylaşırsanız sevinirim. Sorun kısaca şu: helikopter yada tanker MC'si(movie clip) kopru1 MC'sinin içindeki kara1 MC'sine ye çarpıyo mu diye kontrol edicez. helikopter root da ise sorun yok ama oyundaki yapı gereği helikopterinde kopru1 in içinde durması gerekiyor. Ve bu pozisyonda abuk subuk davranıyor... örnek dosyada tanker sapıtmış durumda ordan inceleyebilirsiniz.

http://www.izlehayati.com/RiverRaid/RiverRaid1.html

* crashTest.zip (160 KB - Yükleme: 330 kez.)
Logged

ZX Spectrum 48K+ , Amiga 1200 , ZX Spectrum +2 , Amstrad 6128
---------------
7D9 Oyun Yarışması 2.si Board Soccer
7DX Oyun Yarışması 3.sü Run Baby Run
7DX 2013 Oyun Yarışması 3.sü Falcon Patrol
ilkergorkem
Üye
***
Mesaj Sayısı: 179



Üyelik Bilgileri
« Yanıtla #42 : Mayıs 21, 2009, 19:08:01 ÖS »

ekdeki dosyanın zip uzantısını fla ya çevirip bakabilirsiniz
Logged

ZX Spectrum 48K+ , Amiga 1200 , ZX Spectrum +2 , Amstrad 6128
---------------
7D9 Oyun Yarışması 2.si Board Soccer
7DX Oyun Yarışması 3.sü Run Baby Run
7DX 2013 Oyun Yarışması 3.sü Falcon Patrol
MeG
Deneyimli
*****
Mesaj Sayısı: 642


Super Kahraman


Üyelik Bilgileri WWW
« Yanıtla #43 : Mayıs 22, 2009, 14:26:24 ÖS »

Kafam karıştı..
Sayfada 2 tane flash var.. üstteki mi sorunlu alttaki mi? Verdiğin kaynak da alttakinin.. *-)
Logged
MeG
Deneyimli
*****
Mesaj Sayısı: 642


Super Kahraman


Üyelik Bilgileri WWW
« Yanıtla #44 : Mayıs 22, 2009, 14:53:57 ÖS »

Daha önce yaptığım oyunda da(platform.. release edilmemiş) düşmanların sağa sola hareketi vardı.. ama platform olduğu için bir sınır kullanmıyordum.. verdiğim movie clip frame uzunluğu kadar gidip geliyorlardı... Ve hit durumu olunca Tavşan yanıyordu
Burda da düşmanın gittiği yönle alakalı her frame'in bir üst layerında action açıp duvara bir hit olma durumu varsa geri dön şeklinde yapılabilir.. (işin hammalı kısmı)
 En güncel halini bana mail atarsan flash’da bakarım patron..
Logged
Sayfa: 1 2 [3] 4 5 ... 7   Yukarı git
Yazdır
Gitmek istediğiniz yer: