النتائج 1 إلى 8 من 8

الموضوع: الأجوبة لموضوع (اسئلة خاصة لمحترفى برمجة الالعاب)

  1. #1
    التسجيل
    07-09-2003
    المشاركات
    4

    Post الأجوبة لموضوع (اسئلة خاصة لمحترفى برمجة الالعاب)

    السلام عليم و رحمة الله،

    هذه هي الأجوبة لموضوع (اسئلة خاصة لمحترفى برمجة الالعاب)، أرجو أن تعم الفائدة.

    1- Explain What's Gouraud- Shading Tech or Spell his name

    Gouraud shading is a method for linearly interpolating a colour or shade across a polygon. It was invented by Gouraud in 1971. It is a very simple and effective method of adding a curved feel to a polygon that would otherwise appear flat. It can also be used to depth que a scene, giving the appearance of objects in the distance becoming obscured by mist. I suggest you also read the page on light sourcing if you do not already know the principles.

    2- Explain What's1/z buffering

    It's an Advanced Texturing Techniques. for more information about it you can check this book (Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization)

    There are two kind of "Z buffer": the Z buffer, and the 1/Z or W buffer. In one case, you put Z values in the Z buffer, in the other case you put 1/Z values.

    The Z buffer

    Z buffer = ( Z - nearZ ) / ( farZ - nearZ )

    The 1/Z buffer

    The mapping equation ain't linear anymore:

    Z buffer = ( 1/Z - 1/nearZ ) / ( 1/farZ - 1/nearZ )

    Why would you do that (use the 1/Z buffering)?

    The difference is that in the first case, values are mapped linearly, and this ensure the Z buffer precision is the same for any value of Z in view space. In the second case, the mapping is non linear, it is proportional to -1/Z and that means that the farthest an object is in view space, the less precision the Z buffer will have. This is not necessarily bad.

    The 1/Z approach does have less precision for far objects, but it also has better precision at close range, and this is not negligible. Another advantage of using the 1/Z buffer is the fact that I use texture planes in the engine, which gives me the 1/Z I need. If I were to use Z, I would have to do a division for each vertices!

    Another thing to consider is that when rendering polygons, I use the "less or equal" function. So if you draw objects that need Z buffering in a back to front order (which is the case in the Frog Engine), then the precision doesn't matter so much. Of course, I may change this later in the project if the results are not good... But in my experience, this works well.

    3-Explain Mip Mapping

    This sophisticated texturing technique is used for 3D animation in games and CAD walk-throughs. When scenery contains acutely angled polygons that disappear into the distance, MIP mapping mixes low- and high-resolution versions of the same texture to reduce the jagged effect.

    - Explain Spatial Partitioning

    Spatial partitioning is a technique forspeeding up computations of object/rayintersections.

    To apply the Spatial Partitioning:

    -Decompose the viewing volume hierarchicallyin to a tree of sub-volumes.
    – Octary space partitioning: Each cube is decomposedinto eight cubies
    – Binary space partitioning: Each volume is cut intwo by a plane.
    Use a ray/object intersection algorithm that caneliminate many objects from consideration allat once.

    Spatial partitioning is a technique used in many visual surface algorithms.

    4-Explain BSP Trees

    Binary Space Partition (BSP) trees are handy for drawing 3D scenes where the positions of objects are fixed and the user's viewing coordinate changes (flight simulators being a classic example).

    BSP trees are an extension of the painter's algorithm.

    5-Explain LookUp Tables

    One of the simplest data types is a lookup table. A phone book would be an example of a lookup table. You have a name and you want to know the corresponding number. You simple lookup the name to get the number.

    Another use of lookup tables is for speed. It is much faster to look up the answer to a complex operation than it is to do the complex operation. One common application of this is in 3D games like Quake and Half-Like. When you pull out your rocket launcher and start spinning around in a circle, the computer has to rotate the world you see. Rotation requires using sine's and cosine's.

    Suppose that the game allowed you to look in 32 different directions.

    To rotate the world so that you are looking forward, you would need to know the sine and cosine of 0 degrees, this takes a long time for your CPU to calculate

    To get any real accuracy, you would need to perform 4 exponentiations, 4 divisions, 4 factorials, and 5 additions. It is faster to just to calculate sine and cosine once for every one of the 32 possible angles and place them in a lookup table .

    Now if you need to know the Cos of 45 degrees, you would just lookup entry 3 (3 is 45 degrees in the chart above) and you have it. Much faster. Many other operations can be sped up considerably by using lookup tables.

    6- Explain Software Game Programming

    Game programming is the most complex form of engineering. It is the culmination of every science we know and then taking it to a point where all the science is hidden and all that is left is this interactive game that looks like magic to the end user

    7- Explain Octrees

    Octrees are a very efficient data structure to store 3 dimensional data of any form. Their big advantage is, that you can search and insert in such an octree very fast. However, deleting and moving entries is a slow proccess.

    If you're familiar with binary trees you'll have no problem to understand the basic concept of the octrees. They're just like binary trees but have 8 subnodes instead of two.

    8-Explain 3D Pipleine In Short

    The process of 3D graphics can be divided into three-stages: tessellation, geometry, and rendering. In the tessellation stage, a described model of an object is created, and the object is then converted to a set of polygons. The geometry stage includes transformation, lighting, and setup. The rendering stage, which is critical for 3D image quality, creates a two dimensional display from the polygons created in the geometry stage.

    9- Explain Why Matrix Isnt usefull In Some Times And Usefull In Some times In the 3D Pipeline

    The basic idea behind the geometry calculations that define transform and lighting is that it's possible to mathematically "project" a 3D object (such as a triangle in 3D space, or a cube, or a Quake player's body formed out of triangles) onto a 2D screen. This mathematical projection involves the use of matrix arithmetic, and by multiplying the coordinates of a triangle's corners by a special matrix known as the transform matrix, you get 2D coordinates of a triangle that the triangle setup engine can process and send over to the rendering engine to draw. Lighting may add an additional matrix multiplication per light source in order to compute the reflection of the light.

    But, the arithmetic in computing a matrix transform is pretty complex. Ultimately, the calculations require the multiplication of a 4 x 4 and a 4 x 1 matrix – which requires at least twelve simple multiplications and nine additions -- for every vertex (corner) of the triangle rendered. (To help ease the load, most game developers will try to describe objects by using triangles that share corners so that the vertex doesn't have to be computed more than once.)

    10- Explain Hidden Object/Surface Removal Algorithms And Why We Are using it

    In three-dimensional graphics applications, real-world objects may be efficiently represented and manipulated using a set of polygons. One of the bottlenecks associated with such applications is determining which polygons (or parts of polygons) are visible from a given viewpoint and viewing direction. This is equivalent to discovering which polygons (or parts of polygons) are hidden from the viewpoint. Algorithms that perform this task are known as visible surface determination or hidden surface removal algorithms.

    11-Explain LHS And RHS And What's The Diffrent And What does DirectX Use And What Does OpenGL Use

    LHS: Left Hand Side

    RHS: Right Hand Side

    Using it in DirectX and OpenGL varies; if you could be more specific in the exact situation I'd tell you which uses which.

    12- Explain a Full Camera Model with Figures

    Before we go into details, we should figure out what sort of stuff we want it to do. Below I'll write a small intro for making a Camera Model based on the fact that transformations will be based on our camera's local coordinate system.

    Next thing I should mention is that almost all of the transformations in our camera class are going to be based on axes (axes is the plural form of axis, not the weapon) that are defined by vectors. The default orientations for the axes would be as follows:

    X Axis = (1.0, 0.0, 0.0)
    Y Axis = (0.0, 1.0, 0.0)
    Z Axis = (0.0, 0.0, 1.0)

    Here we see that the default x axes would point in the direction 1.0, 0.0, 0.0 which is one unit to the right (or left depending on how you want to look at it), zero units up and zero units forward. If you're not following me just keep reading and maybe it will come to you. Our camera will have several different modes that all affect how it will be transformed (rotated, translated). First we will have our default mode where all of our transformations are based on the default axes. Another mode will actually rotate the axes with the camera while also taking into account the previous orientation of the axes. Understand?

    Hold out your hand straight in front of you with your palm pointing down and your fingers pointing straight in front of you. Now rotate your hand 90 degrees so that your palm and the back of your hand are pointing left and right. Now if we were using the first mode I described and we wanted to translate the hand upwards it would move up (up being towards the ceiling above you). In the second mode I described the hand would still move up, but up would be left or right (depending on the sign of the translation, +/-). This happens because when we rotated our hand 90 degrees the axes rotated with our hand. That means that up would still be defined as the top of your hand. Therefore when we move up we would actually be moving left or right relative to our default axes. Following me so far?

    I really can't go on further as it would take at least 3 pages, and I'm not in the mood to upload pictures at the moment. But if you really want to get the rest of this brief introduction send me email at rani_hasan@hotmail.com and I’ll be more than glad to help you and even send you example code.

    13- Explain FPU

    Floating Point Unit a specially designed chip that performs floating-point calculations. Computers equipped with an FPU perform certain types of applications much faster than computers that lack one. In particular, graphics applications are faster with an FPU.

    14-Explain Quaternions And Its Use In Game Programming

    A quaternion represents two things. It has an x, y, and z component, which represents the axis about which a rotation will occur. It also has a w component, which represents the amount of rotation which will occur about this axis. In short, a vector, and a float. With these four numbers, it is possible to build a matrix which will represent all the rotations perfectly, with no chance of gimbal lock. (I actually managed to encounter gimbal lock with quaternions when I was first coding them, but it was because I did something incorrectly. I'll cover that later). So far, quaternions should seem a lot like the axis angle representation. However, there are some large differences, which start....now.

    A quaternion is technically four numbers, three of which have an imaginary component. As many of you probably know from math class, i is defined as sqrt(-1). Well, with quaternions, i = j = k = sqrt(-1). The quaternion itself is defined as q = w + xi + yj + zk. w, x, y, and z are all real numbers. The imaginary components are important if you ever have a math class with quaternions, but they aren't particularly important in the programming. Here's why: we'll be storing a quaternion in a class with four member variables: float w, x, y, z;. We'll be ignoring i, j, and k, because we never liked them anyway. Okay, so we're actually just ignoring them because we don't need them. We'll define our quaternions (w, x, y, z).

    The advantage of using quaternion in game programming is simply: Requiring fewer elements and constraints than rotation matrices, which would make game cycles faster.

    15-Explain Terrian Algorithms

    You should be more specifc, the term Terrian Algorithms is a huge subject, as there are Terrain Generation Algorithms, there are LOD terrain Algorithms, there are Terrain Loading Algorithms, GeoSpatial Terrain, etc ...

    So which type of Terrain Alogrithm are you asking about. I'm sure you don't want me to answer all the Algorithms :)

    16-Explain BHV Tree

    Billera, Holmes and Vogtmann Tree:

    By a weighted tree, we mean a finite tree where each edge in the tree comes with a positive number, thought of as the length of the edge. For example the tree might represent a portion of Darwin's "Tree of Evolution". Each vertex of the tree, except the leaves, might represent a speciation event. The length of an edge might represent the number of mutation events between the vertices. Each leaf might represent an existing species. (Or each leaf might represent an individual organism. Or each leaf might represent a bacterial strain---though Darwin's tree is known to be a seriously wrong picture for bacteria.)

    Billera, Holmes and Vogtmann (BHV) have produced a metric on the set of such trees with specified leaves. In this metric space, it is possible to give a rigorous definition of the average of a finite set of weighted trees. (In fact one of the problems is that there are several different concepts of average or centre in this space, each of which makes mathematical sense.) BHV indicate an algorithmic approach to finding the average. Their method is feasible if the number of leaves is small and the number of trees is very small.

    17-Explain Cohen-sutherland Clipping

    This algorithm quickly removes lines which entirely to one side of the clipping where both endpoints above, below, right or left.

    The beauty of the algorithm is by using bit operations for testing.

    18- Explain Cyrys-Beck/liang-Barsky Clipping

    An algorthim that makes use of the parametric representation of the line to speed up the intersections computations. More specifically, can represent inequalities in a uniform way.

    The Cyrus-Beck line clipping algorithm uses vector ideas to compute a line clipped to a polygon. The input would be the line (L) and the polygon (a 2D array of vertices).

    The Liang Barsky clipping algorithm is Cyrus Beck specialized to the "standard" rectangle. In that case the outer normals are simple - they are i,-i,j, and -j (i = (1,0), j = (0,1)). This makes the t values for the four sides simple to compute.

    19- Explain Bresheneham's Algorithm in Line Drawing mmm also Painter's Algortihm

    Bresheneham's Algorithm in Line Drawing:

    If a line is inclined at an angle other than 45 degrees then at each step both x and y may not change. For example, if a line is to be drawn from (0, 0) to (100, 50) as we start drawing from (0, 0) x would change more frequently as compared to y since the x distance is the predominant distance. That is, we have to travel more units along x-axis as compared to the y-axis. In such situations x is incremented at every step whereas the algorithm decides whether or not y should be incremented at a given step. Likewise, if for some other line the y distance is the predominant distance then y is incremented at each step whereas x may or may not be.

    An interesting algorithm has been developed by Bresenham, which changes one of the coordinate values by 1 at each iteration. The other coordinate may or may not change, depending on the value of an error term maintained by the algorithm. This error term records the distance, measured perpendicular to the axis of greatest movement, between the exact path of the line and the actual dots generated.

    Painter's Algortihm:
    The painter's algorithm works by drawing all the polygons (or texture maps) in a scene in back-to-front order, so that polygons in the background are drawn first, and polygons in the foreground are drawn over them. The "classic" painter's algorithm does have a few problems however: polygons will not be drawn correctly if they pass through any other polygon it's difficult and computationally expensive calculating the order that the polygons should be drawn in for each frame the algorithm cannot handle cases of cyclic overlap. In this case it doesn't matter which order you draw the polygons it still won't look right! BSP trees help solve all these problems.

    20-Explain Trilinear Filtering

    Trilinear Filtering:
    A combination of bi-linear filtering and mip-mapping which enhances even more the quality of texture mapped polygons. For each polygon that is rendered, the two "MIP maps" that most closely match the polygon size will be used to compute pixel colors that are the most realistic. This technique is superior to both bi-linear and mip-mapping.

    Bilinear filtering:
    When a small texture is used as a texture map on a large polygon, a stretching will occur and large blocky pixels will appear. Bi-linear filtering smoothens out this blockiness by applying a blur.

    Anistropic Filtering: (You should read about this)
    Even though trilinear filtering goes a long way towards improving the image quality of a texture mapped 3D surface, there are cases when trilinear filtering fails to provide good results. Both bilinear and trilinear filtering are used to solve problems that arise due to the difference in size of the source texture and the size of the surface that the texture needs to be mapped on. However, they do not take into account the difference in shape and perspective between the source texture and the target surface. Bilinear and trilinear filtering work best for surfaces that face the viewer squarely (depth across the surface does not change in this case). However, when the surface is oblique to the viewer, filtering causes loss of detail. This degradation in image quality is most obvious when the texture being mapped contains text. Text typically has areas which are as low as one pixel wide. Applying bilinear or trilinear filtering on text that has been mapped obliquely will result in the characters becoming blurry and blending with adjacent characters and therefore almost unreadable depending on the perspective. Anisotropic filtering is used to get around this problem by taking extra samples from the texture map.

    These extra pixels are chosen according to the direction of the perspective (see figure 16) that the texture is being mapped on. For example, a brick texture being mapped on a wall of a hallway going into the screen will require the texels to be chosen in the direction of the surface of the wall (from front end to back end)

    - Explain- Weiler-Atherton Clipping Algorithm

    Weiler-Atherton clipping algorithm is a modification to S-H (Sutherland-Hodgman Plane-at-a-time Clipping) that handles concave polygons correctly. It's essentially a hack to detect when we leave the clip boundary. If we draw a segment between a point inside the clip window and an outside point, we intersect with the boundary and close the polygon by following the window boundary. Then we continue where we left off, with the possibility of coming back inside the boundary and creating another interior polygon.

    - Explain : Fourier Analysis And Aliasing

    Fourier Analysis is based on the concept that real world signals can be approximated by a sum of sinusoids, each at a different frequency. The more sinusoids included in the sum, the better the approximation.

    The Fourier transform, in essence, decomposes or separates a waveform or function into sinusoids of different frequency which sum to the original waveform. It identifies or distinguishes the different frequency sinusoids and their respective amplitudes

    A real wavefunction can be decomposed into a sum of harmonic terms using the technique of Fourier analysis also complex waves can be represented or broken down as a set of simple sine waves.

    أنا مبرمج العاب، حاليا مبرمج في المشاربع التالية:

    1. King's Quest 9 - Every Cloak Have A Silver Lining
    www.kq9.org
    2. Quest For Glory 6 - Rite of Passage
    www.hero6.com
    3. Space Quest 7 - Unnamed Project
    www.sq7.org
    4. تعريب Remake King's Quest 1, King's Quest 2 and Quest For Glory 2
    www.tierraentertainment.com

    راني حسن،
    www.ranihasan.netfirms.com

  2. #2
    التسجيل
    16-08-2002
    المشاركات
    204
    اول شي اهلا بيك اخي راني حسن في منتدانا ،،، وصراحة اتفاجات لمن شفت الاجابات لانها اجابات لصاحب خبرة ماشاء الله بس لمن دخلت على موقعت الشخصي وقريت البروفايل حقك تلاشا التفاجئ واصبح اندهاش واعجاب


    وارجو ان لقى منك الافادة

    اخوك/ الكريستال
    مواضيعي القديمه
    Run3D

    ClockTower3D

  3. #3
    التسجيل
    03-09-2003
    الدولة
    d=(n_n)=b دار بو خليفة d=(n_n)=b
    المشاركات
    1,096

    Re: الأجوبة لموضوع (اسئلة خاصة لمحترفى برمجة الالعاب)

    اقتباس المشاركة الأصلية كتبت بواسطة الكريستال
    اول شي اهلا بيك اخي راني حسن في منتدانا ،،، وصراحة اتفاجات لمن شفت الاجابات لانها اجابات لصاحب خبرة ماشاء الله بس لمن دخلت على موقعت الشخصي وقريت البروفايل حقك تلاشا التفاجئ واصبح اندهاش واعجاب


    وارجو ان لقى منك الافادة

    اخوك/ الكريستال

    ........

  4. #4
    التسجيل
    21-02-2003
    الدولة
    الإمارات العربية المتحدة
    المشاركات
    2,350
    يا سلام يا سلام ... ادي ئيه حلو الغرام ....

    انت اثبت انك محترف برمجة العاب ...و بالباقي الان رؤية امثله من تصميمك ...

    انا قراءت بعض الاجوبه ... تبدو لي واقعية جدا جدا ... على الاقل اميز بين الصح و الغلط ....
    و لكن بشهاده احمد صالح قال لي ان الاجوبه صحيحه 100 %

  5. #5
    التسجيل
    07-01-2003
    الدولة
    Egypt,CA
    المشاركات
    37
    السلام عليكم ،،
    رانى

    أشكرك على رد هذه الاسئلة و اعتقد انك تعرف السبب الحقيقى لكتابة هذه الاسئلة
    فهى ليست كما يسمونها المصريين ( إستعراض عضلات ) ; حقيقاًًُ هنا مكان لا يسمح
    فيه إستعراض العضلات كما تعلم . و اتمنى ان تكون قد علمت السبب الحقيقى لكتابة
    هذه الاسئلة التعجيزية .

    س: هل حضرت مؤتمر برمجة الالعاب المقام الحالى فى كندا ـ سانت كلارا ؟
    علمت ان Andre' سيكون هناك ، Ernest,Dave و جميع المحترفين هناك ،
    كنت سأذهب الى هناك و لكن الظروف
    ملحوظة : Andre' LaMothe لم يشرح z/1 جيداً
    Author, Game Programming the Complete Guide (Vc,Dx)
    CEO EgyptGames.llc
    Computer Graphics,Programmer.
    انا لو لم اكن مصرياً * لوددت ان اكون مصرياُ .

  6. #6
    التسجيل
    04-09-2003
    المشاركات
    300

    Re: الأجوبة لموضوع (اسئلة خاصة لمحترفى برمجة الالعاب)

    i looked at ur links mr.Rani...just wondering...

    are those games are fan profit/non-profit projects or they are developed by real companies?
    _

    there is a link in ur site for 3D Socity Sim. , i tried to download it but it is a broken link. is there any way to fix it. thanx.

  7. #7
    التسجيل
    07-09-2003
    المشاركات
    4

    Smile شكرا و يشرفني الإنضمام لمنتداكم ...

    السلام عليكم و رحمة الله،

    شكرا و يشرفني الإنضمام لمنتداكم، بصراحة أنا فخور جدا بكم و بوجود منتدى لبرمجة الألعاب العربية على هذا المستوى الراقي.

    أخي الكريستال، تشرفت بمعرفتك، و شكرا على الإطراء، ما شاء الله و بارك الله لك.

    أخي Blazy، تشرفت بمعرفتك، و شكرا على الإطراء، ما شاء الله و بارك الله لك.

    أخي Son Of UAE، شكرا على شهادتك الطيبة، و بالنسبة لتصاميم العابي أن شاء الله سوف أنشر بعض الصور في المنتدى، تشرفت بمعرفتك و بارك الله لك.

    أخي Ahmed Saleh، وعليكم السلام و رحمة الله و بركاته، أول شئ شكرا جزيلا على الأسئلة، لأن مجرد الأجابة عليها أضافت لي الكثير، و أنا متأكد و الله أعلم أن الموضوع لم يكن إستعراض عضلات، و ردك الطيب أكد لي ذلك، ثاني شئ الله يبارك لك، تشرفت بمعرفتك، ما شاء الله و أن شاء الله نستفيد من خبرتك. أما بالنسبة للمؤتمر في كندا، فأنه حدث رائع و لكن للأسف لم أحضره لأنه لا مجال للمشاركة بالنسبة لي لأنني غير متفرغ - حتى الآن- لبرمجة الالعاب. عملي الحالي هو (خبير تكنلوجيا المعلومات) في وكالة حكومية أمريكية( للعمل التنموي)، و هذا يشمل إدارة الشبكات و قواعد البيانات و تطوير و برمجة النظم و أخيرا حماية امن المعلومات، و كل هذه المجالات بعيدة كل البعد عن مجال برمجة الألعاب. و كعمل إضافي أعمل كمحاضر ل ++ C و ال JAVA و 3D Game Programming and Design

    للأسف كل هذا لا يترك لي مجال للتفرغ لبرمجة الألعاب، لكني حاليا أحاول كل جهدي لأبقى على درب برمجة الالعاب و التفرغ له على المدى البعيد. أما بالنسبة للمشاريع التي أعمل بها حاليا -التي لها علاقة ببرمجة الألعاب- فهي كالتالي:

    King's Quest 9: Every Cloak Has A Silver Lining

    It's a fan-based project, currently the Crystal Space Engine is being used, it
    will be 3D based with a fixed camera, to simulate the point and click based adventures, the engine is open source, written in Visual C++, and uses Python as a scripting language, I'm currently in charge of the Game Installer development, and the in-game configurator

    Quest For Glory 6: Rite of Passage

    It's a fan based game, following the same feel and look of it's predecessors, so this game is a point and click 2D adventure game, core code is written in C ++ Tools are coded in Visual C ++ , the Engine we are using is being developed by the lead programmer and is open source it's call the MAD Engine, I'm a script writer there, so I'm the one the actually integrates the sound, graphics, animation, and plot, into a real playable game, I'm not the only script writer but I'm the most active and creative one

    Space Quest 7: Unnamed Project

    It's a fan based game, the engine is still being developed and is open source, it's called SLAGE Engine - Sierra Like Adventure Games Engine, I'm a core engine developer, tool developer, the engine is coded in JAVA language and we are using Eclipse as development tool as it has a nice CVS plug-in as a Concurrent Versioning System

    King's Quest 1 and 2, Quest For Glory 2 Remakes

    I wrote an Arabic font and an Arabic font converter customized for the use of the AGS Engine, thus enabling games developed with the AGS engine to be completely Arabized, Tierra Entertainment have asked me for the right of using my font in their next releases and of course I gave them that right

    أخي 2501، أرجو أن اكون قد أجبت عن أسئلتك، تشرفت بمعرفتك.

    Regarding the 3D sim I'll try to move the zipped file, to another ftp and if you sent me a reminder at rani_hasan@hotmail.com I'll let you know when I move it to the new ftp

    حاليا عندي الكثير من الأفكار و المقترحات للبدء بمشروع الألعاب عربي على مستوى المنافسة، فما رأيكم و إقتراحاتكم وهل هناك مشاريع حاليا؟

    السلام عليكم و رحمة الله و بركاته،
    راني حسن
    www.ranihasan.netfirms.com

  8. #8
    التسجيل
    21-02-2003
    الدولة
    الإمارات العربية المتحدة
    المشاركات
    2,350
    بالتوفيق

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •