Prototip yaparken, oyun davranışını nasıl daha kolay keşfedebilirim?


49

Ben kendi kendime indie oyunlar yapıyorum, ancak davranışları ile oynamanın mümkün olduğu bir seviyeye yeni geliştirilen bir oyuna girdiğimde genellikle enerjim bitiyor. Berbat sonuçlarla.

Arıtma ve keşifler
( Intercom blogundan resim )

Örneğin, tweaking davranışı için yineleme döngülerinin (yani bir C ++ uygulamasını bağlama ve yeniden başlatma) tüm yaratıcılığı öldürecekleri kadar uzun olduğunu buldum. Bununla başa çıkmak için bir araç yapıyorum.

Oyun davranışını hızlıca keşfetmek için başka hangi yollar var? Bağımsız geliştiriciler ve daha büyük şirketler tarafından kullanılan metodolojilerle ilgileniyorum.


1
Bu çok hoş bir resim. Bu nereden?
Superbest

Bence yaptığınız resmen "birim testi" olarak adlandırılıyor, özellikle de oyunun küçük bir bölümünü değiştirmek istiyorsanız. Maalesef, oyunların test edilmesi zor, çünkü bileşenleri izole etmek zor ve testin kendisini otomatikleştirmek zor (başarılı / başarısız olduğuna karar verebilmek için). Birim test stratejileri hakkında okumak, size faydalı fikirler verebilir.
Superbest

5
@ Süper: İçimde birim testini biliyorum ve davranış araştırmasını birim testiyle karşılaştıramazsınız. Davranışı araştırırken, oyun motorunuzun çoğunda, ilgili varlıklar ile birlikte yüklü olması gerekir. Birim testi yalnızca nereye gittiğinizi bildiğiniz zamandır; bu durumda kimse bilmiyor. Bu yüzden “incelik” değil “keşif”. Intercom blog’undan Pic .
Jonas Byström

Hata ayıklama modunda test ederken, duraklattığınızda kodunuzu değiştirebilirsiniz (en azından görsel stüdyoda). Çok fazla değişmediğiniz sürece (fonksiyon başlıkları vb.), duraklatılmış oyuna kısa bir derleme süresi ile yükleyebilirsiniz
Tobias B

@ TobiasB: pratikte ne yazık ki bunu işe yaramaz buldum. Özellikle normal olarak oyun teknisyeninizin senaryolarda, zaten oyun nesnelerinde, varlıklarda vb. Özgür Visual Express'in desteklediğinden bile emin değilim, aslında 14 yıldır kullanmadım! :)
Jonas Byström

Yanıtlar:


30

Sizin de belirttiğiniz gibi, oyun mekaniği üzerinde çalışırken, yineleme hızı çok önemlidir. Bir modifikasyonu düşünme ve bu modifikasyonla test edebilme arasındaki süre ne kadar uzun olursa, o kadar az üretken olacaksınız ve o kadar rahatsız olursunuz. Sonuç olarak, yineleme zamanınızı kesinlikle yönetmek istiyorsunuz.

Benim için basit bir değişikliğin test edilme süresi yaklaşık beş saniyeyi aştığında verimliliğimin gerçekten azalmaya başladığını görüyorum. Bu yüzden oyunun nasıl hissettiğini mükemmelleştirmeye çalışırken, hedeflerinizden birinin "nasıl bir değişiklik yapabilirim ve sonra bu değişikliği beş saniyenin altında oynayarak oynayabileceğimi" bulmak zorunda kalması gerekir. Bu yineleme zamanını bu seviyeye kadar tutabildiğiniz sürece, nasıl yaptığınız önemli değildir.

Birçok büyük modern motor (Unity, Unreal, vb.), Editörlerini oyun motorunun içine koyarak bunu yapmaya meyillidir, böylece çoğu değişikliği oyunu yeniden başlatmadan canlı hale getirebilirsiniz. Küçük motorlar / oyunlar genellikle işi diğer yöne odaklar; oyunu derleyin ve o kadar çabuk başlatın; her değişiklik için oyunu yeniden başlatmanızın bir önemi yoktur; Beş saniyelik süre dolmadan önce hala testte olacaksınız.

