8.1/10 (346 أصوات )

الالعاب : : يرليشت هو نموذج اعتبر ان استخدام القوه في يرليشت 3 بيرل. نبذه مجموعه ميغامي » استخدام الدقيق » استخدام قاعده الالعاب : : يرليشت » استخدام الالعاب : : يرليشت : : الثوابت. edt_software علي ما لقد تجاوز الاساليب : ولماذا عندما بناء لعبه او شاشه التوقف عرض بعض مستمرا اداره المتحركه ، عددا من الاسس الواجب اتخاذها علي سهوله المتحركه ورعايه نسخ مختلفه بسرعه النظام. افضل عرض الرسوم ، وان تكون داءما واحده ، مهما كانت سرعه النظام. ولا يشمل مختلف النظم (ا ps/2 مثلا ان يكون اكثر من ثلاثه اجهزه كمبيوتر شخصي النظام) ، وكذلك التغيرات في سرعه ونظام بمرور الوقت ، فعلي سبيل المثال عندما خلفيه عمليه استخدام بعض المصنف الوقت او التعقيد في الساحه التغييرات. في كثير القديمه (دوس خاص) الالعاب الشهيره ، مثل قاءد الجناح مجموعه المتحركه ، وان تكون بسيطه وسريعه الانتباه الي ان نظام ، معني ذلك ان لكم ان تحاول ان تلعب هذه اللعبه في حديثه واله وقبل نهايه لكم ان فرصه انقر علي زر بسيط ، لانه ويزيس بضعه الاف في اطار الثاني الماضي علي الشاشه. وبسيط جدا وهو ان الحد الاقصي الممكن ، فراميراتي الحرص ليس فقط علي حرق الفاءض دورات حده. وبدلا من ان تطبيق حريه وحده ومتي يمكن تقديم الطلبات الاخري والخيط مع فرصه. وهي ذات اهميه خاصه علي التطبيقات ذات الاولويه مثل سكرينسافرز. الالعاب : : يرليشت يجعل هذا ممكن لك انت دون الحاجه الي القلق حول كيف يتم ذلك. وسيقيد معدل الاطار الي ويحاول قدر الامكان ان اشيفي متوسط فراميراتي في اقرب وقت ممكن الي هذا الحد. الالعاب : : يرليشت ايضا ترصد ويعطي متوسط فراميراتي لكم الوصول الي هذه القيمه ، حتي انه يمكنك مثلا تعديل التعقيد الي المشهد الحالي في فراميراتي. يمكنك الحصول فراميراتي الحالي ، وبلغ خلال السنوات الثانيه (ص 1000) الذي يدعو current_fps. الاطار سعر ينديبينديند 24 والان يوشك ان تطبيق الاطر (draw_frame عن طريقه ، والذي ينبغي لك في تجاوز 1.0) ، وهي طريقه تحتاج الي شرح وفصل من السرعه وفراميراتي. ولو ان مجرد طرح ضع المتحركه كل خطوه ، وان الاطار اصبح نوعا من موت الاله والسريع علي قاءد الجناح الاعلي. ان مثل هذا النظام لا تدير 10 فبس ، وان تكون الرسوم اقل ولا اكثر عندما فبس 60. ان هذا اشيفي وصف : : قريبا : : فبس صفاتها 24 ، الذي يتعارض ينديبينديد هذا الاطار معدل (وفعلا ، ينديبينديند النظام في الساعه ، وعلي ما في هذا القسم التالي). يمكنك الوصول من خلال الدعوه الي current_time ، وان يعود ومثل لسع وبعد عدد من الالف منذ بدء تطبيق. علي نحو تدريجي المتحركه بسرعه من فبس ، اصبح في كل اطار في الوقت الحالي ، ثم نقل جميع الاشياء (او النشاط النووي) وان هذه السرعه وعرض علي في موقع ينسجم مع الوقت في بدايه هذا الاطار. انظر امثله) علي سبيل المثال علي كيفيه القيام بذلك. علما ان من الافضل وضع جميع الاشياء الي وقت في بدايه هذا الاطار ، ولا الي وقت وانت لا ترسم شيء. او في عباره اخري ، ان يعامل الوقت ولا تقف عند رسم الاطار الكامل. والاطار تصبح كل لقطه ، في وقت لا تستطيع ان.. سيديفيكتس علي جسم بيينغ داءما عن الاخر لمجرد انه اصبح في وضع سابق. الوقت مجمد الان لدينا نشاط مستمر من سرعه ينديبينديند فراميراتي او النظام بسرعه ، وفي بعض المرح. ان كل الخطوات المتحركه اضافه الي الوقت الحاضر ، ويمكن ان تءدي الطرق الحاليه مع الوقت. الوظيفه time_warp ولكم في الحصول مجمد عامل الوقت. والتقصير ، وهو احد يمكنك تحديد اي قيمه وان شءتم. واذا كنتم مجموعه ، فعلي سبيل المثال ، الي 0،5 في الوقت يمر بسرعه والا نصف ما كانت عليه. هذا يعني الحالي البطيء! وانت حقا الي جميع اوجه النشاط في الوقت الحاضر ، ولكم ، وان ذلك لن يبطء حقا ان اللعبه برمتها الي الطاءفيه. ان زمن مجمد 2 وفي الوقت يمر بسرعه ومرتين. هناك تقريبا اي قيود علي الوقت والنسيج. فعلي سبيل المثال ، زمن مجمد اكبر من واحد في اللاعب حسين تمر لحظات في اللعبه ، مثلا عندما تريدون ان ننتظر بعض الاحداث في استراتيجيه اللعبه ، اود ان المصنع بيينغ. تحاول الصحافه اليسار (الامام بسرعه) والحق (البطيء) والاوسط (العاديه) وموسيبوتونس في سبيل تطبيق ومراقبه التنفيذ. اذا كنت جدا ، الصحافه والصحافيين ب وانظر الرءيسيه السلبيه حتي ان الوقت لا يمكن الاعوجاج... سلالم الوقت مجمد والان تحديد وقت الحرب الي عامل نون جيد ، لكن احيانا يريد ان يجعل اثار كبيره ، مثل تجميد ببطء وفي الوقت بطيء جدا والحركه والاسراع مره اخري. الي هذا ، يمكن ان يستخدم ramp_time_warp. انت تعطي وهي مربوطه عامل الوقت تريدون ، والي الوقت (الوقت الحقيقي علي اساس ، ولا العقول ، ويمكنك من خلال هذا التغيير). خلال وقت محدد لك الوقت ، وسوف يكون عاملا مجمد حتي مع وصول قيمه جديده. هذا يعني انه يمكن الاسراع ببطء نزولا او صعودا. يمكنك ايضا فحص ما اذا كان الوقت هو ثابت او مجمد حاليا باستخدام سلالم time_is_ramping. عند التحميل هو في الواقع دعوه الي الحجج ramp_time_warp دون الحصول علي المعايير الحاليه. انظر ادناه للاطلاع علي التفاصيل. ومثل استخدام وتطبيق سلالم اثر بدلا الوقت الحالي متجمده. حاله العمال يصف هذا الجزء الاحداث الخارجيه والاحداث التي تحدث عاده بسبب تدخل المستخدم. هذه الاحداث هي حركه كيبريسيس الفار ، والفار زر الطباعه ، او مجرد الانتقال والتحول من الدوله. طبعا في حاله لا يمكن معالجتها في شكل معقول ان من الاطار. جميع الاحداث وتناولها للتاكد من الالعاب : : يرليشت تلقاءيا. واذا خرج (الذي يعني ان الطلب اغلاق) كما نفذت تلقاءيا. اذا اردتم ان لا يصل بعض هذا الترتيب عندما يحدث ، وتجاوز اسلوب quit_handler. وفي حال التاكد من معالجه ذلك في بدايه كل اطار. هذا لا يعني ان الحدث سوف يحدث لكم وضع الاطار الحالي. ولن يحدث ، ولكن ، وبسبب الاجراءات التي ستقوم بها حال تاخر حتي يبدا الاطار التالي. ويبسط وضع اطار عمليات كبيره ، لان اخبركم بان العالم سوف يكون ثابتا الي الاطار التالي. احتياجات : ? اعتبر



  • مرات التنزيل: 28814
  • متطلبات التشغيل:
  • الحجم: 0
  • الترخيص:
  • الاصدار : 0
  • اضيف في: 0000-00-00 00:00:00
  • اخر تحديث: 20/06/2014
  • الموقع علي الانترنت:






