Oyun Elma Simülasyonu - Çalışamıyor [kapalı]


11

Newton fizikli bir oyun yaratmaya çalışıyorum.

Bunun geri kalanını okumadan önce, bu benim asıl sorum şu cevabı bulmaya çalışıyorum:

  • Kodumu çalıştırmayı denedikten sonra bir pencerede açılan bir hata alıyorum. Hangi kütüphane veya dll eksik?

Bir elmam, bir portakalım ve bir kalemim var. Mermi fizik motoru ile belgelerin çoğunu okudum, ama elmanın bir kağıt parçası gibi davranmasını sağlayamıyorum (2d-ish). Box2d fizik motorları ve benim istediğim bu değil. Siber dünyalarda, gerçek hayatta kutuları sevmiyorum.

Elmanın yere yüzmesini istiyorum, bir parça kağıt gibi ileri geri sallanıyorum. Bu site koduma entegre ettiğim bazı yararlı bilgiler verdi: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Lütfen-YARDIM !! -Simüle-kağıt-kayan-yere

Nesnelerin diğer nesne türleri gibi davrandığı bir oyun için bu fikrim var, ancak oyunun simülasyonları çalışmıyor.

Saymak için çok fazla elma türünden geçtim ve hiçbiri yaklaşmadı. Benzer şeyleri deneyen diğer insanları aramayı denedim ( http://lmgtfy.com/?q=simluating+game+apples+in+real+life gibi googles kullanarak ), ancak hiçbir elma iade edilmez!

Bu yüzden, burada yeni bir bölgeye gireceğimi düşünüyorum (endişelenmeyin, tekniklerimi açacağım) ve bu yüzden işler benim için çalışmıyor.

Farklı elma türlerini programlamayı denedim, ama belki de bir siber elmaya ihtiyacım var? Bunlardan birini nereden alacağımı bilmiyorum, belki böyle bir yerde: http://cyberapples.com/ Bu site şimdilik şimdilik kapalı - sadece bazı cgi çöp kutuları ya da bir şey hakkında konuşuyor. Bu konuda da ipucu var mı?

Bu benim kod oyun elma simüle ile ilgili bir parçasıdır:

///... /* setup other objects in the room and other stuff */ ...

// see http://www.orangepippin.com/apples/arlet-swiss-gourmet
// for more arlet apple details
paper_2d_behaving_apple = new ArletApple[);

/ setup the arlet apple's general characteristics
paper_2d_behaving_apple.species = SPECIES.MALUS_DOMESTICA;
paper_2d_behaving_apple.parentage = PARENTAGE.GOLDEN_DELICIOUS_X_IDARED:
paper_2d_behaving_apple.introduced = make_year(1958);
paper_2d_behaving_apple.fruitColor = COLORS.red;
paper_2d_behaving_apple.fleshCOlor = APPLE_FLESH_COLORS::CREAM;
paper_2d_behaving_apple.fruitSize = GENERIC_FRUIT_SIZES.MEDIUM;
paper_2d_behaving_apple.GoodFor.add("eating fresh");
paper_2d_behaving_apple.GoodFor.add("cooking");
paper_2d_behaving_apple.GoodFor.add("use / keeping: 3 months or more");
paper_2d_behaving_apple.GoodFor.add("ripening PERIOD: 3 months or more");
paper_2d_behaving_apple.diseaseResistances = [DISEASE_RES::SCAB, DISEASE_RES::MILDEW];
///... (I cut some of this out for brevity's sake) ...

///* setup this specific apple's characteristics
paper_2d_behaving_apple.base_color = 0xff2000;
paper_2d_behaving_apple.bumpMap = BUMP_MAP_APPLE;
paper_2d_behaving_apple.texture = TEXTURE_REALISTIC_APPLE;
paper_2d_behaving_apple.feel_texture = SMOOTH;
paper_2d_behaving_apple.has_small_orangey_stripes = TRUE;
paper_2d_behaving_apple.DoesntHaveStem = FALSE;
paper_2d_behaving_apple.juicy = true; // needs a lowercase true for some reason
paper_2d_behaving_apple.has_bugs = false; // heck no it doesn't, I only buy good apples
///... (again I cut some stuff out so this post would'n't be too long) ...

// from http://www.3dbuzz.com/vbforum/showthread.php?50854-Please-HELP!!-Simulating-paper-floating-to-ground
// "i think reactor can do this, i would try cloth witha high air resistance and a very high stifness"
paper_2d_behaving_apple.addReactor(REactor());
// got this technique from http://www.gimptutorials.eu/html/clothify_filter_gimp_gnu.html
import gimp ; GIMP::Clothify(paper_2d_behaving_apple); pass
// / 7 should be high enough - it's a big number
paper_2d_behaving_apple.reactor.stiffness = 7.0f;
paper_2d_behaving_apple.reactor.airResistance = 5.0f; // high, but not "very high"

// setup the world the apple exists in
paper_2d_behaving_apple.owner = new BobFlanderson();
paper_2d_behaving_apple.owner.appearance = APPEARANCE_AWESOME;
paper_2d_behaving_apple.owner.clothes.size = CLOTHES_SIZE_MEDIUM;
paper_2d_behaving_apple.owner.owns_house = false;
paper_2d_behaving_apple.owner.apartment.sucks = true;
paper_2d_behaving_apple.owner.has_wife = false;
paper_2d_behaving_apple.viewSpace = LIVING_ROOM;
paper_2d_behaving_apple.RESTINGon = Kitchen.GetSurfaces()->COUNTER_BY_STOVE;
////... (also cut some  more out here too) ...

// transform the paper behaving apple into something viewable
view_matrix = new ViewMatrix();
view_matrix.DoTransformation(paper_2d_behaving_apple);
view_matrix.makeViewable();
World->ApplyViewMatrix(view_matrix);

paper_2d_behaving_apple.RenderToNeakedEye();

// THIS IS WHERE I'm HAVING THE TROUBLE
actual_existing_apple_on_myCounter = new ExistingApple(paper_2d_behaving_apple);
actual_existing_apple_on_myCounter.bindInRealLive();

// THIS NEVER WORKS! I DON"T KNOW HOW YOU GUYS DO THIS STUFF!
actual_existing_apple_on_myCounter.Translate(LANGUAGES::ENGLISH);
// saw the IW_FIXED on some jam making site
// (http://www.madewithmarmalade.com/devnet/documentation#/api/api/group__IwGeomCore.html)
//  - that's the closest I've come to seeing anything close to what
// I'm trying to do
actual_existing_apple_on_myCounter.TranslateTo(0, 0, IW_FIXED(10.0f));
apple_now_inAir = actual_existing_apple_on_myCounter;

// I know this is C++ code, but some ruby sites were saying that it's best
// to put an exclamation point after a function that modifies a physical
// object - no luck yet for me
apple_now_inAir.Drop!();

Gördüğünüz gibi, temel kavramları aldım ve değişken isimlerim ve nesne niteliklerimle çok açıklayıcıyım. Oyunda dünyayı gerçek mutfağa göre basitleştirmeme rağmen dünyayı çok kısa ve net bir şekilde kuruyorum.

Sorunun bağlayıcıdır düşünüyorum paper_2d_behaving_appleiçin actual_existing_apple_on_myCounterelma ve sonra (havadaki birine o transfer apple_now_inAir);

Durum ne olursa olsun ve her şeyi ne kadar iyi biçimlendirirsem de hiçbir şey olmuyor gibi görünüyor. Programı nasıl çalıştırdığımı gösteren bir resim aşağıdadır:

resim açıklamasını buraya girin

Daha önce kimse bununla karşılaştı mı? Şimdiden teşekkürler. Programlamaya yeni başlıyorum, yakın zamanda kariyer değiştirdim, bu yüzden üzülmeyin.

Teşekkürler Bob


2
Burada çok fazla soru soruyorsun. Gamedev ile gerçekten ilgili olmadığı için stackexchange'te uyumsuzluk hakkında soru sorulmalıdır. Elma kısmı burada kendi sorusu olarak sorulmalıdır. Ayrıca, insanların soruyu yanıtlamasına yardımcı olmayan yeterli temsilci ve diğer kişisel hikaye öğelerine sahip olmamayla ilgili alakasız metnin bazılarını kaldırmaya çalışın.
AttackingHobo

3
"Kodumu neden çalıştıramadım?" hemen hemen her programlama sorusunu özetler. Ne bilmek istediğinizi düşünün ve ardından soruyu buna göre düzenleyin, lütfen.
jcora

13
Bu şimdi gamedev'de en sevdiğim soru.
Jimmy

6
Bunu düzenlemeye başladım. Sonra trolling olduğunu fark ettim ("siber elma"?). Bu troll değilse, gerçekten daha basit bir şeyle başlamanız gerekir.
MichaelHouse

2
Bu çok komik. Rubyizm - apple_now_inAir.Drop!();- bir isyandır . Bu yazı hakkında bir şeyler var - iddialı, şaşkın, mahkum ...
solidsnack

Yanıtlar:


34

Burada gördüğüm temel sorun, bir Windows sistemi kullanmanızdır. Bu işletim sistemi, pencere ve kapılar (organik olmayan) gibi şeyleri simüle etmek için en iyi sonucu verir. Bir Macintosh bilgisayara geçmeniz gerekiyor , bunlar elma simülasyonu ile olağanüstü. İşletim sisteminin en son sürümü sadece elmaları taklit etmekle kalmaz, aynı zamanda büyük kediler, özellikle dağ aslanları için ek desteğe sahiptir. Ancak, Windows sisteminizi kullanmaya devam etmek istiyorsanız, bazı değişiklikler yapmanız gerekecektir. İlk olarak Visual Studio'yu indirin , birincil kullanımı kodu görselleştirmek içindir. Sizin durumunuzda, elmalarınızı görselleştirecektir.

Daha sonra elmalarınızın olgunlaşmasını sağlamak için ikili bir ağacı kodlamanız gerekir . Ağacın güçlü büyümesi için bol miktarda yaprak eklediğinizden emin olun (ayrıca büyük bir kök verdiğinizden emin olun). Elmaları olgunluk açısından test etmek için bir bayttan bir bayt alabilir ve bitleri tasteTest()işlevden geçirebilirsiniz . Şimdi, elmalar var! Ama onların kağıt gibi olmalarını istediğini söyledin değil mi? Bu efekti elde etmek için onları düz bir dosyaya taşımak isteyeceksiniz. Elmaları saklamak için bir veritabanı kullanmayın, yeterince düz olmayacaklardır.

Son olarak, elmaları yüzdürmek için kodunuzda kritik bir adım eksik! Eklemeyi unuttun:

paper_2d_behaving_apple.hasGravity = true;

Bu bir çaylak hatası, ama sorun değil. Son olarak, elmayı ekranın üstüne koyduğunuzdan emin olun, böylece düşecek bir yere sahip olur. Ve Jimmy önerdi, eğer elma yanlış tarafta ise monitörü ters çevirebilirsiniz, çünkü daha yeni başlıyorsanız, bunun olması muhtemeldir.

Yan bonus olarak, Windows kullandığınızdan, Microsoft Excel'de bir elmalı pasta grafiği yapmak istiyorsanız, bir pencereyi serinlemek için kolayca simüle edebilirsiniz.


Alternatif olarak , biraz para harcamak istiyorsanız bunu yapmanın çok daha kolay bir yolu vardır.

O zaman ENCOM Sayısallaştırıcı Moleküler Lazeri denilen bir cihaz var. Daha önce elmaları dijitalleştirdiğini gördüm ve bence sizin için kullanışlı olacak. Tüm bu değişkenleri yazmak zorunda bile kalmazsınız, tarayıcı bunu sizin için yapar. İşte burada:

resim açıklamasını buraya girin


5
Senin için kafa karıştırıcı olabilir, ama anlıyorum. Sorun benim bilgisayarım, bu yüzden bazı kütüphaneleri falan kaçırdığımı düşünüyordum. Aslında şu anda google kodlama stili kılavuzunu okuyorum . Umarım bu, kodlama stilimle ilgili bazı endişelerinizi çözecektir.
Bob Flanderson

1
Haklısın, kafam karıştı. Cevabımı değiştirdim.
MichaelHouse

Evet! Lütfen elmalarımı görselleştir! Bunu henüz yapamadım çünkü hala eksik olduğum kütüphaneyi bulamadım
Bob Flanderson

2
Kök sorunun bence: paper_2d_behaving_apple.owner.has_wife = false; Eğer bir karısı olsaydı, ona neyin yanlış olduğunu söylerdi.
David Thielen
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.