Şu anki projemde küçük bir yeniden derleme yapmam, bağlantı kurmam, oyunu başlatmam ve daha sonra oynanmaya ulaşmam (çoğu kaydedilmiş bir oyun yüklerken inanılmaz dünya geometrisi üretiyor). Ve bu çok uzun. Bu yüzden, tüm gerçek oyun varlıklarını yüklemeden oyunun farklı bölümlerini test etmeme izin veren ayrı "test" oyun modları oluşturdum, böylece çok daha hızlı bir şekilde girip çıkabiliyorum; tipik olarak yaklaşık iki ila üç saniye içinde. Eğer bir kullanıcı arayüzünü test etmek istersem, bunu gerçek oyuna yüklenmeden yapabilirim. Render testi yapmak istersem, bütün oyun sistemini yüklemeden tekrar test edebileceğim başka bir modum var.

Oyun mantığını bir DLL'e yerleştirerek soruna yaklaşan ve hafızadaki oyunun çalıştırılabilir olmasına izin verirken oyun çalışırken DLL'i yeniden yüklemesine izin verdim, bu yüzden DLL'i yeniden oluşturabilir ve içinde yeniden yükleyebilirsiniz. önceden yüklenmiş bir yürütülebilir dosya olduğundan, oyununuzun sanat varlıklarını yeniden yüklemenize / yeniden oluşturmanıza gerek yoktur. Bu bana delilik gibi görünüyor, ama ben bunu gördüm.

Bundan daha basit, komut dosyalarında veya veri dosyalarında oyun davranışlarını ve / veya konfigürasyonlarını belirtmek ve sisteminizin bu dosyaları talep üzerine veya belki de sadece değişiklikleri izlemek için onları kapatmaya gerek kalmadan yeniden yüklemesini sağlamak için bir yol sağlamaktır. Oyun bittiğinde yeniden bağlayın ve yeniden başlatın.

Çok fazla yaklaşım var. Sizin için en iyi olanı seçin. Ancak, oyun tamircisinin başarılı bir şekilde geliştirilmesinin anahtarlarından biri son derece hızlı yinelemedir. Buna sahip değilseniz, başka ne yaptığınız önemli değildir.


3
"Test" oyun modlarını açıklayabilir misiniz? Ne zaman yinelemek istersen, her bölüm için burada ve orada oyunun bir dilimini yaratıyor musun? Diliminizi ayarlamak için ne kadar zamana ihtiyacınız var? Ne kaldı ve nasıl? Bu tür bir şey için bir çeşit "oyunu kaydet" ve "oyun yükle" işlevine sahip misiniz, yoksa daha mı genel?
Jonas Byström,

2
@ JonasByström Onun hakkında hiçbir şey bilmiyorum ama oyun durumlarım üzerinde iyi bir kontrolüm olduğunda, IF DEBUGdoğrudan "test" durumuma (oyun menüsünü atlayarak) dönen alternatif "Hata Ayıklama" sürümlerine (genellikle hazırlayıcı derleyici yönergelerine) sahip olabilirim. Çıplak bir kemik olan vb.) o zaman test ettiğim varlıklar ne olursa olsun oyun alanıdır. Bu yüzden temelde otomatik olarak çok soyulmuş bir seviyeyi yükleyen alternatif bir çalıştırılabilir derlerim (yüklenecek daha az varlık + her seferinde oyun menüsü ile uğraşmaz).
Superbest

@ JonasByström Oyunlarımı "modlara" bölüyorum. Temelde sadece büyük bir devlet makinesi. Bu yüzden tipik olarak bir "Başlık Ekranı" modu, "Oyun İçi" modu, "Kredi Kaydırma" modu vb. "Test" modlarım, başka bir oyun içeriği yüklemeden basitçe bir kullanıcı arayüzü yükleyip çizecek olan "UITest" gibi şeylerdir. Veya belirli bir nesneyi başka bir şey yüklemeden yükleyen ve çizen "RenderTest".
Trevor Powell

@ JonasByström Yeni bir test modu oluşturmam gerektiğinde, test etmek istediğim belirli şeyi ve sahip olabileceği herhangi bir bağımlılığı ayarlayan kodu yazmak genellikle birkaç dakika sürecek. Veya dönüşümlü olarak, mevcut bir test modunu birkaç saniyede sık sık uyarlayabilirim (Örneğin, genellikle yeni bir tane oluşturmak yerine farklı bir UI parçası yüklemek için mevcut UITest modumu değiştiririm). Yine de ne kadar zaman alması gerektiği önemli değil; Mesele şu ki, bir kere ayarlandıktan sonra, çok hızlı bir şekilde yineleyebiliyorum, bu da bu yineleme süresi boyunca beni üretken tutar.
Trevor Powell,

