User Tools

Site Tools


scratch

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
scratch [2018/12/13 02:18]
sausage
scratch [2018/12/24 03:27]
sausage
Line 1: Line 1:
-Every program that is built using Orx contains a profiler tool. The Profiler ​is compiled-in when using either debug or release modes.+One of the unique features available within ​Orx is the ability to switch languages ​in game using locale. While many game engines allow a user to program with locale features to some degree, Orx lets you switch languages back and forth in real-time.
  
-The tool helps you diagnose bottlenecks ​and monitor performance ​and internal resources.+An example of this could be a graphical adventure game that features characters, onscreen text, digital speech, ​and music. Locale switching would allow you to completely switch out all graphics, text, speech ​and music with a single function call without altering the game-play.
  
-To show the profiler in your game or applicationadd the following to your config:+All data is defined by you, and so your regions ​or nations could be aliens/​humansorcs/elves. You could even think of it as a kind of themeing.
  
-[]+Its a pretty amazing feature that comes out of the box.
  
-Although it makes more practical sense to toggle it on and off with a key stroke:+This tutorial will be done in two steps:
  
-Config +1. Create a simple game with  characters with their own look, speech and music. 
-[]+2. Add in a second locale, and be able to switch between them.
  
-Code 
-[] 
  
-Run your application again, and press the [] key to bring up your Profiler.+Begin with a blank project created using init.
  
 +Name your project something like the-conversation (or whatever you wish). ​
  
-Profiler Layout+Our game will be about two polite gentlemen having a conversation. They continually greet each other all day.
  
-1) Thread Frame bar+Eventually, we want to be able to switch their nationality,​ as the player may prefer to play the game in their own country and language.
  
-This grey bar indicates which thread is currently selected. Most of Orx's tasks run on the main thread. There are other threads that handle things like streaming audio, resource requests and bitmap decompressing which run on other threads. Select your thread with the Page Up and Page Down keys.+Assets
  
-The first value displayed is the amount of time in ms that it took to render ​the entire current frame. The second value shows the largest amount of time that a frame took to render in the last second.+Let's begin with the French assets, and build the French version first.
  
-2) The Meter Bar Panel 
-These coloured meter bars indicate how much time each Marker took to complete within the frame. The colours themselves correspond to the colours on each Markers in the Marker panels. 
  
-The bars are spread over four or more lines. The row of the bar corresponds to the level of the function call marker. For example, the orxRender_RenderAll function call is on the top level, so sits in the top row. The orxRender_RenderObject function call is three levels into the hierarchy and is therefore on the third row.+Object
  
-This helps easily distinguish between the markers that are of similar colour. ​+Speech
  
-3) Marker Panel +Music
-This panel shows all the Markers currently running in the frame. Markers represent important function calls. Each Marker contains three numbers.+
  
-The first is the amount of time in ms this Marker has taken to run in the current frame. The second number indicates the longest amount of time this Marker took to run in the last second. 
  
-The last number shows how many times this Marker was run in the frame.+Delete ​the default config object and FX sections. We wont need those.
  
-You can even add your own custom markers.+Create the default ''​Person''​ object in the config with:
  
-The grey markers indicate functions that were called at some point - but not during the frame. So they will show having run 0x times.+[]
  
-4) Secondary Marker Panel +Create a second person from the first, but one that stands on the other side and faces the other way:
-The Markers in this panel are white and have more than one parent. Therefore they don't fit in to the tree hierarchy. ​+
  
-There can be grey markers in this panel as well for the same reason as the Marker Panel above.+[]
  
-5) Memory Panel +Next, create ​''​Scene''​ object that will be the root to hold all the other objects. Then place both Person objects in it's Childlist.
-Each line represents ​different type of memory+
  
-The first group of numbers represents the number of live allocations and the second number is the max allocations in the past. +[]
  
-The second group of numbers is the same, but is now representing ​the size of the memory allocations ​in Megabytes+Create ​the scene in the game in codeThis will create all the child objects onscreen. You can just change the existing ''​Object''​ creation with ''​Scene'',​ from:
  
-The last number shows the amount of transactions since the beginning of the application. A transaction is the allocating or de-allocating of memory.+[]
  
-In the demo playground application,​ the memory will not change much. Orx is very conservative with memory allocations. You can observe this by spawning many objects with the left mouse button.+to:
  
 +[]
  
-Using the profiler 
  
-You can pause or unpause the profiler at any time using the `Space Bar`. 
  
-Observe ​the running function call MarkersCurrently there are no physics calls running in the engineYou can still interact ​with the demo in the backgroundIf you click with the left mouse button you will spawn some physics objects.+Create all the text objects to go onscreenYou will need text objects for: 
 + 
 + - The speech 
 + - The player instructions 
 + - The current language indicator 
 + 
 +Create these as: 
 + 
 +[] 
 + 
 +And now place them into the scene by adding them to the Childlist:​ 
 + 
 +Next is the musicDefine it with
 + 
 +[] 
 + 
 +And add it to the scene with: 
 + 
 +[] 
 + 
 +Next is the actual conversationDefine the speech ​with
 + 
 +[] 
 + 
 +Them using a timeline track switch on and off the alpha of the speech text object to make it appear/​disappear,​ move its position and play the sounds.
  
-Notice that the orxPhysics_ApplySimResult marker appears now in the Marker PanelAnd there is corresponding coloured meter bar for it in the Meter Bar Panel. Once all the objects have finished their lifetime and have disappeared,​ then the orxPhysics_ApplySimResult marker drops down to grey again and is no longer called.+Compile and runOur two French gentlemen will start having ​lovely conversation.
  
-You can profile an application with vsync on or off. In the playground application you can toggle this with the  xxx key. With vsync on, the longest bar will be the orxDisplay_Swap marker. This is not Orx working hard on a task, but rather the driver wait time for the next vertical sync.  
  
-If you spawn lots of objects you can see the time taken on the orxPhysics_Update marker increases and the orxDisplay_Swap marker decreases, as there is less time waiting, and more time updating ​the physics on the objects.+That is the basic game. Now to make the game switchable to Australia mode.
  
-History Graph+Begin by defining the two languages or locales for the game: French and Australian.
  
-You can activate a history graph of frames by pressing ​the Scroll Lock key. You will see past frames. The colours on each vertical slice correspond ​to the Meter Bars.+Next, define.those locales and create keys for the various assets that are required ​to switch out: graphics, sound and text
  
-You can pause this graph with the Space Bar and you can scroll back and forth through ​the history to a particular frame to inspect ​the meters and values for each Marker to observe spikes+Finally go to each config and replace ​the absolute pathsnto assets ​and text with the named keys in the locale sectionsThese locale keys are.called using the $ symbol
  
-The white vertical line shows the current frame being inspected. 
  
-You can get more details on a particular marker by changing the depth sing the Up and Down keys. Notice a white marker in the Meter Bar Panel that moves up and down to the selected depth. 
scratch.txt · Last modified: 2021/02/02 01:24 (external edit)