وحدة تحكم اللعبة والألعاب افعلها بنفسك. يذكر لعبة محرك + ESPboy

Little Game Engine (LGE) عبارة عن وحدة تحكم افتراضية للألعاب ذات تكوين وهمي ، مع معالج خيالي و SDK عبر الإنترنت ، ويتألف من مترجم رمز C- مثل في المجمّع وإعادة تجميعها إلى رمز الجهاز مع القدرة على تنفيذ هذا الرمز في نفس المكان ، عبر الإنترنت في المضاهاة.



كما يوحي الاسم ، يتم شحذ المجموعة بأكملها من أجل إنشاء ألعاب ثنائية الأبعاد بسرعة. أكثر من 20 لعبة جاهزة ، العديد منها قيد التطوير.



للعب على الإنترنت ، اتبع رابط اللعبة أدناه ، وحدد "ترجمة" ثم "تشغيل".

TankCity ، 1916 ، FourInaRow ، BlackJack ، ZombieDefence ، MicroRace ، DwarfClicker ، المجرات ، ذكريات ، NinjaEscape ، المناجم ، Breakout ، TowerDefence ، FlappyBird ، WormBlast ، ESProgue ، Snake ، FishLife ، Columns ، Mars Astero ،



ميزة إضافية منفصلة هي أن محاكي الجهاز الظاهري من LGE ، بالإضافة إلى الإصدار عبر الإنترنت ، مكتوب أيضًا للأداة ESPboy ، التي لها محيط مشابه لجهاز LGE VM المتضمن في الأجهزة والتي كتبت عنها بالفعل .

  • شاشة ملونة 128 × 128
  • 8 أزرار
  • صوت بت واحد
  • RGB LED
  • متحكم ESP8266 مناسبة لسرعة مضاهاة
  • ذاكرة فلاش مدمجة مع نظام ملفات SPIFFS


وبهذه الطريقة ، يمكنك تنزيل الألعاب المترجمة إلى LGE SDK عبر الإنترنت إلى ESPboy محمول ، خذها معك وقضاء وقت فراغك باهتمام.



يمكنك تنزيل الألعاب عبر الأسلاك (انظر تنزيل الملفات على spiffs ) وعبر شبكة WiFi. مع الاستمرار في الضغط على الزر "B" عند بدء تشغيل ESPboy ، نقوم بتحويل الأداة الذكية إلى نقطة وصول ، والاتصال بشبكة WiFi الخاصة بها باسم "ESPboy" عبر متصفح ، ونصل إلى واجهة الويب الخاصة بنظام الملفات ، حيث يمكنك حذف الملفات أو تحميل ملفات جديدة.



يبقى فقط تجميع الأداة ، التي توجد لها مخططات وتعليمات ومجموعة أدوات للتجميع ، والتي ستكون متاحة قريبًا على tindie.com.
بعد أن لعبت بما فيه الكفاية في الألعاب الحالية - يمكنك البدء بسرعة في كتابة ألعابك الخاصة.



مواصفات موجزة من الجهاز الظاهري LGE:

  • مجموعة من 108 تعليمات مستوحاة من CHIP8 / SCHIP والمعالج الدقيق MOS6502.
  • سجلات 16 من 16 بت ، صفر سجل هو مؤشر إلى المكدس.
  • كل تعليمة مزدوجة البايت ، تحتوي بعض التعليمات على وحدتي بايت من البيانات
  • ذاكرة عنونة 20 كيلو بايت.
  • بالإضافة إلى الإرشادات والتعليمات الحسابية المعتادة لنقل البيانات ، هناك تعليمات منفصلة للتعامل مع العفاريت والشاشة والصوت.
  • حجم الشاشة 128 × 128 بكسل ، 16 لونًا لكل نقطة ، مما يتطلب مساحة ذاكرة تبلغ 8 كيلوبايت ، وهو نفس مقدار المخزن المؤقت لرسم العفاريت والجزيئات.
  • تحديث الشاشة في حوالي 20 لقطة في الثانية الواحدة.
  • يمكنك رسم البلاط و 32 نقشًا يصل حجمها إلى 128 × 128 بكسل مع إمكانية الدوران والنسخ المتطابق.
  • ويدعم العمل مع الجزيئات.
  • لحفظ الذاكرة ، يمكنك استخدام صور أحادية بت أو ضغط RLE.
  • هناك فيزياء مبسطة: اكتشاف تصادمات العفاريت مع العفاريت والبلاط ، ودقة التصادم ، والجاذبية.
  • يتم تحديث الشاشة سطراً سطراً فقط إذا تغير صف البكسل.
  • تتراوح سرعة VM ، اعتمادًا على عدد الخطوط المرسومة في الإطار ، من 100 ألف إلى 900 ألف عملية في الثانية.
  • يمكنك استخدام شاشات ملونة مختلفة ، وهناك امتداد صورة البرنامج.