1
@ JonasByström Aynı zamanda “daha ​​hızlı bir bilgisayar satın almanın”, “yineleme zamanımı nasıl azaltabilirim” sorusuna da tamamen yasal bir çözüm olduğunu belirtmekte fayda var. Özel test donanımları uygulamak için zamanınızı harcamakla kıyaslandığında, çoğu zaman en ucuz çözüm olabilir. İterasyon sürenizi kısaltmak, çok fazla zaman / para / çaba harcadığınız, ancak yol boyunca çok fazla kar payı ödeyeceğiniz bir yatırımdır .
Trevor Powell

20

İyi prototip yapmak için, test fikirlerinin maliyetini düşürün.

İş akışım küçük oyunlar için ayarlandı, ancak şu şeyleri faydalı buldum:

  • Prototip dostu teknoloji  bunu yararlı gibi dinamik bir programlama dili ve çerçeve kullanmak buldum Lua ( Aşk 2D için güzel), JavaScript veya Lisp / Planı hatta maliyetle, bir şeyler yapmak için programı alma asgari tuş vuruşlarını gerektirir her şeyden. Ne istediğinizi öğrendikten sonra, hassaslaştırmak istediğinizde, optimize edin veya başka bir motora aktarın.
  • Sürüm kontrolü  Prototipleri revizyon kontrollü bir depoda tutun . Dal erken, sık sık dal. Bu, bir şeyi kaybedeceğiniz veya bir şeyleri unutacağınız konusunda endişelenmeden denemenizi kolaylaştırır. ( Git en ucuz dallanma modeline sahiptir.)
  • Otomasyon oluşturma Otomasyonun çalışmasını  sağlamak için mümkün olduğunca az işlem yapmanız gerektiğinden emin olun. Bence, hatta fazla olduğunu bir düğmeye basmak zorunda: Genellikle bir var Makefilebir ile make watchçalışan hedefe inotifywaitotomatik / derleme oyun çalıştırarak değişiklikleri dosyaya tepki, bir döngü içinde. Yorumlanmış veya JIT tarafından derlenmiş bir dilde, bu anında.

1
Lua, hotswapping kodunu desteklemiyor gibi görünüyor. Bu, değişikliklerinizi test etmek için oyununuzu / prototipinizi yeniden başlatmanız gerektiği anlamına mı geliyor?
Jonas Byström

6
Hotswapping Lua kodu kesinlikle mümkündür.
Josh

1
@ JonasByström Mümkün, ancak yalnızca doğru ortamda. Bulamazsanız, bir tane yazın, Lua'nın kaynak kodu C dilinde yazılmıştır, böylece C tarzı işlev çağrılarını kabul eden herhangi bir şey için taşınabilir. OpenGL, SDL 2 veya başka bir grafik / harware sarma kitaplığı ile karıştırın ve kendinize hareketli bir IDE oluşturun.
Pharap