Description

Games::Irrlicht is a Perl module that use the Irrlicht 3D Engine in Perl.

SYNOPSIS

package MyGame;
use strict;

use base Games::Irrlicht;

use Games::Irrlicht::Constants; get EDT_SOFTWARE etc

# override methods:

The Why

When building a game or screensaver displaying some continously running animation, a couple of basics need to be done to get a smooth animation and to care of copying with varying speeds of the system. Ideally, the animation displayed should be always the same, no matter how fast the system is.

This not only includes different systems (a PS/2 for instance would be slower than a 3 Ghz PC system), but also changes in the speed of the system over time, for instance when a background process uses some CPU time or the complexity of the scene changes.

In many old (especial DOS) games, like the famous Wing Commander series, the animation would be drawn simple as fast as the system could, meaning that if you would try to play such a game on a modern machine it we end before you had the chance to click a button, simple because it wizzes a couple 10,000 frames per second past your screen.

While it is quite simple to restrict the maximum framerate possible, care must be taken to not just "burn" surplus CPU cycles. Instead the application should free the CPU whenever possible and give other applications/thread a chance to run. This is especially important for low-priority applications like screensavers.

Games::Irrlicht makes this possible for you without you needing to worry about how this is done. It will restrict the frame rate to a possible maximum and tries to achive the average framerate as close as possible to this maximum.

Games::Irrlicht also monitors the average framerate and gives you access to this value, so that you can, for instance, adjust the scene complexity based on the current framerate. You can access the current framerate, averaged over the last second (1000 ms) by calling current_fps.

Frame-rate Independend Clock

Now that our application is drawing frames (via the method draw_frame, which you should override in a subclass), we need a method to decouple the animation speed from the framerate.
If we would simple put put an animation step every frame, we would get some sort of Death of the Fast Machine" effect ala Wing Commander. E.g. if the system manages only 10 FPS, the animation would be slower than when we do 60 FPS.

To achive this, SDL::App::FPS features a clock, which runs independed of the current frame rate (and actually, independend of the system's clock, but more on this in the next section).
You can access it via a call to current_time, and it will return the ticks e.g. the number of milliseconds elapsed since the start of the application.

To effectively decouple animation speed from FPS, get at each frame the current time, then move all objects (or animation sequences) according to their speed and display them at the location that matches the time at the start of the frame. See examples/ for an example on how to do this.

Note that it is better to draw all objects according to the time at the start of the frame, and not according to the time when you draw a particular object. Or in other words, treat the time like it is standing still when drawing a complete frame. Thus each frame becomes a snapshot in time, and you don't get nasty sideeffects like one object beeing always "behind" the others just because it get's drawn earlier.

Time Warp

Now that we have a constant animation speed independend from framerate or system speed, let's have some fun.

Since all our animation steps are coupled to the current time, we can play tricks with the current time.

The function time_warp let's you access a time warp factor. The default is 1.0, but you can set it to any value you like. If you set it, for instance to 0.5, the time will pass only half as fast as it used to be. This means instant slow motion! And when you really based all your animation on the current time, as you should, then it will really slow down your entire game to a crawl.

Likewise a time warp of 2 let's the time pass twice as fast. There are virtually no restrictions to the time warp.

For instance, a time warp greater than one let's the player pass boring moments in a game, for instance when you need to wait for certain events in a strategy game, like your factory beeing completed.

Try to press the left (fast forward), right (slow motion) and middle (normal) mousebuttons in the example application and watch the effect.

If you are very bored, press the 'b' key and see that even negative time warps are possible...

Ramping Time Warp

Now, setting the time war to factor of N is nice, but sometimes you want to make dramatic effects, like slowly freezing the time into ultra slow motion or speeding it up again.

For this, ramp_time_warp can be used. You give it a time warp factor you want to reach, and a time (based on real time, not the warped, but you can of course change this). Over the course of the time you specified, the time warp factor will be adapted until it reaches the new value. This means it is possible to slowly speeding up or down.

You can also check whether the time warp is constant or currently ramping by using time_is_ramping. When a ramp is in effect, call ramp_time_warp without arguments to get the current parameters. See below for details.

The example application uses the ramping effect instead instant time warp.

Event handlers

This section describes events as external events that typically happen due to user intervention.
Such events are keypresses, mouse movement, mouse button presses, or just the flipping of the power switch. Of course the last event cannot be handled in a sane way by our framework.

All the events are checked and handled by Games::Irrlicht automatically. The event QUIT (which denotes that the application should shut down) is also carried out automatically. If you want to do some tidying up when this happens, override the method quit_handler.

The event checking and handling is done at the start of each frame. This means no event will happen while you draw the current frame. Well, it will happen, but the action caused by that event will delayed until the next frame starts. This simplifies the frame drawing routine tremendously, since you know that your world will be static until the next frame.

Requirements:
· Perl





التعليقات علي Games::Irrlicht 0.04
اضافة تعليق

تعليقات الفيسبوك

تعليقات الموقع