Hayır. En azından, muhtemelen değil.
Bu, tekerleği yeniden icat etmenin çok sık rastlanan bir durumudur, oyun geliştirme, hala oldukça popüler bir hatadır.
Bu soruyu soruyorsanız, diğerlerinin yaptıklarından etkilenme olasılığınız çok yüksek, bu yüzden Unic Engine ile Epic Games'in yaptıklarına bir bakın:
- UE3'ün özel, garip, optimize edilemeyen, hata ayıklaması zor bir UnrealScript özelliği vardı,
- Söylenti doğruysa, desteği , yeniden yüklenebilir C ++ DLL'lerin lehine UE4'te kaldırılıyor .
Epic'ten daha iyisini yapabileceğini düşünüyor musun?
Program oluşturma dilleri oluşturmak , oyun mühendislerine değil, programlama dili yaratıcılarına aittir .
Bir dilin tamamen olgunlaşması yıllar ve yıllar alır ve beraberindeki araç seti (derleyici, bağlayıcı, tercüman, hata ayıklayıcı ..) kullanılabilir. Günümüzde elinizde birçok çözüm bulunmakta, bu nedenle sıfırdan yeni bir şeye başlamak için kesinlikle hiçbir neden yok, en azından amaç sadece bir oyun yapmak değilse. Dönemi.
Yan sorularınızı yanıtlamak için, hayır, bu sebeplerden dolayı hiçbir zaman kendi senaryo dilimi oluşturmadım. Ama bazı yarı pişmiş olanlar ile çok acı çektim. Akılda tutulan çok dar bir özellik ile oluşturuldukları için, her zaman sizi deli kılan bu küçük tuhaflıklar vardı. Sık sık, sadece oyununuzu yapmak yerine sadece dilin sınırlarını aşmaya çalışmak için çok fazla zaman harcıyorsunuz.
Dil oluşturmak istemenizin nedeni, programlamayı çok iyi bilmeyen insanlar tarafından kullanılması amaçlanmışsa veya çok etki alanına özgü bir şey istediğiniz için ihtiyaç duyduğunuza inanıyorsanız, bunların da size Kötü sebepler. Fonksiyonlarını do_what_they_say_and_say_what_they_do()
ve temel kullanımlarını ortaya koyan bazı basit kazan kodlarını içeren çok üst düzey bir API yazabilirsiniz . Teknik olmayan kullanıcılarınız biraz programlama öğrenmekten memnun olacak ve kötü uygulanmış bazı dillerle sınırlı olmamaktan memnun olacaksınız.
Yani, bu biraz ani ve hatta sert görünecek gibi , mantıklı gelebilecek bir durum olduğunu söyleyeceğim : Eğer bir betik dilinin nasıl yapıldığını öğrenmek istiyorsanız. Ama lütfen, lütfen, eğer öyleyseniz: başkalarını kullanmaya zorlamayın.
Düzenle
Bağladığın Mağara Hikayesi komut listesine bir baktım. ah:
<ECJx:y [EC?] Jump @ Jump to event Y if any npc with ID X is present
Cave Story'nin arkasındaki geliştiriciye saygısızlık etmek istemem ama bu, kontrol edilemeyen özel bir betik dilinde değiştirilen basit bir komut listesine mükemmel bir örnek. Bu, tek bir geliştirici veya çok küçük bir ekip için hala kullanılabilir, ancak bu aşamada, yapabileceğiniz uygun bir Turing-eksiksiz ve iyi denenmiş bir dile (örneğin Lua) geçmenizi öneririm:
if (npc.id == x) then
jump_to_event(y)
end
Bu, örneğin daha karmaşık bir duruma ihtiyaç duyduğunuzda, işleri daha da kolaylaştıracaktır:
if (npc.id == x) or (npc.type == "enemy") then
jump_to_event(y)
end