2
@ JonasByström: ... görünüşe göre aya geri dönmem dışında. :(
Mason Wheeler

11

Çoğunlukla prototiplemeye odaklanan bir geliştirici olarak, işte deneyimimden bir tavsiye.

  1. HIZLI değişiklik yapmanızı sağlayan bir motor kullanın. Bu, "Derlemeyi beklememek", aynı zamanda "çalışma zamanında şeyleri değiştirmek", "hata ayıklama kolaylığı", "test varlıklarının kullanılabilirliği" vb. Gibi şeyleri içerir. Kişisel olarak Unity3D'yi seviyorum, ancak buradaki en iyi araç değil . En iyi araç oyuna bağlıdır: örneğin, Unreal Engine, Unity3D'den daha yavaş kod derler, ancak hızla birden fazla bağlı istemciyi başlatabilir. Ağ bağlantılı bir oyun için bu derleme maliyetlerini genellikle karşılar. Ayrıca aşinalık düşünün. C ++ 'ta bir vızıltıysanız, en iyi Javascript motoru bile pek iyi olmaz ve tam tersi olur. Bilmediğiniz teknolojilerle mücadele etmek için zaman harcamayın (yani, diğer dilleri / çerçeveleri öğrenirim, fakat aynı zamanda önemli prototipler üretmezler).
  2. Mevcut özellikleri acımasızca hurdaya çıkarmayı öğrenin. Halihazırda uyguladığınız şeylere tutunmak başarılı prototiplerin bir özetidir, ancak çalışmanızı bırakmanız zordur.
  3. Bir oyun tasarımcısıyla çalışmazsanız, "bir programcının şapkasını takma" ile "bir tasarımcının şapkasını takma" arasında net bir çizgi koyun. Yeni bir serin oyun özelliği ekleme çok cazip görünüyor, ama yok sen tasarımcı pozisyonunda olunca böyle yapar. Aksine, sahip olduklarınızla eğlenceli bir oyun (tercihen birden fazla türev) oluşturmayı deneyin; yardımcı olacak özelliklerin bir listesini yapın ve sonra bunları uygulayın.
  4. Hızlı prototipleme, iki karşıt arasındaki dengeyi içerir. Mümkün olduğu kadar çabuk şeyler yapmak istiyorsan, kötü kod yazarsın. Ama bir şeyi mümkün olduğunca değiştirmek istiyorsan iyi kod yazmalısın! Bu ikisini dengelemeyi öğren. Üzgünüm, bunun nasıl yapılacağı hakkında somut bir tavsiye düşünemiyorum, ama en azından bu sorunun bilincinde olun (-8

Prototiplemenizin ne kadar zaman gerektirdiğine bakın. Tecrübelerime göre, en fazla iki gün içinde oynanabilir bir versiyonuna sahip olmak istersiniz - sıfırdan başlayarak; ve her gün bir veya iki yeni özelliği test etmek istiyorsunuz. Bu hedeflere ulaşmıyorsanız, daha hızlı olmanın yollarını arayın.


Özelliklerin davranış araştırmasından farklı olduğunu düşünüyorum. "Hisseyi" keşfetmek istiyorum. Özellikler bana daha çok güzel bir görünüm kazandırıyor: temel değil ve oyunun ne kadar eğlenceli olacağıyla ilgili değil. Minecraft, Candy Crush, Tetris ve benzeri oyunlar IMHO olduğunu kanıtlıyor.
Jonas Byström

@Jonas Byström Açıklığa kavuşturmak için: burada "özellikler" ile oyundaki temel değişiklikleri kastediyorum. Özellikle güzel renderleme DEĞİL, ancak bir Minecraft prototipi yaparken "zanaat bloklarına bir yol ekle" veya "oyuncuya saldıran ve öldüren çetelerin eklenmesi" gibi bir şey.
Nevermind

1
İkinci noktanızın, “özelliklerin gitmesine izin vermenin” önemi, abartılamaz. Birçok keşif evresi, bu uygulamanın 2 hafta süren başarısız olan özelliğe "hayır" dememesi nedeniyle başarısız oldu.
Kostas

4. noktaya ilişkin bir not: Bunun anahtarının hızlı bir şekilde kodda neyi değiştirmeniz gerekeceğini anlamak olduğunu düşünüyorum. İnce ayar yapmak isteyeceğiniz değerleri bildiğinizden emin olun. Oyunu çok fazla etkilemeyeceklerini biliyorsanız, kodun diğer bölümlerini gömülü bırakın ve gerektiğinde bunları ortaya çıkarın. Bunu çabucak halletmek zorundasınız, ancak mimarlığınızı baştan sona çizmek için yapmayı denerseniz, 'oyun tasarımı' öğelerinin öne bakacak ve mümkün olan her yerde temiz olması gerisi hurda olabilir.
sydan

1
@sydan talihsiz gerçek şu ki, hangi kodun "cepheye bakan" olduğu konusundaki fikriniz yanlış. Demek istediğim, HER ZAMAN, asla değişmemesi gereken bir şeyin aslında çok dinamik bir şey olduğu ortaya çıktı. Prototip yaparken, kelimenin tam anlamıyla her yönünü değiştirmeye hazır olmalısınız ve bunu hızlıca yapmalısınız.
Nevermind

5

Biri oyun gelişimini bu dört aşama arasında bölebilir:

  • prototipleme
  • oyun geliştirme
  • gelişme
  • performans iyileştirme

Oyun keşfi, çoğunlukla prototip aşamasında gerçekleştiğini düşünüyorum ve bunlar, izlemeye çalıştığım bazı tavsiyeler:

  • Kağıt prototipiyle tasarlamaya başlayın. Oyunun ne olabileceği konusunda net bir fikriniz varsa, etkileşimleri gerçekten hissedebilmeniz için kodlamaya başlayın. Belki bu 3D oyunlar için işe yaramaz ama şahsen geçmişte bana çok yardımcı oldu.

  • Kodunuz bittikten sonra kodunuzu atacağınızı bilerek. Bu, hangi oyun motorunun seçileceği konusunda serbest olmanızı sağlayacaktır.

  • Hızlı yineleme döngüleri önemlidir (diğerleri daha önce de belirtildiği gibi). Kodladığınız şeyi hızlı bir şekilde gösterme yeteneğine dayalı bir oyun motoru seçin. Ayrıca, bu aşamada performans veya grafiksel sadakat ile de ilgilenmek zorunda değilsiniz.

  • Kapsamınızı sınırlandırın. Gerçek oyun 2D ise (normal strateji oyunu, JRPG), 2D olarak prototip. Bu aşamada sadece üzerinde geribildirim umurumda oyun .

  • Parlatma veya varlık ararken zaman kaybetmeyin. Kağıda bir şeyler karalayın, fotoğrafını çekin, Photoshop'ta kesin, belki renklendirin ve sprite olarak kullanın. Mikrofonunuzu açın ve "pew pew" deyin. İki küp ve bir küreyi bir araya getirin ve bir robotunuz olsun. Her zaman aklınızda bulundurun, oyun olanaklarını keşfetmek ilk ve tek önceliğinizdir.

Eğlenceli bir prototipe karar verdikten sonra, hassaslaştırmaya başlayın. Teknolojileri değiştirmek için bir neden olduğunu sanmıyorum, ancak ihtiyacı olan bir oyun unsuru olmadığı sürece.

Geliştirme aşamasında, yeni, çok daha iyi görünümlü, çok daha iyi ses veren, çok daha iyi bir duygu oyunu geliştirirken, rafine prototipi elinizde tutacaksınız. Burada kullanılacak gerçek oyun motorunu seçmelisiniz.

Sonunda, sahip olduklarınızı alın ve daha az kaynak kullanacak şekilde ayarlayın.

Yukarıda tanımladığım şeylerin çoğu ortak bilgiyi ancak listeye koymak, tüm gelişim sürecini bölümlere ayırarak, her adımı perspektife koymama yardımcı oluyor. Umarım sana da yardımcı olur.


1
Kağıt PIC ve "Pew Pew" mükemmel tavsiyeler; ve evet - listeler bana da yardımcı olur. "İlk üç önceliğini tanımla. İki ve üç sayıları at." :)
Jonas Byström

4

Trevor Powell'ın yinelemenin hızının sadece cilalama yerine yaratıcı havasında kalmanız için kritik öneme sahip olduğu cevabını kabul ediyorum . Benim için büyük bir ilham kaynağı olan Bret Victor'un konuşması, "Prensipte İcat Etmek" . Ne yazık ki, bu düzeyde gerçek araçlar bulmak zor. Python geliştirme için Python kodumu çalıştırmama izin veren kendimden bir tane oluşturmaya çalıştım. Python'da Canlı Kodlama denir .


1
Daha önce videoyu gördüm, ama unuttum. Hm. Anında etkileşim gerçekten çabalamak için bir şeydir; Tavsiyene uymaya çalışacağım. İlginç Live Coding eklentisi btw'de iyi iş!
Jonas Byström

2

Trabant adında bir prototipleme aracı yaptım ki:

  • SADECE 3D ve oyun tamircisidir (kullanıcı arayüzü, metin yok, hiçbir şey yok);
  • prototip oluşturmak için son derece az kod gerektirir ve hiçbir varlık içermez ;
  • 3B modeller, ASCII resmi kullanılarak kodda oluşturulur ;
  • alt-ikinci yinelemelere izin verir;
  • katı cisim simülasyon desteğine sahiptir;
  • Windows, Mac, Linux ve iOS'ta çalışır;
  • iyi bilinen bir genel amaçlı dil kullanır, Python;
  • Windows ve iOS için bir IDE var.

Yukarıdakileri doğrulamak için 30 test prototipi yaptım.

Trevor Powell'ın vurguladığı gibi , yinelemelerin <5 saniye olması gerekiyor ve <1'in yinelemesini neredeyse beş kat daha iyi buluyorum.:)

