From 3ea1c350a8ec58a1babdd5ed67a6bcf37ca69ebb Mon Sep 17 00:00:00 2001 From: Martin Valigursky Date: Wed, 28 Oct 2026 16:27:10 +0000 Subject: [PATCH] docs: move debugging into a Debugging and Optimization section and document the Inspector's Performance tab --- .../debugging/browser-dev-tools.md | 4 +- .../debugging/console-logging.md | 0 .../{scripting => }/debugging/index.md | 10 +- .../{scripting => }/debugging/inspector.md | 11 +- .../getting-started/migrating-from-unity.md | 8 +- .../start-with-create-playcanvas.md | 2 +- docs/user-manual/optimization/index.md | 34 +++-- .../optimization/inspector-performance.md | 131 ++++++++++++++++++ docs/user-manual/scripting/index.md | 2 +- docusaurus.config.js | 5 + .../current.json | 12 ++ .../debugging/browser-dev-tools.md | 4 +- .../debugging/console-logging.md | 0 .../current/user-manual/debugging/index.md | 32 +++++ .../{scripting => }/debugging/inspector.md | 11 +- .../getting-started/migrating-from-unity.md | 8 +- .../start-with-create-playcanvas.md | 2 +- .../current/user-manual/optimization/index.md | 34 +++-- .../optimization/inspector-performance.md | 131 ++++++++++++++++++ .../user-manual/scripting/debugging/index.md | 26 ---- .../current/user-manual/scripting/index.md | 2 +- llms/user-manual/engine/llms.txt | 9 +- sidebars.js | 63 +++++---- .../debugging/chrome-debugger.png | Bin .../debugging/firefox-debugger.png | Bin .../debugging/inspector/debug-frame.webp | Bin .../debugging/inspector/frame-graph.png | Bin .../debugging/inspector/inspector.png | Bin .../performance-startup.webp | Bin 0 -> 42382 bytes .../performance-timeline.webp | Bin 0 -> 10482 bytes .../inspector-performance/performance.webp | Bin 0 -> 135392 bytes utils/plugins/llms/test/corpus.test.mjs | 2 +- 32 files changed, 439 insertions(+), 104 deletions(-) rename docs/user-manual/{scripting => }/debugging/browser-dev-tools.md (95%) rename docs/user-manual/{scripting => }/debugging/console-logging.md (100%) rename docs/user-manual/{scripting => }/debugging/index.md (55%) rename docs/user-manual/{scripting => }/debugging/inspector.md (88%) create mode 100644 docs/user-manual/optimization/inspector-performance.md rename i18n/ja/docusaurus-plugin-content-docs/current/user-manual/{scripting => }/debugging/browser-dev-tools.md (96%) rename i18n/ja/docusaurus-plugin-content-docs/current/user-manual/{scripting => }/debugging/console-logging.md (100%) create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/index.md rename i18n/ja/docusaurus-plugin-content-docs/current/user-manual/{scripting => }/debugging/inspector.md (90%) create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/user-manual/optimization/inspector-performance.md delete mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/index.md rename static/img/user-manual/{scripting => }/debugging/chrome-debugger.png (100%) rename static/img/user-manual/{scripting => }/debugging/firefox-debugger.png (100%) rename static/img/user-manual/{scripting => }/debugging/inspector/debug-frame.webp (100%) rename static/img/user-manual/{scripting => }/debugging/inspector/frame-graph.png (100%) rename static/img/user-manual/{scripting => }/debugging/inspector/inspector.png (100%) create mode 100644 static/img/user-manual/optimization/inspector-performance/performance-startup.webp create mode 100644 static/img/user-manual/optimization/inspector-performance/performance-timeline.webp create mode 100644 static/img/user-manual/optimization/inspector-performance/performance.webp diff --git a/docs/user-manual/scripting/debugging/browser-dev-tools.md b/docs/user-manual/debugging/browser-dev-tools.md similarity index 95% rename from docs/user-manual/scripting/debugging/browser-dev-tools.md rename to docs/user-manual/debugging/browser-dev-tools.md index 48e446f7991..370c3aa9f76 100644 --- a/docs/user-manual/scripting/debugging/browser-dev-tools.md +++ b/docs/user-manual/debugging/browser-dev-tools.md @@ -11,11 +11,11 @@ Chrome, Firefox and other browsers have Developer Tools integrated directly into In order to debug your scripts, select the Sources tab in Developer Tools (Chrome). Open the 'navigator' by clicking the icon in the top left corner of the Sources pane. You should see something similar to what is shown below: -![Debugger](/img/user-manual/scripting/debugging/chrome-debugger.png) +![Debugger](/img/user-manual/debugging/chrome-debugger.png) In Firefox it looks like this: -![Firefox](/img/user-manual/scripting/debugging/firefox-debugger.png) +![Firefox](/img/user-manual/debugging/firefox-debugger.png) The navigator lists all of the scripts currently running in the active tab, including any PlayCanvas scripts that you have written. Find one of your scripts in the navigator and select it to open the source code. You are now able to set breakpoints and debug. diff --git a/docs/user-manual/scripting/debugging/console-logging.md b/docs/user-manual/debugging/console-logging.md similarity index 100% rename from docs/user-manual/scripting/debugging/console-logging.md rename to docs/user-manual/debugging/console-logging.md diff --git a/docs/user-manual/scripting/debugging/index.md b/docs/user-manual/debugging/index.md similarity index 55% rename from docs/user-manual/scripting/debugging/index.md rename to docs/user-manual/debugging/index.md index f1676e37ddb..f725291e475 100644 --- a/docs/user-manual/scripting/debugging/index.md +++ b/docs/user-manual/debugging/index.md @@ -1,9 +1,9 @@ --- title: Debugging -description: Tools and techniques for finding and fixing bugs in your PlayCanvas scripts using browser developer tools. +description: Tools and techniques for finding and fixing bugs in PlayCanvas applications, with logging, the browser developer tools, the Inspector and debug drawing. --- -Debugging is essential for identifying and fixing issues in your PlayCanvas scripts. When your code doesn't behave as expected, these tools and techniques will help you quickly find and resolve problems. +Debugging is essential for identifying and fixing issues in your PlayCanvas application, in its scripts as well as in what it renders and loads. When it doesn't behave as expected, these tools and techniques will help you quickly find and resolve problems. To find out why it runs slowly, see [Which Tool to Use](/user-manual/optimization/#which-tool-to-use). ## Debugging Techniques @@ -24,3 +24,9 @@ Use breakpoints, step-through debugging, and performance profiling to deeply ins Look inside the running application: its entities and components, cameras, assets and GPU resources, the passes of each frame, and the draws of a pass one at a time. **[Learn the Inspector →](./inspector.md)** + +### Debug Drawing + +Draw lines, shapes and textures over the scene to see what your code computes, such as bounds and directions, or the content of a render target and the depth of the scene. + +**[Learn Debug Drawing →](/user-manual/graphics/debug-drawing/)** diff --git a/docs/user-manual/scripting/debugging/inspector.md b/docs/user-manual/debugging/inspector.md similarity index 88% rename from docs/user-manual/scripting/debugging/inspector.md rename to docs/user-manual/debugging/inspector.md index 961d7da203f..778f32c4e7f 100644 --- a/docs/user-manual/scripting/debugging/inspector.md +++ b/docs/user-manual/debugging/inspector.md @@ -1,11 +1,11 @@ --- title: Inspector -description: Inspect a running PlayCanvas application in a debug panel - its entities, cameras, assets, frame graph, GPU resources, scripts and shaders - and step through the draws of a frame. +description: Inspect a running PlayCanvas application in a debug panel - its entities, cameras, assets, frame graph, GPU resources, scripts and shaders - step through the draws of a frame, and record its performance. --- The Inspector is a debug panel for a running PlayCanvas application. It docks over the canvas and shows the application's scene, GPU resources and rendered frames as they are now, with the properties of whatever you select updating live below. -The Inspector panel docked beside a running application, with an entity selected in the hierarchy +The Inspector panel docked beside a running application, with an entity selected in the hierarchy Use it to answer questions such as: @@ -13,6 +13,7 @@ Use it to answer questions such as: - Which material and shader does a mesh draw with, and which textures does it use? - What does a frame render, in which passes and in what order? - Where does the video memory go? +- Which frames are slow, and what holds them back? The Inspector only reads the application. The changes it makes are the ones you ask for: turning entities on and off, pausing and stepping the application, and view-only overrides (render modes, wireframe and a flown or orbited camera), which it removes when it closes. @@ -56,6 +57,7 @@ app.root.addChild(entity); | `toggleKey` | `` 'Backquote' `` | The key that shows and hides the panel. | | `pauseKey` | `'F9'` | The key that pauses and resumes the application. | | `stepKey` | `'F10'` | The key that advances one frame while paused. | +| `record` | `false` | Whether to start recording frames on the Performance tab. Created before the application's first frame, the Inspector records its start too, see [Recording the Start of the Application](/user-manual/optimization/inspector-performance/#recording-the-start-of-the-application). | | `storageKey` | `'pc-inspector'` | The local storage key the panel's settings are kept under, such as the active tab and the panel width. `null` keeps nothing. | ## The Toolbar @@ -82,6 +84,7 @@ Each tab lists one kind of object, and the property view below it shows the sele | **Cameras** | The cameras in render order, with where each draws. A render mode shows the scene's material inputs instead of the final image, such as albedo, world normals or lighting, for one camera or all of them, and the scene can be drawn in wireframe. | | **Assets** | Every asset in the registry, with its file, its load state and what uses it. | | **Frame graph** | The passes that rendered the last frame, in order, with the layers, draws and render targets of each. **GPU timings** shows the time each pass takes on the GPU where the device can measure it, **Freeze** keeps showing the current frame while the application runs on, and **Preview** draws the selected pass's render target over the view. | +| **Performance** | Records the frames of the application and charts their frame, CPU, GPU and script times, what loaded, memory and resources over time, with each frame on a timeline of its own. See [Inspector Performance](/user-manual/optimization/inspector-performance/). | | **Render targets** | The render targets on the device, with the passes that rendered into them and a live preview of a chosen attachment. | | **Textures** | The textures on the device, largest first, with a live preview and a choice of channels to show. | | **Meshes** | The meshes of the application, largest first, with their geometry and what uses them. | @@ -91,7 +94,7 @@ Each tab lists one kind of object, and the property view below it shows the sele | **Shaders** | The compiled shaders, with their sources. | | **Physics** | The rigid bodies and joints of the physics world, and an option to draw the world over the scene. | -The Frame graph tab, with the forward pass selected and its render target previewed over the view +The Frame graph tab, with the forward pass selected and its render target previewed over the view ## Stepping Through a Frame @@ -102,7 +105,7 @@ The Frame graph tab can draw a frame one draw call at a time, to see how the ima 3. Press the Up and Down arrow keys to step back and forward one draw at a time. The property view lists the drawn mesh instances with the current one highlighted, the view outlines it, and the status bar shows its number, such as *draw 8 of 12 · World opaque*. Expand an entry to see more about it, such as its mesh and material. 4. Turn off **Debug frame** to draw the full frame again. -Stepping through the draws of the World layer one at a time +Stepping through the draws of the World layer one at a time :::note Stepping through draws needs the debug build of the engine, and the option is disabled with other builds. Bundlers such as Vite pick the debug build in development through the `development` export condition of the `playcanvas` package. diff --git a/docs/user-manual/getting-started/migrating-from-unity.md b/docs/user-manual/getting-started/migrating-from-unity.md index f47081ca987..24d7a98fd48 100644 --- a/docs/user-manual/getting-started/migrating-from-unity.md +++ b/docs/user-manual/getting-started/migrating-from-unity.md @@ -52,7 +52,7 @@ The Launch Page stays connected to the Editor. Changes to entities, components, Scripts never run in the Editor's viewport, so there is nothing like Unity's `[ExecuteInEditMode]`: anything a script creates or changes appears only in the launched app. -The Launch button's menu has options for testing: choose the graphics API, open the [Profiler](/user-manual/optimization/profiler/), [MiniStats](/user-manual/optimization/mini-stats/) or [Inspector](/user-manual/scripting/debugging/inspector/), and tick **Debug** to log the engine's warnings and errors to the console. +The Launch button's menu has options for testing: choose the graphics API, open the [Profiler](/user-manual/optimization/profiler/), [MiniStats](/user-manual/optimization/mini-stats/) or [Inspector](/user-manual/debugging/inspector/), and tick **Debug** to log the engine's warnings and errors to the console. ### Navigating the Viewport {#navigating-the-viewport} @@ -641,11 +641,11 @@ Your app runs in the browser, so you debug it with the browser's developer tools | Unity | PlayCanvas | | --- | --- | -| Console window | The **Console** tab of the developer tools. See [Console Logging](/user-manual/scripting/debugging/console-logging/). | -| Attaching Visual Studio or Rider | Breakpoints in the **Sources** tab of the developer tools. See [Browser Dev Tools](/user-manual/scripting/debugging/browser-dev-tools/). | +| Console window | The **Console** tab of the developer tools. See [Console Logging](/user-manual/debugging/console-logging/). | +| Attaching Visual Studio or Rider | Breakpoints in the **Sources** tab of the developer tools. See [Browser Dev Tools](/user-manual/debugging/browser-dev-tools/). | | `Debug.Break()` | A `debugger;` statement, which pauses the app while the developer tools are open | | Profiler | The [Profiler](/user-manual/optimization/profiler/) and [MiniStats](/user-manual/optimization/mini-stats/), from the Launch button's menu, and the **Performance** tab of the developer tools | -| Frame Debugger | The [Inspector](/user-manual/scripting/debugging/inspector/), also from the Launch button's menu, which shows the render passes and draw calls of each frame, and [native GPU profilers](/user-manual/optimization/gpu-profiling/) | +| Frame Debugger | The [Inspector](/user-manual/debugging/inspector/), also from the Launch button's menu, which shows the render passes and draw calls of each frame, and [native GPU profilers](/user-manual/optimization/gpu-profiling/) | | `Debug.DrawLine` and Gizmos | `this.app.drawLine()`, and [`WireRenderer`](/user-manual/graphics/debug-drawing/) for spheres, boxes and other shapes | ## Version Control and Collaboration {#version-control-and-collaboration} diff --git a/docs/user-manual/getting-started/start-with-create-playcanvas.md b/docs/user-manual/getting-started/start-with-create-playcanvas.md index 88263113030..d4dc609ba06 100644 --- a/docs/user-manual/getting-started/start-with-create-playcanvas.md +++ b/docs/user-manual/getting-started/start-with-create-playcanvas.md @@ -85,7 +85,7 @@ To publish an Editor project as a Web Lens instead, see [Snapchat Web Lenses](/u ## Debug with the Inspector -The development server loads the [Inspector](/user-manual/scripting/debugging/inspector/) for the running application. Press the backquote key (`` ` ``) to show or hide it, F9 to pause, and F10 to step one frame. Production builds do not include the Inspector. +The development server loads the [Inspector](/user-manual/debugging/inspector/) for the running application. Press the backquote key (`` ` ``) to show or hide it, F9 to pause, and F10 to step one frame. Production builds do not include the Inspector. ## Skip the Prompts diff --git a/docs/user-manual/optimization/index.md b/docs/user-manual/optimization/index.md index d18da2de357..e3e347a267c 100644 --- a/docs/user-manual/optimization/index.md +++ b/docs/user-manual/optimization/index.md @@ -1,8 +1,26 @@ --- -title: Optimization -description: Why and how to optimize load time, frame rate, CPU, GPU load, and memory in PlayCanvas applications. +title: Debugging and Optimization +description: Tools for finding bugs and performance problems in PlayCanvas applications, and why and how to optimize load time, frame rate, CPU and GPU load, and memory. --- +This section covers the tools for looking inside a running PlayCanvas application, to find out why it does not behave as expected or does not perform as it should, and the ways of making it load and run faster. + +## Which Tool to Use {#which-tool-to-use} + +| To find out | Use | +| ----------- | --- | +| What your code does, and where it goes wrong | [Console Logging](/user-manual/debugging/console-logging/) and the [Browser Dev Tools](/user-manual/debugging/browser-dev-tools/) | +| What the application holds: its entities and components, cameras, assets and GPU resources | The [Inspector](/user-manual/debugging/inspector/) | +| How a frame renders, pass by pass and draw by draw | The Frame graph tab of the [Inspector](/user-manual/debugging/inspector/), and [stepping through a frame](/user-manual/debugging/inspector/#stepping-through-a-frame) | +| What your code computes in the scene, such as bounds, directions or the content of a render target | [Debug Drawing](/user-manual/graphics/debug-drawing/) | +| Whether the application keeps its frame rate as you use it | [MiniStats](/user-manual/optimization/mini-stats/) | +| Which frames are slow, and what holds them back: the CPU, the GPU, scripts or loading | The [Performance tab of the Inspector](/user-manual/optimization/inspector-performance/) | +| How long the application takes to start, and what loads when | The [Performance tab of the Inspector](/user-manual/optimization/inspector-performance/#recording-the-start-of-the-application), or the [Editor Profiler](/user-manual/optimization/profiler/) | +| The statistics of the engine from code, for dashboards and automated comparisons | [Profiling with AppStats](/user-manual/optimization/app-stats/) | +| What the GPU does within a frame, in detail | [GPU Profiling](/user-manual/optimization/gpu-profiling/) with the native GPU tools | + +## Optimization + Optimization is a critical part of developing a PlayCanvas application. It can mean the difference between a great user experience and a terrible one. :::tip @@ -20,17 +38,9 @@ Let's begin by establishing the key goals for optimization and highlight why eac | 🔋 Minimize CPU and GPU load | Just because your app maintains 60 frames per second does not mean your work is done. Reducing processor load preserves battery power and keeps devices running cool. | | 🧠 Minimize memory utilization | Browsers allocate a limited pool of memory to applications. Once this pool is exhausted, the tab will crash and reload. Your users will be upset! | -## Measure Before Optimizing - -Choose a repeatable scene or interaction, record a baseline on the target device, then measure each change under the same conditions. +### Measure Before Optimizing {#measure-before-optimizing} -| Tool | Use it for | -| ---- | ---------- | -| [MiniStats](/user-manual/optimization/mini-stats/) | Watching frame time, CPU/GPU costs and GPU resource memory while interacting with the application. | -| [Profiling with AppStats](/user-manual/optimization/app-stats/) | Reading public statistics from code and collecting reports for dashboards, agents and automated comparisons. | -| [Editor Profiler](/user-manual/optimization/profiler/) | Inspecting the Editor Launch profiler, including asset loading and shader compilation timelines. | -| [GPU Profiling](/user-manual/optimization/gpu-profiling/) | Capturing frames with native GPU tools for detailed rendering investigations. | -| [Inspector](/user-manual/scripting/debugging/inspector/) | Finding where video memory goes, which passes and draws a frame makes, and what each mesh and material uses, in the running application. | +Choose a repeatable scene or interaction, record a baseline on the target device, then measure each change under the same conditions, with the profiling tools in [Which Tool to Use](#which-tool-to-use). The [guidelines](/user-manual/optimization/guidelines/) and the pages after them describe what to change. :::ai Give an AI assistant a performance goal, repeatable scenario and baseline reports from **[AppStats](/user-manual/optimization/app-stats/#collecting-periodic-reports)**. It can combine these with MiniStats or browser evidence and propose one measurable change at a time. Use the **[Editor MCP Server](/user-manual/editor/mcp-server/)** to replay Editor input or follow **[Developing with AI](/user-manual/engine/developing-with-ai/)** for standalone projects. diff --git a/docs/user-manual/optimization/inspector-performance.md b/docs/user-manual/optimization/inspector-performance.md new file mode 100644 index 00000000000..a499562db91 --- /dev/null +++ b/docs/user-manual/optimization/inspector-performance.md @@ -0,0 +1,131 @@ +--- +title: Inspector Performance +description: Record the frames of a running application on the Inspector's Performance tab - frame, CPU, GPU and script times, loading and the start of the application, the app's counters - and step through each frame on its timeline. +--- + +The Performance tab of the [Inspector](/user-manual/debugging/inspector/) records the frames of a running application and charts them over time, to find the frames that are slow and see what held them back. Where [MiniStats](/user-manual/optimization/mini-stats/) shows recent averages while you use the application, the Performance tab keeps every frame of a capture, up to the last 1000, to compare frames and step through them one by one. + +The Performance tab of the Inspector, with a capture charted over time, a frame shown on its timeline and its figures listed below + +## Recording + +Press the record button, a ring around a dot, to record every frame. It shows red while recording, and pressing it again stops. The button beside it clears the capture. + +The charts cover the whole capture along its time: each frame is as wide as it lasted, so slow frames take the room they took, and a pause longer than a second, such as between two recordings, folds to a break mark labelled with its length. From the top: + +| Chart | Shows | +|-------|-------| +| **Frame** | The frame interval. | +| **CPU** | The time of the main thread, by phase: the update of the systems, the physics, the scripts, the animation, the post-update, the render and the Inspector's own time. | +| **GPU** | The GPU time of the frame, with **GPU timings** turned on. | +| **Draw calls** | The draw calls, by kind where the engine counts them. | +| **Scripts** | The time of each script type, with **Script timing** turned on. See [Script Timing](#script-timing). | +| **Counters** | The counters the application keeps in `app.stats.user`. See [Counters](#counters). | +| **Loading** | The milestones of the page and the application, the assets loading and the requests in flight. See [Loading](#loading). | +| **Memory** | The JavaScript heap, the video memory and each kind of it, as lines sharing a scale. | +| **Resources** | The count of textures, render targets, shaders, buffers and, on WebGPU, pipelines. | +| **Events** | A row for each kind of event, marking the frames that had one. See [Events](#events). | + +A dashed line marks the display interval on the Frame, CPU and GPU charts. Hover a chart for the figures of the frame under the pointer, and a mark for what happened. Click the name of a chart or a section to collapse it, and untick a line in the list beside a chart to hide it; the chart then rescales to the others. Drag the divider between the names and the charts to make the names wider. + +To look at part of the capture: + +- Click a frame to show it on the [frame timeline](#the-frame-timeline), with everything recorded for it in the property view below. +- Drag across the charts to select frames together, with their averages, 95th percentiles and largest figures. The timeline then shows their average frame. +- Scroll over the charts to zoom, then drag the scrollbar under them, or drag across them holding Shift, to pan. Double-click to see the whole capture again. +- **‹** and **›** step a frame, **«** shows the first and **»** the newest, following it as frames are recorded. While the panel has focus, the arrow keys step a frame (ten with Shift), Home shows the first and End follows the newest. + +### Events + +| Event | Marks | +|-------|-------| +| **Hitches** | Frames that took over twice as long as the median frame, whatever held them back: the frames the user sees stutter. | +| **Thread blocked** | Frames in which the browser's main thread was busy for 50 milliseconds or more, with the script that ran longest, as Chromium browsers report them. It tells why a frame was slow: a hitch without it was held back by the GPU, the browser or the display, which the hover of the hitch says. | +| **Lightmaps** | Lightmaps the application baked with the lightmapper, for an application with one. | +| **Shaders** | Shaders compiled or created, and render pipelines created. | +| **Heap shrank** | The JavaScript heap shrinking: a garbage collection. | +| **Resources** | Textures, render targets or buffers created or destroyed. | +| **Measures** | Spans the application measures with `performance.measure`. | + +## The Frame Timeline + +The timeline under the charts shows the frame selected along its own time, as a flame chart. + +The timeline of a frame: the update, the scripts by type and the render on the CPU, and the effects with their passes on the GPU + +- The **CPU** line holds the update, the post-update, the Inspector and the render, and the lightmap bakes where they ran. The lines below break them down: the physics step and the animation, the render phases, and with [Script Timing](#script-timing) the scripts of the update and the post-update with a line breaking them down by script type. +- The **GPU** line holds the effects, such as bloom or depth of field, with the passes each runs below it, and the passes of their own. See [GPU Timings](#gpu-timings). +- The **Events** line holds the long tasks of the main thread and the spans measured with `performance.measure`, and the lines below it the milestones, the assets and the requests of the frame. + +Hover a bar for its time, or a line for everything on it. Click a script type to show it on the Scripts tab, a pass or an effect to show it on the Frame graph tab, and an asset to show it on the Assets tab. Scroll over the timeline to zoom into part of the frame, drag the scrollbar under it or drag across it holding Shift to pan, and double-click it to see the whole frame again. Click its title to collapse it. + +The property view below lists everything recorded for the frame: what held it back, the CPU time by phase, the GPU time of each pass, the scripts, the counters, what loaded, the work it submitted, memory and resources, and its events. + +## GPU Timings + +Turn on **GPU timings** to record the time of the GPU. On WebGPU each pass is timed, and the effect of a pass comes from the frame graph, as the pass it runs for; where the frame graph no longer matches the passes timed, every pass goes on the GPU line. Passes of one name in a row share a label, as Downsample ×5, and the frame details list the time of each. WebGL times the frame as a whole. + +## Script Timing + +Turn on **Script timing** to time each script type while recording: the time of its `update`, `postUpdate` and `initialize` calls, without the calls nested in them, and how many times each was called. The CPU chart then shows the scripts apart from the other systems, and the timeline draws them where they ran. + +The **Scripts** chart stacks the ten script types that took the longest, over the frames selected together or else the whole capture, so selecting a spike brings forward the scripts behind it. The others share one band, whose hover lists them. **▾ 10 more** under the list gives ten more types a band of their own. To follow a script whatever its time, pin it: **Pin** beside it in the frame details, or Shift+click it in the list. Alt+click a line of a list to show it alone, and again to show them all. + +Timing a call costs the application about half a microsecond, counted as the Inspector's time. Time spent in event handlers, timers and promises is not counted. On a page that is not cross-origin isolated, the browser's clock steps by a tenth of a millisecond, so the times of small scripts read best over many frames selected together. + +## Loading + +The **Loading** section shares the time of the charts: + +- **Milestones** marks the moments of the page and the application: the page arriving, the DOM being ready, the first paints, the preload, the application starting and its first frame. +- **Assets** draws each asset loading, from asking for it to its resource being ready: the request of its file solid and the processing after it, such as parsing, faint. The color is the kind of asset, with a key in the tooltip of the row's name, and failures are red. +- **Requests** charts how many requests of the page were in flight. + +Hover the section for what was loading, and click an asset to show it on the Assets tab. + +## Recording the Start of the Application {#recording-the-start-of-the-application} + +To record from the first frame the application runs, pass `record: true` to the Inspector, or set the `record` attribute of the `EntityInspector` script. Created before the application runs its first frame, as right after `app.init()`, the Inspector records the start of the application too: + +```javascript +const app = new AppBase(canvas); +app.init(createOptions); + +// recording before the first frame records the start of the application too +const inspector = new Inspector(app, { record: true }); + +app.start(); +``` + +The capture then begins with a **Startup** entry, from the page opening to the first frame, with the requests of the page, its milestones, the assets loaded and the times its main thread was blocked. Its details list how long it took, what loaded, the shader compiles, and the slowest assets with their request and processing apart. It is one of the 1000 entries of the capture, so it makes way for frames like any other. + +The Startup entry: the start of the application on the charts and on its timeline, with its milestones, assets and requests + +From code, set `inspector.recording` to start or stop a capture around a part of the application: + +```javascript +// once the part to look at has run +inspector.recording = false; +``` + +## Counters + +The **Counters** section charts the counters the application keeps in [`app.stats.user`](https://api.playcanvas.com/engine/classes/AppStats.html#user), as each frame ended: a line each, with a scale of its own, as their units are the application's. The frame details list their values, and the frames selected together their averages, 95th percentiles and largest. See [Profiling with AppStats](/user-manual/optimization/app-stats/) for the counters themselves: + +```javascript +// counted afresh each frame +app.on('frameupdate', () => app.stats.user.set('enemies', 0)); + +// wherever the application counts them +app.stats.user.set('enemies', app.stats.user.get('enemies') + 1); +``` + +## Engine Builds + +The release build of the engine times the update and the render as a whole. The profiler and debug builds add the phases of the render, the batcher's updating and creating of batches among them, the breakdown of the draw calls, the shader compiles and the lightmap bakes. + +The Inspector runs inside the application's update, so its own time is shown apart, as Inspector. Turn off **Inspector time** to leave it out of the CPU chart, which then scales to the application's own time. + +## Copying the Figures + +Right-click the name of the tab to copy the whole capture, every frame with all it recorded, or the name of a chart or a section, or a line of its list, to copy that series a row per frame, as JSON or as CSV for a spreadsheet. Both cover the frames selected together when there are any. Right-click a frame in the charts to copy it, inside the frames selected together to copy their figures, and the timeline to copy its bars. diff --git a/docs/user-manual/scripting/index.md b/docs/user-manual/scripting/index.md index 579ab89a266..90210d42cba 100644 --- a/docs/user-manual/scripting/index.md +++ b/docs/user-manual/scripting/index.md @@ -68,5 +68,5 @@ Rotate.prototype.update = function(dt) { - [Script Attributes](./script-attributes/index.md) — Exposing configurable properties. - [Engine API](./engine-api.md) — Key classes and patterns. - [Events](./events.md) — Communication between scripts. -- [Debugging](./debugging/index.md) — Tools and techniques for troubleshooting. +- [Debugging](/user-manual/debugging/) — Tools and techniques for troubleshooting. - [Migration Guide](./migration-guide.md) — Upgrading from classic to ESM scripts. diff --git a/docusaurus.config.js b/docusaurus.config.js index 3480685fb4b..44e1892f8fd 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -68,6 +68,11 @@ const config = { plugins: [ [ '@docusaurus/plugin-client-redirects', { redirects: [ + // Debugging moved out of Scripting into Debugging and Optimization + { from: ['/user-manual/scripting/debugging/'], to: '/user-manual/debugging/' }, + { from: ['/user-manual/scripting/debugging/console-logging/'], to: '/user-manual/debugging/console-logging/' }, + { from: ['/user-manual/scripting/debugging/browser-dev-tools/'], to: '/user-manual/debugging/browser-dev-tools/' }, + { from: ['/user-manual/scripting/debugging/inspector/'], to: '/user-manual/debugging/inspector/' }, { from: ['/api', '/en/api'], to: 'https://api.playcanvas.com' }, // Retired Facebook docs (the Facebook Canvas web games platform was discontinued) { from: ['/tutorials/facebook-api/'], to: '/tutorials/' }, diff --git a/i18n/ja/docusaurus-plugin-content-docs/current.json b/i18n/ja/docusaurus-plugin-content-docs/current.json index 9e0454daee1..03acb60a036 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current.json +++ b/i18n/ja/docusaurus-plugin-content-docs/current.json @@ -19,6 +19,14 @@ "message": "2D", "description": "The label for category 2D in sidebar userManualSidebar" }, + "sidebar.userManualSidebar.category.Debugging and Optimization": { + "message": "デバッグず最適化", + "description": "The label for category Debugging and Optimization in sidebar userManualSidebar" + }, + "sidebar.userManualSidebar.category.Profiling": { + "message": "プロファむリング", + "description": "The label for category Profiling in sidebar userManualSidebar" + }, "sidebar.userManualSidebar.category.Optimization": { "message": "最適化", "description": "The label for category Optimization in sidebar userManualSidebar" @@ -199,6 +207,10 @@ "message": "スクリプト属性", "description": "The label for category Script Attributes in sidebar userManualSidebar" }, + "sidebar.userManualSidebar.doc.Debugging": { + "message": "デバッグ", + "description": "The label for the doc item Debugging in sidebar userManualSidebar, linking to the doc user-manual/debugging/index" + }, "sidebar.userManualSidebar.category.Debugging": { "message": "デバッグ", "description": "The label for category Debugging in sidebar userManualSidebar" diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/browser-dev-tools.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/browser-dev-tools.md similarity index 96% rename from i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/browser-dev-tools.md rename to i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/browser-dev-tools.md index e24e8898c83..688089084ea 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/browser-dev-tools.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/browser-dev-tools.md @@ -11,11 +11,11 @@ Chrome、Firefoxや他のブラりザでは、ブラりザに盎接組み蟌た スクリプトをデバッグするためには、Developer Tools (Chrome)でSourcesタブを遞択したす。Sourcesペむンの巊䞊隅にあるアむコンをクリックしお 'navigator' を開きたす。以䞋のようなものが衚瀺されるはずです -![Debugger](/img/user-manual/scripting/debugging/chrome-debugger.png) +![Debugger](/img/user-manual/debugging/chrome-debugger.png) Firefoxでは次のようになりたす -![Firefox](/img/user-manual/scripting/debugging/firefox-debugger.png) +![Firefox](/img/user-manual/debugging/firefox-debugger.png) ナビゲヌタには、自身で曞いたPlayCanvasスクリプトを含む、珟圚アクティブなタブで実行しおいる党おのスクリプトがリストされたす。ナビゲヌタヌからスクリプトを探し、遞択するず゜ヌスコヌドが開きたす。これで、ブレむクポむントを蚭定しおデバッグが行えたす。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/console-logging.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/console-logging.md similarity index 100% rename from i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/console-logging.md rename to i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/console-logging.md diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/index.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/index.md new file mode 100644 index 00000000000..0a852c688a2 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/index.md @@ -0,0 +1,32 @@ +--- +title: デバッグ +description: ロギング、ブラりザの開発者ツヌル、Inspector、デバッグ描画を䜿っお PlayCanvas アプリケヌションのバグを芋぀け修正するツヌルず手法です。 +--- + +デバッグは、PlayCanvasアプリケヌションの問題を、スクリプトだけでなくレンダリングやロヌドされるものも含めお特定し、修正するために䞍可欠です。期埅通りに動䜜しない堎合、これらのツヌルずテクニックは問題を迅速に芋぀けお解決するのに圹立ちたす。動䜜が遅い理由を調べるには、[䜿うツヌル](/user-manual/optimization/#which-tool-to-use)を参照しおください。 + +## デバッグテクニック + +### コン゜ヌルロギング + +コヌドが䜕をしおいるかを理解する最も手軜な方法です。実行フロヌを远跡し、倉数の倀を怜査するために`console.log()`ステヌトメントを远加したす。 + +**[コン゜ヌルロギングを孊ぶ →](./console-logging.md)** + +### ブラりザ開発者ツヌル + +ブレヌクポむント、ステップスルヌデバッグ、パフォヌマンスプロファむリングを䜿甚しお、実行䞭のコヌドを詳现に怜査したす。 + +**[ブラりザ開発者ツヌルを孊ぶ →](./browser-dev-tools.md)** + +### Inspector + +実行䞭のアプリケヌションの内郚を確認したす。゚ンティティずコンポヌネント、カメラ、アセット、GPUリ゜ヌス、各フレヌムのパス、そしおパスの描画を1぀ず぀確認できたす。 + +**[Inspectorを孊ぶ →](./inspector.md)** + +### デバッグ描画 + +シヌンの䞊に線、圢状、テクスチャを描画しお、バりンディングや方向、レンダヌタヌゲットの内容やシヌンの深床など、コヌドが蚈算するものを確認したす。 + +**[デバッグ描画を孊ぶ →](/user-manual/graphics/debug-drawing/)** diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/inspector.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/inspector.md similarity index 90% rename from i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/inspector.md rename to i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/inspector.md index db2b8b4d68b..882b9ddccfa 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/inspector.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/debugging/inspector.md @@ -1,11 +1,11 @@ --- title: Inspector -description: 実行䞭の PlayCanvas アプリケヌションをデバッグパネルで調べたす。゚ンティティ、カメラ、アセット、フレヌムグラフ、GPU リ゜ヌス、Script、シェヌダヌを確認し、フレヌムの描画を1぀ず぀進められたす。 +description: 実行䞭の PlayCanvas アプリケヌションをデバッグパネルで調べたす。゚ンティティ、カメラ、アセット、フレヌムグラフ、GPU リ゜ヌス、Script、シェヌダヌを確認し、フレヌムの描画を1぀ず぀進め、パフォヌマンスを蚘録できたす。 --- Inspectorは、実行䞭のPlayCanvasアプリケヌション甚のデバッグパネルです。キャンバスの暪にドッキングし、アプリケヌションのシヌン、GPUリ゜ヌス、描画されたフレヌムを珟圚の状態で衚瀺したす。遞択したもののプロパティは、䞋のビュヌでリアルタむムに曎新されたす。 -実行䞭のアプリケヌションの暪にドッキングしたInspectorパネル。ピラルキヌで゚ンティティを遞択しおいたす +実行䞭のアプリケヌションの暪にドッキングしたInspectorパネル。ピラルキヌで゚ンティティを遞択しおいたす 次のような疑問を解決するのに圹立ちたす。 @@ -13,6 +13,7 @@ Inspectorは、実行䞭のPlayCanvasアプリケヌション甚のデバッグ - メッシュはどのマテリアルずシェヌダヌで描画され、どのテクスチャを䜿っおいるか。 - フレヌムは䜕を、どのパスで、どの順序で描画しおいるか。 - ビデオメモリはどこで䜿われおいるか。 +- どのフレヌムが遅く、䜕がそれを遅らせおいるか。 Inspectorはアプリケヌションを読み取るだけです。倉曎を加えるのは、ナヌザヌが指瀺した堎合に限られたす。゚ンティティのオン・オフ、アプリケヌションの䞀時停止ずコマ送り、そしお衚瀺だけに関わる䞊曞きレンダヌモヌド、ワむダヌフレヌム、飛行たたはオヌビットするカメラです。これらはInspectorを閉じるず元に戻りたす。 @@ -56,6 +57,7 @@ app.root.addChild(entity); | `toggleKey` | `` 'Backquote' `` | パネルの衚瀺・非衚瀺を切り替えるキヌ。 | | `pauseKey` | `'F9'` | アプリケヌションを䞀時停止・再開するキヌ。 | | `stepKey` | `'F10'` | 䞀時停止䞭に1フレヌム進めるキヌ。 | +| `record` | `false` | Performance タブでフレヌムの蚘録を開始するかどうか。アプリケヌションの最初のフレヌムより前に䜜成するず、Inspector はその起動も蚘録したす。[アプリケヌションの起動の蚘録](/user-manual/optimization/inspector-performance/#recording-the-start-of-the-application)を参照しおください。 | | `storageKey` | `'pc-inspector'` | アクティブなタブやパネルの幅など、パネルの蚭定を保存するロヌカルストレヌゞのキヌ。`null`の堎合は䜕も保存したせん。 | ## ツヌルバヌ {#the-toolbar} @@ -82,6 +84,7 @@ Escキヌで、ピック、飛行、オヌビットを終了したす。 | **Cameras** | 描画順のカメラず、それぞれの描画先。レンダヌモヌドを䜿うず、最終的な画像の代わりにアルベド、ワヌルド法線、ラむティングなどのシヌンのマテリアル入力を、1぀のカメラたたはすべおのカメラで衚瀺できたす。シヌンをワむダヌフレヌムで描画するこずもできたす。 | | **Assets** | レゞストリ内のすべおのアセットず、そのファむル、読み蟌み状態、䜿甚箇所。 | | **Frame graph** | 盎前のフレヌムを描画したパスを順に衚瀺し、それぞれのレむダヌ、描画、レンダヌタヌゲットを瀺したす。**GPU timings**はデバむスが蚈枬できる堎合に各パスのGPU時間を衚瀺し、**Freeze**はアプリケヌションの実行䞭も珟圚のフレヌムを衚瀺し続け、**Preview**は遞択したパスのレンダヌタヌゲットをビュヌの䞊に描画したす。 | +| **Performance** | アプリケヌションのフレヌムを蚘録し、フレヌム、CPU、GPU、スクリプトの時間、ロヌドされたもの、メモリ、リ゜ヌスを時間に沿っおチャヌト衚瀺し、各フレヌムを独自のタむムラむンで衚瀺したす。[Inspector のパフォヌマンス](/user-manual/optimization/inspector-performance/)を参照しおください。 | | **Render targets** | デバむス䞊のレンダヌタヌゲットず、そこに描画したパス、遞択したアタッチメントのラむブプレビュヌ。 | | **Textures** | デバむス䞊のテクスチャを倧きい順に衚瀺し、ラむブプレビュヌず衚瀺するチャンネルの遞択を提䟛したす。 | | **Meshes** | アプリケヌションのメッシュを倧きい順に衚瀺し、そのゞオメトリず䜿甚箇所を瀺したす。 | @@ -91,7 +94,7 @@ Escキヌで、ピック、飛行、オヌビットを終了したす。 | **Shaders** | コンパむル枈みのシェヌダヌずその゜ヌス。 | | **Physics** | 物理ワヌルドの剛䜓ずゞョむント、そしおワヌルドをシヌンの䞊に描画するオプション。 | -フォワヌドパスを遞択し、そのレンダヌタヌゲットをビュヌの䞊にプレビュヌしおいるFrame graphタブ +フォワヌドパスを遞択し、そのレンダヌタヌゲットをビュヌの䞊にプレビュヌしおいるFrame graphタブ ## フレヌムのステップ実行 {#stepping-through-a-frame} @@ -102,7 +105,7 @@ Frame graphタブでは、フレヌムをドロヌコヌル1぀ず぀描画で 3. 䞊䞋の矢印キヌで、描画を1぀ず぀戻ったり進めたりしたす。プロパティビュヌには描画されたメッシュむンスタンスが䞀芧衚瀺され、珟圚のものが匷調衚瀺されたす。ビュヌではその茪郭が衚瀺され、ステヌタスバヌには*draw 8 of 12 · World opaque*のようにその番号が衚瀺されたす。項目を展開するず、メッシュやマテリアルなどの詳现を確認できたす。 4. **Debug frame**をオフにするず、再びフレヌム党䜓が描画されたす。 -Worldレむダヌの描画を1぀ず぀進めおいる様子 +Worldレむダヌの描画を1぀ず぀進めおいる様子 :::note 描画のステップ実行にぱンゞンのデバッグビルドが必芁で、他のビルドではこのオプションは無効になりたす。Viteなどのバンドラヌは、開発時に`playcanvas`パッケヌゞの`development`゚クスポヌト条件によっおデバッグビルドを遞択したす。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/getting-started/migrating-from-unity.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/getting-started/migrating-from-unity.md index 926ca30ee88..7d4710f755f 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/getting-started/migrating-from-unity.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/getting-started/migrating-from-unity.md @@ -52,7 +52,7 @@ Unityはゲヌムを゚ディタヌの䞭で再生したす。PlayCanvasは新 スクリプトが゚ディタヌのビュヌポヌトで実行されるこずはないため、Unityの`[ExecuteInEditMode]`に盞圓するものはありたせん。スクリプトが䜜成したり倉曎したりするものは、起動したアプリにしか珟れたせん。 -Launchボタンのメニュヌには、テスト甚のオプションがありたす。グラフィックスAPIを遞んだり、[プロファむラヌ](/user-manual/optimization/profiler/)、[MiniStats](/user-manual/optimization/mini-stats/)、[Inspector](/user-manual/scripting/debugging/inspector/)を開いたりできたす。**Debug** にチェックを入れるず、゚ンゞンの譊告ず゚ラヌがコン゜ヌルに蚘録されたす。 +Launchボタンのメニュヌには、テスト甚のオプションがありたす。グラフィックスAPIを遞んだり、[プロファむラヌ](/user-manual/optimization/profiler/)、[MiniStats](/user-manual/optimization/mini-stats/)、[Inspector](/user-manual/debugging/inspector/)を開いたりできたす。**Debug** にチェックを入れるず、゚ンゞンの譊告ず゚ラヌがコン゜ヌルに蚘録されたす。 ### ビュヌポヌトの操䜜 {#navigating-the-viewport} @@ -641,11 +641,11 @@ Unityはプラットフォヌムごずにプレむダヌをビルドしたす。 | Unity | PlayCanvas | | --- | --- | -| Consoleりィンドり | 開発者ツヌルの **Console** タブ。[コン゜ヌルロギング](/user-manual/scripting/debugging/console-logging/)を参照しおください。 | -| Visual StudioやRiderのアタッチ | 開発者ツヌルの **Sources** タブで蚭定するブレヌクポむント。[ブラりザ開発ツヌル](/user-manual/scripting/debugging/browser-dev-tools/)を参照しおください。 | +| Consoleりィンドり | 開発者ツヌルの **Console** タブ。[コン゜ヌルロギング](/user-manual/debugging/console-logging/)を参照しおください。 | +| Visual StudioやRiderのアタッチ | 開発者ツヌルの **Sources** タブで蚭定するブレヌクポむント。[ブラりザ開発ツヌル](/user-manual/debugging/browser-dev-tools/)を参照しおください。 | | `Debug.Break()` | 開発者ツヌルを開いおいるずきにアプリを䞀時停止する`debugger;`文 | | Profiler | Launchボタンのメニュヌから䜿う[プロファむラヌ](/user-manual/optimization/profiler/)ず[MiniStats](/user-manual/optimization/mini-stats/)、および開発者ツヌルの **Performance** タブ | -| Frame Debugger | 同じくLaunchボタンのメニュヌから䜿え、各フレヌムのレンダヌパスずドロヌコヌルを衚瀺する[Inspector](/user-manual/scripting/debugging/inspector/)ず、[ネむティブのGPUプロファむラヌ](/user-manual/optimization/gpu-profiling/) | +| Frame Debugger | 同じくLaunchボタンのメニュヌから䜿え、各フレヌムのレンダヌパスずドロヌコヌルを衚瀺する[Inspector](/user-manual/debugging/inspector/)ず、[ネむティブのGPUプロファむラヌ](/user-manual/optimization/gpu-profiling/) | | `Debug.DrawLine`ずGizmos | `this.app.drawLine()`ず、球やボックスなどの圢状を描く[`WireRenderer`](/user-manual/graphics/debug-drawing/) | ## バヌゞョン管理ずコラボレヌション {#version-control-and-collaboration} diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/getting-started/start-with-create-playcanvas.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/getting-started/start-with-create-playcanvas.md index 5143a33b089..dae629507ee 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/getting-started/start-with-create-playcanvas.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/getting-started/start-with-create-playcanvas.md @@ -85,7 +85,7 @@ EditorのプロゞェクトをWeb Lensずしお公開する堎合は、[Snapchat ## Inspectorでデバッグする -開発サヌバヌは、実行䞭のアプリケヌション甚に[Inspector](/user-manual/scripting/debugging/inspector/)を読み蟌みたす。バッククォヌトキヌ`` ` ``で衚瀺ず非衚瀺を切り替え、F9で䞀時停止し、F10で1フレヌムず぀進めたす。Inspectorはプロダクションビルドには含たれたせん。 +開発サヌバヌは、実行䞭のアプリケヌション甚に[Inspector](/user-manual/debugging/inspector/)を読み蟌みたす。バッククォヌトキヌ`` ` ``で衚瀺ず非衚瀺を切り替え、F9で䞀時停止し、F10で1フレヌムず぀進めたす。Inspectorはプロダクションビルドには含たれたせん。 ## プロンプトを省略する diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/optimization/index.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/optimization/index.md index b5189bf6e9c..e741d3397c4 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/optimization/index.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/optimization/index.md @@ -1,8 +1,26 @@ --- -title: 最適化 -description: PlayCanvas アプリケヌションでロヌド時間、フレヌムレヌト、CPU、GPU 負荷、メモリを最適化する理由ず方法です。 +title: デバッグず最適化 +description: PlayCanvas アプリケヌションのバグやパフォヌマンスの問題を芋぀けるツヌルず、ロヌド時間、フレヌムレヌト、CPU ず GPU の負荷、メモリを最適化する理由ず方法です。 --- +このセクションでは、実行䞭の PlayCanvas アプリケヌションの内郚を調べ、期埅どおりに動䜜しない理由や、期埅どおりのパフォヌマンスが出ない理由を芋぀けるツヌルず、アプリケヌションのロヌドず実行を速くする方法を説明したす。 + +## 䜿うツヌル {#which-tool-to-use} + +| 調べたいこず | 䜿うもの | +| ------------ | -------- | +| コヌドが䜕をしおいお、どこで問題が起きおいるか | [コン゜ヌルロギング](/user-manual/debugging/console-logging/)ず[ブラりザ開発者ツヌル](/user-manual/debugging/browser-dev-tools/) | +| アプリケヌションの䞭身゚ンティティずコンポヌネント、カメラ、アセット、GPU リ゜ヌス | [Inspector](/user-manual/debugging/inspector/) | +| フレヌムがパスごず、描画ごずにどうレンダリングされるか | [Inspector](/user-manual/debugging/inspector/) の Frame graph タブず、[フレヌムのステップ実行](/user-manual/debugging/inspector/#stepping-through-a-frame) | +| コヌドがシヌン内で蚈算するものバりンディング、方向、レンダヌタヌゲットの内容など | [デバッグ描画](/user-manual/graphics/debug-drawing/) | +| 操䜜䞭にアプリケヌションがフレヌムレヌトを保おおいるか | [MiniStats](/user-manual/optimization/mini-stats/) | +| どのフレヌムが遅く、䜕がそれを遅らせおいるかCPU、GPU、スクリプト、ロヌド | [Inspector の Performance タブ](/user-manual/optimization/inspector-performance/) | +| アプリケヌションの起動にかかる時間ず、䜕がい぀ロヌドされるか | [Inspector の Performance タブ](/user-manual/optimization/inspector-performance/#recording-the-start-of-the-application)、たたは [Editor Profiler](/user-manual/optimization/profiler/) | +| ダッシュボヌドや自動比范のための、コヌドからの゚ンゞンの統蚈 | [AppStatsによるプロファむリング](/user-manual/optimization/app-stats/) | +| フレヌム内で GPU が行う凊理の詳现 | ネむティブ GPU ツヌルによる [GPUプロファむリング](/user-manual/optimization/gpu-profiling/) | + +## 最適化 {#optimization} + 最適化は、PlayCanvasアプリケヌション開発の重芁な郚分です。それは、優れたナヌザヌ゚クスペリ゚ンスずひどいナヌザヌ゚クスペリ゚ンスの分かれ目ずなるこずがありたす。 :::tip @@ -20,17 +38,9 @@ description: PlayCanvas アプリケヌションでロヌド時間、フレヌ | 🔋 CPUずGPUの負荷の最小化 | アプリが1秒間に60フレヌムを維持しおいるからずいっお、䜜業が完了したわけではありたせん。プロセッサヌの負荷を枛らすこずでバッテリヌ電力を節玄し、デバむスを䜎枩に保ちたす。 | | 🧠 メモリ䜿甚量の最小化 | ブラりザはアプリケヌションに割り圓おるメモリプヌルを制限しおいたす。このプヌルが枯枇するず、タブがクラッシュしお再ロヌドされたす。ナヌザヌは䞍満に感じるでしょう | -## 最適化の前に枬定する {#measure-before-optimizing} - -再珟可胜なシヌンや操䜜を遞び、察象デバむスでベヌスラむンを蚘録しおから、同じ条件で各倉曎を枬定したす。 +### 最適化の前に枬定する {#measure-before-optimizing} -| ツヌル | 甹途 | -| ------ | ---- | -| [MiniStats](/user-manual/optimization/mini-stats/) | アプリケヌションを操䜜しながら、フレヌム時間、CPU/GPUコスト、GPUリ゜ヌスメモリを芳察したす。 | -| [AppStatsによるプロファむリング](/user-manual/optimization/app-stats/) | コヌドから公開統蚈を読み取り、ダッシュボヌド、゚ヌゞェント、自動比范向けのレポヌトを収集したす。 | -| [Editor Profiler](/user-manual/optimization/profiler/) | アセットの読み蟌みやシェヌダヌのコンパむルのタむムラむンなど、゚ディタヌのLaunchプロファむラヌを確認したす。 | -| [GPUプロファむリング](/user-manual/optimization/gpu-profiling/) | ネむティブGPUツヌルでフレヌムをキャプチャし、レンダリングを詳しく調査したす。 | -| [Inspector](/user-manual/scripting/debugging/inspector/) | 実行䞭のアプリケヌションで、ビデオメモリの䜿われ方、フレヌムのパスず描画、各メッシュずマテリアルが䜿うものを調べたす。 | +再珟可胜なシヌンや操䜜を遞び、察象デバむスでベヌスラむンを蚘録しおから、[䜿うツヌル](#which-tool-to-use)のプロファむリングツヌルを䜿い、同じ条件で各倉曎を枬定したす。䜕を倉曎するかは、[ガむドラむン](/user-manual/optimization/guidelines/)ずそれに続くペヌゞで説明しおいたす。 :::ai AIアシスタントに目暙、再珟手順、[**AppStats**](/user-manual/optimization/app-stats/#collecting-periodic-reports)のベヌスラむンレポヌトを枡すず、MiniStatsやブラりザヌの結果ず組み合わせ、枬定可胜な倉曎を1぀ず぀提案できたす。Editorでは[**Editor MCP Server**](/user-manual/editor/mcp-server/)、スタンドアロンでは[**AIを掻甚した開発**](/user-manual/engine/developing-with-ai/)を䜿甚したす。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/optimization/inspector-performance.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/optimization/inspector-performance.md new file mode 100644 index 00000000000..c14649ecdd0 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/optimization/inspector-performance.md @@ -0,0 +1,131 @@ +--- +title: Inspector のパフォヌマンス +description: Inspector の Performance タブで、実行䞭のアプリケヌションのフレヌムを蚘録したす。フレヌム、CPU、GPU、スクリプトの時間、ロヌドずアプリケヌションの起動、アプリのカりンタヌを確認し、各フレヌムをタむムラむンで1぀ず぀確認できたす。 +--- + +[Inspector](/user-manual/debugging/inspector/)の Performance タブは、実行䞭のアプリケヌションのフレヌムを蚘録しお時間に沿っおチャヌト衚瀺し、遅いフレヌムを芋぀けお、䜕がそれを遅らせたのかを確認できたす。[MiniStats](/user-manual/optimization/mini-stats/)がアプリケヌションを䜿っおいる間の最近の平均を衚瀺するのに察し、Performance タブはキャプチャのすべおのフレヌムを最新の1000フレヌムたで保持し、フレヌムを比范したり1぀ず぀確認したりできたす。 + +Inspector の Performance タブ。キャプチャが時間に沿っおチャヌト衚瀺され、フレヌムがそのタむムラむンに衚瀺され、その数倀が䞋に䞀芧衚瀺されおいたす + +## 蚘録 {#recording} + +蚘録ボタン点を囲むリングを抌すず、すべおのフレヌムを蚘録したす。蚘録䞭は赀く衚瀺され、もう䞀床抌すず停止したす。その隣のボタンはキャプチャをクリアしたす。 + +チャヌトはキャプチャ党䜓を時間に沿っお衚瀺したす。各フレヌムはかかった時間の分の幅を持぀ため、遅いフレヌムはそれだけの堎所を占めたす。2回の蚘録の間のように1秒より長い間隔は、その長さを瀺す区切りマヌクに折りたたたれたす。䞊から順に次のずおりです。 + +| チャヌト | 衚瀺内容 | +|-------|-------| +| **Frame** | フレヌム間隔。 | +| **CPU** | メむンスレッドの時間をフェヌズ別に衚瀺したす。システムの曎新、物理、スクリプト、アニメヌション、ポストアップデヌト、レンダヌ、Inspector 自身の時間です。 | +| **GPU** | **GPU timings** をオンにしたずきのフレヌムの GPU 時間。 | +| **Draw calls** | ドロヌコヌル。゚ンゞンが皮類別に数える堎合は皮類別に衚瀺したす。 | +| **Scripts** | **Script timing** をオンにしたずきの、各スクリプトタむプの時間。[スクリプトの蚈枬](#script-timing)を参照しおください。 | +| **Counters** | アプリケヌションが `app.stats.user` に保持するカりンタヌ。[カりンタヌ](#counters)を参照しおください。 | +| **Loading** | ペヌゞずアプリケヌションのマむルストヌン、ロヌド䞭のアセット、凊理䞭のリク゚スト。[ロヌド](#loading)を参照しおください。 | +| **Memory** | JavaScript ヒヌプ、ビデオメモリずその皮類別の内蚳を、スケヌルを共有する線で衚瀺したす。 | +| **Resources** | テクスチャ、レンダヌタヌゲット、シェヌダヌ、バッファ、WebGPU ではパむプラむンの数。 | +| **Events** | むベントの皮類ごずの行で、そのむベントがあったフレヌムを瀺したす。[むベント](#events)を参照しおください。 | + +Frame、CPU、GPU のチャヌトでは、砎線がディスプレむの間隔を瀺したす。チャヌトにカヌ゜ルを合わせるずポむンタヌの䞋のフレヌムの数倀が、マヌクに合わせるず䜕が起きたかが衚瀺されたす。チャヌトやセクションの名前をクリックするず折りたたたれ、チャヌトの暪のリストで線のチェックを倖すず非衚瀺になり、チャヌトは残りの線に合わせおスケヌルし盎したす。名前ずチャヌトの間の区切り線をドラッグするず、名前の列を広げられたす。 + +キャプチャの䞀郚を芋るには、次のようにしたす。 + +- フレヌムをクリックするず、そのフレヌムが[フレヌムのタむムラむン](#the-frame-timeline)に衚瀺され、蚘録されたすべおの内容が䞋のプロパティビュヌに衚瀺されたす。 +- チャヌトの䞊をドラッグするず、耇数のフレヌムをたずめお遞択し、その平均、95パヌセンタむル、最倧倀を確認できたす。タむムラむンにはそれらの平均フレヌムが衚瀺されたす。 +- チャヌトの䞊でスクロヌルするずズヌムし、䞋のスクロヌルバヌをドラッグするか、Shift を抌しながらチャヌトの䞊をドラッグするずパンしたす。ダブルクリックするずキャプチャ党䜓の衚瀺に戻りたす。 +- **‹** ず **›** で1フレヌムず぀移動し、**«** で最初のフレヌムを、**»** で最新のフレヌムを衚瀺し、蚘録に合わせお远埓したす。パネルにフォヌカスがある間は、矢印キヌで1フレヌムず぀Shift で10フレヌムず぀移動し、Home で最初のフレヌムを衚瀺し、End で最新のフレヌムに远埓したす。 + +### むベント {#events} + +| むベント | 瀺すもの | +|-------|-------| +| **Hitches** | 䜕が原因であれ、䞭倮倀のフレヌムの2倍以䞊の時間がかかったフレヌム。ナヌザヌにカク぀きずしお芋えるフレヌムです。 | +| **Thread blocked** | Chromium 系のブラりザが報告する、ブラりザのメむンスレッドが50ミリ秒以䞊ビゞヌだったフレヌムず、最も長く実行されたスクリプト。フレヌムが遅くなった理由を瀺したす。これのないヒッチは GPU、ブラりザ、ディスプレむによっお遅れたもので、ヒッチのホバヌ衚瀺にそのこずが瀺されたす。 | +| **Lightmaps** | ラむトマッパヌを持぀アプリケヌションで、ラむトマッパヌがベむクしたラむトマップ。 | +| **Shaders** | コンパむルたたは䜜成されたシェヌダヌず、䜜成されたレンダヌパむプラむン。 | +| **Heap shrank** | JavaScript ヒヌプの瞮小、぀たりガベヌゞコレクション。 | +| **Resources** | 䜜成たたは砎棄されたテクスチャ、レンダヌタヌゲット、バッファ。 | +| **Measures** | アプリケヌションが `performance.measure` で蚈枬した区間。 | + +## フレヌムのタむムラむン {#the-frame-timeline} + +チャヌトの䞋のタむムラむンは、遞択したフレヌムをその時間に沿っおフレむムチャヌトflame chartずしお衚瀺したす。 + +フレヌムのタむムラむン。CPU にはアップデヌト、タむプ別のスクリプト、レンダヌが、GPU にぱフェクトずそのパスが衚瀺されおいたす + +- **CPU** の行には、アップデヌト、ポストアップデヌト、Inspector、レンダヌず、実行された䜍眮にラむトマップのベむクが衚瀺されたす。その䞋の行はそれらを现かく分けお衚瀺したす。物理のステップずアニメヌション、レンダヌのフェヌズ、そしお[スクリプトの蚈枬](#script-timing)をオンにした堎合はアップデヌトずポストアップデヌトのスクリプトず、それをスクリプトタむプ別に分けた行です。 +- **GPU** の行には、ブルヌムや被写界深床などの゚フェクトず、その䞋に各゚フェクトが実行するパス、そしお゚フェクトに属さないパスが衚瀺されたす。[GPU の蚈枬](#gpu-timings)を参照しおください。 +- **Events** の行には、メむンスレッドの長いタスクず `performance.measure` で蚈枬された区間が衚瀺され、その䞋の行にはフレヌムのマむルストヌン、アセット、リク゚ストが衚瀺されたす。 + +バヌにカヌ゜ルを合わせるずその時間が、行に合わせるずその行のすべおの内容が衚瀺されたす。スクリプトタむプをクリックするず Scripts タブに、パスや゚フェクトをクリックするず Frame graph タブに、アセットをクリックするず Assets タブに衚瀺されたす。タむムラむンの䞊でスクロヌルするずフレヌムの䞀郚にズヌムし、䞋のスクロヌルバヌをドラッグするか、Shift を抌しながらドラッグするずパンし、ダブルクリックするずフレヌム党䜓の衚瀺に戻りたす。タむトルをクリックするず折りたたたれたす。 + +䞋のプロパティビュヌには、そのフレヌムに぀いお蚘録されたすべおの内容が䞀芧衚瀺されたす。䜕がフレヌムを遅らせたか、フェヌズ別の CPU 時間、各パスの GPU 時間、スクリプト、カりンタヌ、ロヌドされたもの、送信した凊理、メモリずリ゜ヌス、むベントです。 + +## GPU の蚈枬 {#gpu-timings} + +**GPU timings** をオンにするず、GPU の時間を蚘録したす。WebGPU では各パスが蚈枬され、パスの゚フェクトはフレヌムグラフから、そのパスを実行するパスずしお求められたす。フレヌムグラフが蚈枬したパスず䞀臎しなくなった堎合は、すべおのパスが GPU の行に衚瀺されたす。同じ名前のパスが連続する堎合は Downsample ×5 のように1぀のラベルにたずめられ、フレヌムの詳现にはそれぞれの時間が䞀芧衚瀺されたす。WebGL ではフレヌム党䜓を1぀ずしお蚈枬したす。 + +## スクリプトの蚈枬 {#script-timing} + +**Script timing** をオンにするず、蚘録䞭に各スクリプトタむプを蚈枬したす。その `update`、`postUpdate`、`initialize` の呌び出しの時間を、その䞭で呌ばれた呌び出しを陀いお蚈枬し、それぞれが䜕回呌ばれたかも蚘録したす。CPU チャヌトではスクリプトが他のシステムず分けお衚瀺され、タむムラむンではスクリプトが実行された䜍眮に描画されたす。 + +**Scripts** チャヌトは、たずめお遞択したフレヌム、たたは遞択がなければキャプチャ党䜓で最も時間のかかった10個のスクリプトタむプを積み䞊げお衚瀺するため、スパむクを遞択するずその原因のスクリプトが前面に出おきたす。残りは1぀の垯にたずめられ、そのホバヌ衚瀺に䞀芧が衚瀺されたす。リストの䞋の **▾ 10 more** で、さらに10個のタむプに独自の垯を割り圓おたす。時間に関係なくスクリプトを远い続けるには、フレヌムの詳现の暪にある **Pin** を抌すか、リストで Shift+クリックしおピン留めしたす。リストの行を Alt+クリックするずその行だけを衚瀺し、もう䞀床 Alt+クリックするずすべおを衚瀺したす。 + +呌び出しの蚈枬には、Inspector の時間ずしお数えられる玄0.5マむクロ秒のコストがかかりたす。むベントハンドラヌ、タむマヌ、Promise で費やされた時間は数えられたせん。クロスオリゞン分離されおいないペヌゞでは、ブラりザのクロックが0.1ミリ秒刻みになるため、小さなスクリプトの時間は倚くのフレヌムをたずめお遞択したほうが正確に読み取れたす。 + +## ロヌド {#loading} + +**Loading** セクションは、チャヌトず同じ時間軞を共有したす。 + +- **Milestones** は、ペヌゞずアプリケヌションの節目を瀺したす。ペヌゞの到着、DOM の準備完了、最初のペむント、プリロヌド、アプリケヌションの開始ず最初のフレヌムです。 +- **Assets** は、各アセットのロヌドを、芁求しおからそのリ゜ヌスの準備ができるたで衚瀺したす。ファむルのリク゚ストは濃く、パヌスなどその埌の凊理は薄く衚瀺されたす。色はアセットの皮類を瀺し、行の名前のツヌルチップに凡䟋がありたす。倱敗したものは赀で衚瀺されたす。 +- **Requests** は、ペヌゞのリク゚ストがいく぀凊理䞭だったかをチャヌト衚瀺したす。 + +セクションにカヌ゜ルを合わせるずロヌド䞭だったものが衚瀺され、アセットをクリックするず Assets タブに衚瀺されたす。 + +## アプリケヌションの起動の蚘録 {#recording-the-start-of-the-application} + +アプリケヌションが最初に実行するフレヌムから蚘録するには、Inspector に `record: true` を枡すか、`EntityInspector` スクリプトの `record` 属性を蚭定したす。`app.init()` の盎埌のように、アプリケヌションが最初のフレヌムを実行する前に䜜成するず、Inspector はアプリケヌションの起動も蚘録したす。 + +```javascript +const app = new AppBase(canvas); +app.init(createOptions); + +// recording before the first frame records the start of the application too +const inspector = new Inspector(app, { record: true }); + +app.start(); +``` + +キャプチャはその埌、ペヌゞが開いおから最初のフレヌムたでの **Startup** ゚ントリから始たり、ペヌゞのリク゚スト、マむルストヌン、ロヌドされたアセット、メむンスレッドがブロックされた時間を含みたす。その詳现には、かかった時間、ロヌドされたもの、シェヌダヌのコンパむル、そしおリク゚ストず凊理を分けた最も遅いアセットが䞀芧衚瀺されたす。これはキャプチャの1000゚ントリの1぀なので、他の゚ントリず同じように新しいフレヌムに堎所を譲りたす。 + +Startup ゚ントリ。アプリケヌションの起動がチャヌトずそのタむムラむンに、マむルストヌン、アセット、リク゚ストずずもに衚瀺されおいたす + +コヌドから `inspector.recording` を蚭定するず、アプリケヌションの䞀郚の前埌でキャプチャを開始たたは停止できたす。 + +```javascript +// once the part to look at has run +inspector.recording = false; +``` + +## カりンタヌ {#counters} + +**Counters** セクションは、アプリケヌションが [`app.stats.user`](https://api.playcanvas.com/engine/classes/AppStats.html#user) に保持するカりンタヌを、各フレヌムの終了時の倀でチャヌト衚瀺したす。単䜍はアプリケヌションが決めるため、カりンタヌごずに独自のスケヌルを持぀線で衚瀺されたす。フレヌムの詳现にはその倀が、たずめお遞択したフレヌムではその平均、95パヌセンタむル、最倧倀が䞀芧衚瀺されたす。カりンタヌ自䜓に぀いおは [AppStatsによるプロファむリング](/user-manual/optimization/app-stats/)を参照しおください。 + +```javascript +// counted afresh each frame +app.on('frameupdate', () => app.stats.user.set('enemies', 0)); + +// wherever the application counts them +app.stats.user.set('enemies', app.stats.user.get('enemies') + 1); +``` + +## ゚ンゞンのビルド {#engine-builds} + +゚ンゞンのリリヌスビルドは、アップデヌトずレンダヌをそれぞれ党䜓ずしお蚈枬したす。プロファむラヌビルドずデバッグビルドでは、バッチャヌによるバッチの曎新ず䜜成を含むレンダヌのフェヌズ、ドロヌコヌルの内蚳、シェヌダヌのコンパむル、ラむトマップのベむクが远加されたす。 + +Inspector はアプリケヌションのアップデヌトの䞭で実行されるため、その時間は Inspector ずしお分けお衚瀺されたす。**Inspector time** をオフにするず CPU チャヌトから陀倖され、チャヌトはアプリケヌション自身の時間に合わせおスケヌルしたす。 + +## 数倀のコピヌ {#copying-the-figures} + +タブの名前を右クリックするずキャプチャ党䜓各フレヌムずその蚘録内容すべおを、チャヌトやセクションの名前、たたはそのリストの行を右クリックするずその系列をフレヌムごずに1行ずしお、JSON たたはスプレッドシヌト甚の CSV でコピヌしたす。どちらも、たずめお遞択したフレヌムがある堎合はそれらのフレヌムが察象になりたす。チャヌトでフレヌムを右クリックするずそのフレヌムを、たずめお遞択したフレヌムの䞭で右クリックするずその数倀を、タむムラむンを右クリックするずそのバヌをコピヌしたす。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/index.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/index.md deleted file mode 100644 index 2c12f0e7c1f..00000000000 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/debugging/index.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: デバッグ -description: ブラりザの開発者ツヌルを䜿っお PlayCanvas の Script のバグを芋぀け修正するツヌルず手法です。 ---- - -デバッグは、PlayCanvasスクリプト内の問題を特定し、修正するために䞍可欠です。コヌドが期埅通りに動䜜しない堎合、これらのツヌルずテクニックは問題を迅速に芋぀けお解決するのに圹立ちたす。 - -## デバッグテクニック - -### コン゜ヌルロギング - -コヌドが䜕をしおいるかを理解する最も手軜な方法です。実行フロヌを远跡し、倉数の倀を怜査するために`console.log()`ステヌトメントを远加したす。 - -**[コン゜ヌルロギングを孊ぶ →](./console-logging.md)** - -### ブラりザ開発者ツヌル - -ブレヌクポむント、ステップスルヌデバッグ、パフォヌマンスプロファむリングを䜿甚しお、実行䞭のコヌドを詳现に怜査したす。 - -**[ブラりザ開発者ツヌルを孊ぶ →](./browser-dev-tools.md)** - -### Inspector - -実行䞭のアプリケヌションの内郚を確認したす。゚ンティティずコンポヌネント、カメラ、アセット、GPUリ゜ヌス、各フレヌムのパス、そしおパスの描画を1぀ず぀確認できたす。 - -**[Inspectorを孊ぶ →](./inspector.md)** diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/index.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/index.md index 29a91ada48e..10a9cc4a416 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/index.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scripting/index.md @@ -68,5 +68,5 @@ Rotate.prototype.update = function(dt) { - [スクリプト属性](./script-attributes/index.md) — 蚭定可胜なプロパティの公開。 - [Engine API](./engine-api.md) — 䞻芁なクラスずパタヌン。 - [むベント](./events.md) — スクリプト間の通信。 -- [デバッグ](./debugging/index.md) — トラブルシュヌティングのためのツヌルず手法。 +- [デバッグ](/user-manual/debugging/) — トラブルシュヌティングのためのツヌルず手法。 - [移行ガむド](./migration-guide.md) — クラシックスクリプトからESMスクリプトぞのアップグレヌド。 diff --git a/llms/user-manual/engine/llms.txt b/llms/user-manual/engine/llms.txt index f42c23a1980..e1cf4888c7f 100644 --- a/llms/user-manual/engine/llms.txt +++ b/llms/user-manual/engine/llms.txt @@ -1,5 +1,5 @@ --- -covers: [engine, ecs, scripting, assets, graphics, gaussian-splatting, physics, animation, user-interface, xr, optimization, 2D] +covers: [engine, ecs, scripting, assets, graphics, gaussian-splatting, physics, animation, user-interface, xr, debugging, optimization, 2D] --- # PlayCanvas Engine @@ -52,7 +52,8 @@ Use this index to write code against the engine directly. React, Web Components - [Events](/user-manual/scripting/events/): Communicating between scripts with `on`, `once`, `off` and `fire`. - [Application Lifecycle](/user-manual/scripting/application-lifecycle/): The order in which an application initializes and runs its update loop. - [Migration Guide](/user-manual/scripting/migration-guide/): Converting classic scripts to ESM scripts step by step. -- [Debugging](/user-manual/scripting/debugging/): Finding script bugs with the browser's developer tools. +- [Debugging](/user-manual/debugging/): Finding bugs with logging, the browser's developer tools, the Inspector and debug drawing. +- [Inspector](/user-manual/debugging/inspector/): A debug panel for the running application: its entities, cameras, assets, frame graph, GPU resources and scripts, and stepping through the draws of a frame. ## Assets @@ -186,8 +187,10 @@ Use this index to write code against the engine directly. React, Web Components - [Platforms](/user-manual/xr/platforms/): Tested devices and browsers for VR, AR and each capability. - [Optimizing WebXR Applications](/user-manual/xr/optimizing-webxr/): Keeping the frame rate up despite stereo rendering, draw calls and AR tracking costs. -## Optimization +## Debugging and Optimization +- [Debugging and Optimization](/user-manual/optimization/): Which tool to use to debug and profile an application, and the goals of optimizing it. +- [Inspector Performance](/user-manual/optimization/inspector-performance/): Recording frames with the Inspector: frame, CPU, GPU and script times, loading and the start of the application, counters, and each frame on a timeline. - [General Guidelines](/user-manual/optimization/guidelines/): Tuning scripts, draw calls, batching, shaders, lighting, textures and post effects. - [Optimizing Load Time](/user-manual/optimization/load-time/): Image formats, texture sizes, preloading, asset audits, compression and staged loading. - [Texture Compression](/user-manual/optimization/texture-compression/): Reducing GPU memory and download size with Basis compressed textures. diff --git a/sidebars.js b/sidebars.js index f655aab2635..74f25400236 100644 --- a/sidebars.js +++ b/sidebars.js @@ -755,19 +755,8 @@ const sidebars = { }, 'user-manual/scripting/engine-api', 'user-manual/scripting/events', - { - type: 'category', - label: 'Debugging', - link: { - type: 'doc', - id: 'user-manual/scripting/debugging/index', - }, - items: [ - 'user-manual/scripting/debugging/console-logging', - 'user-manual/scripting/debugging/browser-dev-tools', - 'user-manual/scripting/debugging/inspector' - ], - }, + // the debugging of scripts is part of Debugging and Optimization, linked from here + { type: 'ref', id: 'user-manual/debugging/index', label: 'Debugging' }, 'user-manual/scripting/migration-guide' ], }, @@ -1217,22 +1206,48 @@ const sidebars = { }, { type: 'category', - label: 'Optimization', + label: 'Debugging and Optimization', link: { type: 'doc', id: 'user-manual/optimization/index', }, items: [ - 'user-manual/optimization/guidelines', - 'user-manual/optimization/texture-compression', - 'user-manual/optimization/mini-stats', - 'user-manual/optimization/app-stats', - 'user-manual/optimization/profiler', - 'user-manual/optimization/gpu-profiling', - 'user-manual/optimization/runtime-devicepixelratio', - 'user-manual/optimization/load-time', - 'user-manual/optimization/optimizing-scene-format', - 'user-manual/optimization/troubleshooting-performance', + { + type: 'category', + label: 'Debugging', + link: { + type: 'doc', + id: 'user-manual/debugging/index', + }, + items: [ + 'user-manual/debugging/console-logging', + 'user-manual/debugging/browser-dev-tools', + 'user-manual/debugging/inspector', + ], + }, + { + type: 'category', + label: 'Profiling', + items: [ + 'user-manual/optimization/mini-stats', + 'user-manual/optimization/app-stats', + 'user-manual/optimization/inspector-performance', + 'user-manual/optimization/profiler', + 'user-manual/optimization/gpu-profiling', + ], + }, + { + type: 'category', + label: 'Optimization', + items: [ + 'user-manual/optimization/guidelines', + 'user-manual/optimization/texture-compression', + 'user-manual/optimization/runtime-devicepixelratio', + 'user-manual/optimization/load-time', + 'user-manual/optimization/optimizing-scene-format', + 'user-manual/optimization/troubleshooting-performance', + ], + }, ], }, sectionHeader('Foundational APIs'), diff --git a/static/img/user-manual/scripting/debugging/chrome-debugger.png b/static/img/user-manual/debugging/chrome-debugger.png similarity index 100% rename from static/img/user-manual/scripting/debugging/chrome-debugger.png rename to static/img/user-manual/debugging/chrome-debugger.png diff --git a/static/img/user-manual/scripting/debugging/firefox-debugger.png b/static/img/user-manual/debugging/firefox-debugger.png similarity index 100% rename from static/img/user-manual/scripting/debugging/firefox-debugger.png rename to static/img/user-manual/debugging/firefox-debugger.png diff --git a/static/img/user-manual/scripting/debugging/inspector/debug-frame.webp b/static/img/user-manual/debugging/inspector/debug-frame.webp similarity index 100% rename from static/img/user-manual/scripting/debugging/inspector/debug-frame.webp rename to static/img/user-manual/debugging/inspector/debug-frame.webp diff --git a/static/img/user-manual/scripting/debugging/inspector/frame-graph.png b/static/img/user-manual/debugging/inspector/frame-graph.png similarity index 100% rename from static/img/user-manual/scripting/debugging/inspector/frame-graph.png rename to static/img/user-manual/debugging/inspector/frame-graph.png diff --git a/static/img/user-manual/scripting/debugging/inspector/inspector.png b/static/img/user-manual/debugging/inspector/inspector.png similarity index 100% rename from static/img/user-manual/scripting/debugging/inspector/inspector.png rename to static/img/user-manual/debugging/inspector/inspector.png diff --git a/static/img/user-manual/optimization/inspector-performance/performance-startup.webp b/static/img/user-manual/optimization/inspector-performance/performance-startup.webp new file mode 100644 index 0000000000000000000000000000000000000000..fde1d27b86b5edb6e58a34fc82c2f9e8501f6289 GIT binary patch literal 42382 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 literal 0 HcmV?d00001 diff --git a/static/img/user-manual/optimization/inspector-performance/performance-timeline.webp b/static/img/user-manual/optimization/inspector-performance/performance-timeline.webp new file mode 100644 index 0000000000000000000000000000000000000000..0e9489690b370d0e9234454b194ac3b7fc1eb518 GIT binary patch literal 10482 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 E2l=b#JOBUy literal 0 HcmV?d00001 diff --git a/static/img/user-manual/optimization/inspector-performance/performance.webp b/static/img/user-manual/optimization/inspector-performance/performance.webp new file mode 100644 index 0000000000000000000000000000000000000000..5fae9d1b916deea0ab2f6e2e522ab9509db30ddc GIT binary patch literal 135392 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 literal 0 HcmV?d00001 diff --git a/utils/plugins/llms/test/corpus.test.mjs b/utils/plugins/llms/test/corpus.test.mjs index 5c0d41f0e23..065b96bab87 100644 --- a/utils/plugins/llms/test/corpus.test.mjs +++ b/utils/plugins/llms/test/corpus.test.mjs @@ -137,7 +137,7 @@ describe('the generated files', () => { }); it('keeps the code of every tab', () => { - const fences = section('/user-manual/scripting/debugging/console-logging/').match(/^```/gm); + const fences = section('/user-manual/debugging/console-logging/').match(/^```/gm); assert.equal(fences.length, 10); });