2010-06-08 20 views
8

Zaten birkaç basit oyun yaptım: bir seviye girin, sonuna kadar çıkın, bir sonraki seviyeye geçin.
Ama hala "gerçek" oyun geliştiricilerinin hikaye ile nasıl oyunlar yarattığını merak ediyorum. İşte Oyun Geliştirme: Hikaye oyununu nasıl yaparsınız?

bir hikaye oyunu neler birkaç şey vardır (ve bunu merak ediyorum nereye nasıl yaptıkları): yerlerden

  • bir dizi oyuncusu o ve ziyaret ve orada yapmak zorunda söyledi.
  • Bir erkeği ilk gördüğünüzde sadece merhaba diyor. Birkaç saat oyun ilerledikten sonra size belirli bir yere gitmek için bir ipucu verir.
  • Köprü üzerinde ilk kez yürürken, ikinci bir şey olmaz: Köprü düşer ve köprünün altına yeni bir yer girersiniz.
  • Yeni bir konum ilk kez girdiğinizde, örn. köylüler, vb. Bir dahaki sefere hiçbir şey olmuyor

Son noktalar üç katı aynıdır.
Ama onlar gibi şeyler tutmak için Boolean ve tamsayılar bir sürü bir save-dosyasına sahip sanmıyorum: ilk kez ....

  • Oyuncu girer Oyuncu vermedi

    • onuncu kez
    • Oyuncu o kişinin
    • vb
    - zaman inci ### konuştuk
  • o konum

    Hikaye oyunları hakkında konuşmak, ben düşünüyorum:

    • Legend of Zelda (serinin tüm oyunlar)
    • Okami

    Ve bunların birkaç örnek seviye-in-seviye-out oyunları:

    • Mario
    • Örgü
    • Crayon Physics

    Teşekkür

    Ben bunu Tarz tarz değişir bulacağınızı düşünüyorum
    +4

    "Ama onlar şeyleri tutmak için Boolean ve tamsayılar bir sürü bir save-dosyasına sahip sanmıyorum". Bir kayıt dosyasının amacı nedir o zaman? Oyunun dünyasının durumu olmasa bile bir kayıt dosyasında ne saklarsınız? – JAB

    +0

    Verilen liste, düşüncenin, kaydetme durumunun, oyuncunun şimdiye kadar aldığı her türlü eylemi ve belirli bir bağlam için anlamını taşıyacağını düşündüğünü ortaya koymaktadır. Açıkçası sistemin en azından çoğu oyun için bundan daha basit olması gerekiyor. Kahramanlar Şehri bir süredir tam da aynısını yapıyormuş gibi hissettiriyordu, aynı şeyi yaptıklarını hatırladığınız şeyler yapmak için geriye dönük başarılar elde edersiniz. –

    cevap

    5

    Normalde, bu oyunlar belirli karakterlerin davranışlarını ve setlerini ayarlamak için bir bayrak koleksiyonu kullanır. Bu, sonlu bir devlet makinesine çok benzer (genellikle doğrudan eşdeğer) olmaya çalışır; bu, soruna biraz daha genel ve güçlü bir yaklaşımdır.

    • Bir FSM belirli arayışının "ilerleme" izler - tutulur, hangi ileti atılan hangi anahtarlar vb
    • Her NPC o NPC "bilgi durumunu izlemek için bir FSM var - her devlet bağıntılar oyunda NPC yayı içinde belirli bir evreye, genellikle rastgele tırnak halde biten.
    • kaydedilen oyun, bir örnek olarak, oyun evrendeki her nesnenin durumunu izini sürebilir.

    Önemli olan, sadece devletlerin değil, aynı zamanda geçişlerin de tasarlanmasıdır. ey mümkün olduğu kadar kolay takılır.

    +0

    FSM kullanmak hangi noktada çok hantal hale gelir?Eğer nesnelerin çok sayıda mülkleri varsa, kolayca başa çıkmak için çok fazla devletle sonuçlanacağınız bir nokta olabileceğini düşünürdüm. – JAB

    +0

    Tek tek davranışları parçalamanın yolları vardır, böylece daha az sorun olur. Örneğin, birkaç soruşturma hattınızın olduğu bir sohbet modelinde, her bir çizgiyi çoğunlukla bağımsız olarak izleyen birkaç eyalet makinesine sahip olabilirsiniz. Açıkçası, teknik çözümün karmaşıklığı ile modelin karmaşıklığını dengelemek zorundasınız (örneğin, daha karmaşık durumlu makineler gerektirir). Bununla birlikte, FSM'ler üst düzey davranışları yönetmek için daha iyidir. Hikayeler, görevler, konuşmalar için iyi ama genel olarak AI değiller. –

    1

    ama oynamaya (kaydetmek dosyaya muhtemelen sadece bellekte bir veri yapısı içinde tutuluyor ve kaydedilmiş zaman kalıcı esnada sadece çeşitli oyunlar için bazı kaydetme dosyalarının boyutuna bakın, çoklu MB kayıt dosyalarını gördüm).

    1

    Hiç böyle bir şey üzerinde çalışmadım, ama genel yaklaşımın, oyun için gerekli olan tüm eylemleri yerine getirmesi için gerekli olan "GameState" yapısını yüklemek/kaydetmek/sorgulamak olduğunu varsayalım.

    örn.

    if(GameState.Player.Karma < 0 && GameState.NPCs.BillyTheInnocentLamb.KilledByPlayer) 
    { 
        GameState.NPCs.FredTheShephard.HatesPlayer == true; 
    } 
    

    Şimdi milyonlarca kez yapın ve kendinize bir RPG aldınız.

    +1

    'GameState.NPCs.BillyTheInnocentLamb.Killer.equals (GameState.Player) ', NPC'ler arası ilişkilere sahip olmak istemediğiniz sürece ve bana göre kuzu öldüren kimseyi umursamadan, bana daha mantıklı gelecektir. t Oyuncu. – JAB

    +0

    @JAB: Birisi sadece bir kez öldürülebilir. Ve bu örnekte oyuncu olacaktı. Yani sorunun ne olduğunu göremiyorum. –

    0

    Oblivion (fantastik bir oyun!) Denemek ve ona seni kullanarak, tamamen vb

    ek haritalar görevler inşa ederek oyuna kişiselleştirmek için izin verir onların İnşaat Set kullanabilirsiniz bakmak için yönetebilirsiniz ise mekanizmanın esasen diğerlerinin söyledikleri olduğunu görecektir: örneğin bir NPC'nin söyleyebildiği birkaç cümle vardır ve belirli koşullara bağlı olarak biri veya diğeri söyleyecektir. Mesela, iyi ya da kötüsün, onu bir şeye ikna etmenin ne kadar iyi olduğuna ya da ona rüşvet vermenin ne kadar iyi olduğuna, sahip olduğunuz/sahip olmadığınız belirli eşyalara, hatta günün saati gibi şeylere ne kadar iyi davrandığınıza!

    bu şeyin herhangi kolayca (/ 0 ile 100 arasında bir değer olabilir kötü, vb rüşvet vermektedir beceri için aynı iyi örneğin) ve sonra sadece sahip meselesi bir değerle ifade edilebilir görebileceğiniz gibi iFS :)

    0

    sürü Bildiklerine düşünüyorum

    "Ama onlar boole sürü ve şeyleri tutmak için tamsayılar ile save-dosya sanmıyorum". Bazen, bunun için resmi bir yapı olabilir: Örneğin, oyunun betik dilinden sorgulanabilen ve tasarım belgesindeki girdilere doğrudan uygun olabilecek, adlandırılmış sayaçların ve bayrakların bir listesi olabilir. Oyun, sayaçları artırabilir ve oyun içi olaylara yanıt olarak bayrakları ters çevirebilir ve hangi eylemleri gerçekleştireceğine karar verirken bu bayrakları ve sayaçları sorgulayabilir ve tüm parti küçük bir biçimde kolayca kaydedilebilir.

    İlgili konular