Anko söz en biridir çünkü dinamik bir dil kullanarak iyi bir fikir olduğunu, Python aldı yaygın olarak kullanılan . Yapı otomasyonu ile ilgili olarak, Trabant'ta test etmek IDE'de F5'e basmak kadar hızlıdır (veya iPad'inizde test etmek için F6'ya) ve bununla ilgili bir derleme adımı olmadığı için bundan daha hızlı olamaz.

Atma kodu Nevermind'in paket servislerinden biriydi . Tamamen katılıyorum ve Trabant zorlar.


1

Trevor Powell'ın gerçekten önemli olan yineleme hızına ek olarak, işte bazı yararlı düşünceler:

Onun gibi iyi kod ...

Orada bir sürü IF var.

Konsept ne kadar sağlamsa, o kadar az oyuncakla oynamalısınız. Etinizin ne yapmaya çalıştığını biliyorsanız, prototipleme - ne konulacak ve merkezi direkle (ana şey) ilişkili olanları nasıl düzenleyeceğiniz olur.

Diğerleri gibi başlıyorsanız - ne yapmak istediğinizi tam olarak bilmiyorsanız, bir yöne doğru ilerler ve gösterdiğiniz görüntünün yolunu keşfedersiniz.

Her iki durumda da bir teknolojiye bağlılık, aradığınız şey çok fazla derinlik olmadan simüle edilebiliyorsa, ilgisizdir - ne istersen / yapabilecekleriniz üzerine prototipleyin.

