یاداشت های کوتاه یک برنامه نویس

طبقه بندی موضوعی

۷ مطلب با کلمه‌ی کلیدی «jmonkey» ثبت شده است

۱۸
ارديبهشت

در مثال های مستندات JmonkeyEngine در بخش ( Hello Picking) در مورد انتخاب یک geometry با موس چیز هایی گفته شده .....

اما کامل نیست و در یک مورد نیاز واقعی برای من کارایی نداشت، بیشتر اوقات هر مدل از بیشتر از یک geometry تشکیل شده است (مثلا مدل من از چند قسمت دست ،سر ، مو ، لباس ، بدن ، پا ، پوتین و غیره تشکیل شده که هر کدام یک geo در نظر گرفته میشود).و همچنین لازم بود به controller آن دسترسی داشته باشم که فقط والد تمام این ها این کنترلر را داشت نه فرزندان .

پس باید به spatial دسترسی پیدا می کردم  که والد تمام اجزای بدن مدل بود، برای اینکار geo ها را به سمت بالا در سلسله مراتب پدر فرزندی مرور میکنیم تا به یک برابری برسیم .(من برای هر چیز یک داده ی کلید مقدار ثبت میکنم مثلا id و npc را به مدل سربازهایی که توسط کامپیوتر کنترل میشوند نسبت می دهم تا بتوانم در یک حلقه بررسی کنم مورد انتخابی یک مدل از نوع npc است یا نه ؟بعد یک متد از کنترلر را اجرا میکنم تا رفتار مناسب داشته باشد ....)

  • younes RayanFar
۲۲
خرداد

سوالات متداول در مورد  nifty gui و JME 3 .

1- چطور اندازه عرض و ارتفاع یک عنصر (Element) را در nifty تغییر دهیم؟

 اول باید به عنصر مورد نظر دسترسی داشته باشیم :

Element image = nifty.getCurrentScreen().findElementById("ImageTagId");

بعد از متد های زیر برای تغییر عرض و ارتفاع عنصر مذکور استفاده می کنیم :

image.setConstraintWidth(new SizeValue("size in % or px"));
image.setConstriantHeight(new SizeValue("size in % or px"));

و در آخر لازمه که عناصر زیر مجموعه ی عنصر والد رو layout کنیم و با اجرای این متد تغییرات قابل مشاهده خواهند بود...

image.getParent().layoutElements(); 

2- چطور تصاویر تگ image رو به صورت داینامیک تغییر دهیم؟

اول باید یک نمونه از NiftyImage داشته باشیم (حواستون باشه این رشته به یک تصویر در assets.jar اشاره میکند نه به آدرس فایل بر روی هارد دیسک مگر اینکه یک داریرکتوری رو به assetManager اضافه کرده باشیم ) پس :

NiftyImage img = nifty.createImage("Interface/Gui/image.jpg", false);

وباید به تگ image دسترسی داشته باشیم:

Element imageEle = nifty.getCurrentScreen().findElementById("ImageTagId");

بعد میتونیم با این روش تصویر مورد نظرمون رو نمایش بدهیم:

imageEle.getRenderer(ImageRenderer.class).setImage(img);

3- چطور متن یک تگ text به صورت داینامیک و پویا تغییر دهیم؟

برای تغییر متن لازمه که اول به تگ text دسترسی داشته باشیم.

Element textEle = nifty.getCurrentScreen().findElementById("txtID");

بعد با روش زیر متن رو تغییر میدهیم:

textEle.getRenderer(TextRenderer.class).setText("hello world!");

4- چطور یک دایرکتوری را در حین اجرا به assets بازی ای که با JME3 توسعه داده شده است اضافه کنیم؟

باید با متد  registerLocator دایرکتوری مورد نظر رو به assetManager اضافه کنیم. (به FileLocator.class توجه کنید)

path="C:\users\someOne\dir\";
app.getAssetManager().registerLocator(path, FileLocator.class);

و هر وقت لازم بود میتونید با اسم فایل و AssetManager به فایل مورد نظر دسترسی داشته باشید

(این لیست بعدا تکمیل میشه ......)

  • younes RayanFar
۲۲
ارديبهشت

اگر در حین کار با nifty و اضافه کردن یک کلاس به عنوان اسکرین  کنترولر با خطای زیر مواجه شدید :

Missing ScreenController for screen [start] using DefaultScreenController() instead but this might not be what you want.

این موارد رو چک کنید:

۱. باید کلاسی که به عنوان کنترولر به تگ screen و در مشخصه controller مشخص کردیم حتما اینترفیس  ScreenController رو پیاده سازی کرده باشد.

۲.کلاس کنترلر حتما بایدیک constructor خالی داشته باشد. بهتره اگر قرار است از این کلاس به صورت دینامیک برای مدیریت رویداد های یک screen دیگر استفاده شود constructor را اورلود کنیم.

۳. باید مشخصه controller در تگ screen و در فایل XMl به صورت حروف کوچک باشد در غیر این صورت کار نخواهد کرد.

  • younes RayanFar
۱۲
ارديبهشت

َUI و UX دو چیز متفاوت هستند!

بعضی وقتا این دوتا رو به اشتباه به جای هم استفاده میکنند. در حالی که به شدت متفاوت هستند.

UI یا User Interface به معنی رابط کاربری است که به رویه هایی مثل موس کنترل  و کی بورد کنترل واجزایی مثل HUD اشاره میکند.و UX یا User Experience به معنی تجربه کاربری است که نحوه تعامل کاربر با بازی ما از طریق رابط کاربری و کلید های میانبر و غیره رو مشخص میکند. اینکه کلید ها و اجزا HUD و آیکون ها چطور کار‌آمد در کنار هم قرار گیرند تا بازی جذاب و کنترل ها همیشه در دسترس باشند..

سعی میکنم در این پست و پست های بعدی در این مورد بنویسم.

منبع (بررسی مستقیم رابط گرافیکی چند بازی - منابع مختلف چاپی و بر خط)

  • younes RayanFar
۱۴
فروردين

 

JME برای چرخش یک شی سه بعدی از ماتریس حساب دیفرانسیل و انتگرال استفاده میکند. اما نگران ریاضیات نباشید چون ما از توابع سطح بالایی استفاده خواهیم کرد که نیاز به دونستن این موارد رو برطرف میکند.

(من به شخصه معتقدم دونستن بهتراز ندونستن پس بهتره یک کتاب خود آموز ریاضیات / هندسه تهیه کنید.)

در JME دو روش (method) برای این کار وجود داره.

  • younes RayanFar
۰۳
اسفند

کتاب آموزش  jMonkeyEngine 3.0 Beginner's Guide.pdf .  

زبان en ; نویسنده Ruth Kusterer

لینک دانلود (حجم فایل حدود 5 مگابایت)

برخی از سر فصل ها :

Chapter 1: Installing jMonkeyEngine

Chapter 2: Creating Your First 3D Scene

Chapter 3: Interacting with the User

Chapter 4: Adding Character to Your Game

Chapter 5: Creating Materials

Chapter 6: Having Fun with Physics

Chapter 7: Adding Spark to Your Game

Chapter 8: Creating Landscapes

Chapter 9: Making Yourself Heard

Chapter 10: Showing Your Game to the World

Appendix A: What's Next?

Appendix B: Additional Resources for Fellow jMonkeys

پ ن : وقتی امکانی برای خرید آسان وجود نداره مجبورم از راه غیر اخلاقی بدست بیارمش. پس دانلود کنید ، پرینت بگیرید و لذت ببرید.

شاید این کتاب ( jMonkeyEngine 3.0 Cookbook - Rickard Eden.pdf) رو هم بخواهید بخونید.

  • younes RayanFar
۰۳
اسفند

JmonkeyEngine یک موتور بازی سازی مستقل از پلتفورم , رایگان و متن باز است که کاملا به زبان جاوا نوشته شده است.  و امکان ساخت بازی های سه بعدی به زبان جاوا را برای کاربر فراهم میکند. (http://jmonkeyengine.org/)

  • younes RayanFar