من أجل عدم الكتابة مباشرة في الشفرات المرئية ، يتم تضمين برنامج التحويل البرمجي المكتوب ذاتيًا "LGE C" في SDK ، وهي لغة تصويرية عالية المستوى "C". في الوقت الحالي ، يعد هذا المحول البرمجي بعيدًا عن الدعم الكامل لمعايير اللغة C ، وعند التجميع ، يمكنك بسهولة أن تواجه خطأً غير مفهوم في مكان غير مفهوم. لكنه سريع ، لأنه يستغرق أقل من 2000 سطر من شفرة المصدر ، كما أنه يتطور باستمرار.

بيئة التطوير عبر الإنترنت من LGE مع مترجم ومحاكي
وصف الجهاز الظاهري LGE
توجه إلى LGE مترجم "C" اللغة التصويرية
شفرة المصدر لألعاب LGE على LGE C

لم يتم إجراء بعض الألعاب بالفعل على LGE SDK ، ويمكنك الاستمرار في إنشاء ألعاب جديدة في الوقت الحالي ، لكنها بعيدة عن الكمال. إذا أراد شخص ما المشاركة في إنشاء ألعاب جديدة على LGE أو تحسين LGE SDK نفسه ، أو إذا كان شخص مهتمًا بإنشاء ESPboy ، فمرحباً بك في المنتدى www.espboy.com .
سنحاول الإجابة على جميع الأسئلة والمساعدة في تنفيذ الأفكار.

بالنسبة لأولئك الذين يتسمون بالثبات والمهتمين ، فيما يلي مثال قصير للعبة على LGE SDK. يستغرق أقل من مائة سطر وليس أكثر من 1 كيلو بايت في شكل مترجم. لتشغيله ، تحتاج إلى الانتقال إلى LGE SDK عبر الإنترنت ، ونسخ الكود في المربع "source" ، وحدد "compile" ، ثم "run".

مثال على لعبة بسيطة على LGE C
int stickCount; char key,previouseKey,takenSticks; void redraw(){ int i; //   setcolor(2); //   for(i = 0; i < stickCount; i++) line(22 + i * 6, 74, 22 + i * 6, 84); //   setcolor(11); //  for(i = stickCount; i < 15; i++) line(22 + i * 6, 74, 22 + i * 6, 84); //     setcolor(1); //   delayredraw(); } void playersMove(){ //    ,     .  while(key == previouseKey){ key = getkey(); } while(key != KEY_LEFT && key != KEY_DOWN && key != KEY_RIGHT){ key = getkey(); } if(key & KEY_LEFT){ takenSticks = 1; }else if(key & KEY_DOWN){ takenSticks = 2; }else{ takenSticks = 3; } printf("%d, ", takenSticks); stickCount -= takenSticks; previouseKey = key; } void computersMove(){ if(stickCount % 4){ //   ,    takenSticks = stickCount % 4; }else{ //      takenSticks = 1 + random(1); } stickCount -= takenSticks; printf("%d, ", takenSticks); } void game(){ // stickCount = 15; clearscreen(); //       gotoxy(8,0); puts(""); gotoxy(2,1); puts(" 1,2  3 .  ,   . :\n"); // 27,25  26   printf(" %c 1 %c 2 %c 3", 27, 25, 26); gotoxy(0,12); redraw(); while(1){ playersMove(); if(stickCount <= 0){ gotoxy(3,8); puts(" "); return; } redraw(); computersMove(); redraw(); if(stickCount <= 0){ gotoxy(3,8); puts(" "); return; } } } void main(){ while(1){ game(); //  settimer(1,1000); while(gettimer(1)){} while(getkey() == 0){} previouseKey = key; } } 


كل الخير والنجاح في الإبداع.

مع uvazheneiem،
رواية

Source: https://habr.com/ru/post/ar472114/


All Articles