Kaynaklara bir saniye daha harcamayın. İnternetten her şeyi indirin. Tescilli veya değil. Konseptinizi işte hissetmek istersiniz - grafikler asıl özelliğiniz değilse, başkalarının sesleri, dokuları ve her şeyi denemek için hiç kimse sizi dava edemez, henüz mağazada rafa koymayacaksınız. Zaten finanse edilmediğiniz sürece - insanları ikna etmeye değer bir kavramdır, istediğiniz kaynakları elde etmek için size para kazandıracak olan şeydir. Oyun stüdyosu milletinin oyun kavramlarını, sahip olmadıkları özel oyunların modded versiyonlarıyla sunduğunu gördüm.

Sanki ölçekli bir model inşa ediyorsun. Ne istersen minyatür bir hayatın kopyası olması harika. Bazen dergilerden çıkarmak, el işleri yapmak ve parçaları birbirine yapıştırmak için yeterlidir. Hayal gücü lekesi olan herkes, gökdeleni ölçekli modelle gösterdiğiniz aynı kartondan inşa edeceğinizi varsaymayacak. Ve yaratıcı endüstrilerde - biraz hayal gücü olan insanlarla çalışmak daha çok tercih edilir. Bütün bir konseptin arkasındaki potansiyeli görmek için bazı taslak problemleri göremezlerse, bir ürünü takdir ederse nadiren olurlar. Hiçbir takdir, taahhüt etmeye daha az istekli oldukları ve bu da aşağı doğru bir spiral olduğu anlamına gelir. Çocuğunuzun dünyayı fethetmeye yönelik tutumunu ayarlamak ve bunun yerine "Ayakkabınızı düzgün bağlayamıyorsunuz, sizi küçük dipshit,

Yaptığınız her ne olursa olsun, her zaman tek başına tutumu hatırlayın, teknolojik veya ekonomik potansiyelinden bağımsız olarak kesinlikle bir şeyi mahvetmek için yeterlidir.

Bir keresinde sadece gif imgeleri kullanarak ve javascript ile ilgili küçük bir şeyler vererek bir oyun prototipliyorum. Göz kamaştırıcı değil ama göstermek istediğimi göstermek amacına hizmet etti. Daha sonra yalnızca Xbox için geliştirmeniz önemli değil.

Eğer fikriniz basit bir prototipten daha karmaşıksa, kullanacağınız teknolojiyi araştırmanız gerekecektir - çünkü prototip son şey için iskele kurmaya devam edecektir (çünkü çok şey yatırım yapıldığı için) o ve hafifçe atılamaz) - açıkça onaylatırsanız.


Prototipleme sadece yeni bir şey inşa ediyorsanız gereklidir, bu bir verilen. Takım eksikliği kalem ve kağıdın irl eksikliği gibidir - ve kuma çizebileceğinizden emin olabilirsiniz, ancak verimsizdir. GIF + JS veya Scratch'a gitmek zorunda kalmamak için Trabant'ı kurdum .
Jonas Byström
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.