diff options
| author | Amir Rajan <[email protected]> | 2020-08-03 18:09:21 -0500 |
|---|---|---|
| committer | Amir Rajan <[email protected]> | 2020-08-03 18:09:21 -0500 |
| commit | 161d498dc905f04b595c927309993acdcb4d394c (patch) | |
| tree | e9cc7f046ff07a93be8a5c69e5c4b2b0c6e74c61 /docs | |
| parent | e2703a351ef1dfa3f6ea72f9fd2814922729f0bb (diff) | |
| download | dragonruby-game-toolkit-contrib-161d498dc905f04b595c927309993acdcb4d394c.tar.gz dragonruby-game-toolkit-contrib-161d498dc905f04b595c927309993acdcb4d394c.zip | |
synced with 1.13
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/docs.html | 151 | ||||
| -rw-r--r-- | docs/docs.txt | 50 | ||||
| -rw-r--r-- | docs/parse_log.txt | 366 |
3 files changed, 204 insertions, 363 deletions
diff --git a/docs/docs.html b/docs/docs.html index bb15adf..1640d49 100644 --- a/docs/docs.html +++ b/docs/docs.html @@ -28,8 +28,8 @@ <li><a href='#--using--args.state--to-store-your-game-state'>Using <code>args.state</code> To Store Your Game State</a></li> <li><a href='#--frequently-asked-questions,-comments,-and-concerns'>Frequently Asked Questions, Comments, and Concerns</a></li> <li><a href='#--docs---gtk--runtime-'><code>GTK::Runtime</code></a></li> -<li><a href='#--docs---gtk--runtime#calcstringbox-'><code>GTK::Runtime#calcstringbox</code></a></li> <li><a href='#--docs---gtk--runtime#reset-'><code>GTK::Runtime#reset</code></a></li> +<li><a href='#--docs---gtk--runtime#calcstringbox-'><code>GTK::Runtime#calcstringbox</code></a></li> <li><a href='#--docs---array-'><code>Array</code></a></li> <li><a href='#--docs---array#map-'><code>Array#map</code></a></li> <li><a href='#--docs---array#each-'><code>Array#each</code></a></li> @@ -53,26 +53,22 @@ </ul> </div> <div id='content'> - </ol> -<h1 id='--dragonruby-game-toolkit-live-docs'>DragonRuby Game Toolkit Live Docs</h1> + <h1 id='--dragonruby-game-toolkit-live-docs'>DragonRuby Game Toolkit Live Docs</h1> <p> The information contained here is all available via the DragonRuby Console. You can Open the DragonRuby Console by pressing [`] [~] [²] [^] [º] or [§] within your game. </p> <p> To search docs you can type <code>docs_search "SEARCH TERM"</code> or if you want to get fancy you can provide a <code>lambda</code> to filter documentation: </p> -</ol> <pre>docs_search { |entry| (entry.include? "Array") && (!entry.include? "Enumerable") } </pre> <p> <img src='docs_search.gif'></img> </p> -</ol> <h1 id='--hello-world'>Hello World</h1> <p> Welcome to DragonRuby Game Toolkit. Take the steps below to get started. </p> -</ol> <h1 id='--join-the-discord-and-subscribe-to-the-news-letter'>Join the Discord and Subscribe to the News Letter</h1> <p> Our Discord channel is <a href='http://discord.dragonruby.org'>http://discord.dragonruby.org</a>. @@ -83,7 +79,6 @@ The News Letter will keep you in the loop with regards to current DragonRuby Eve <p> Those who use DragonRuby are called Dragon Riders. This identity is incredibly important to us. When someone asks you: </p> -</ol> <blockquote> <p> What game engine do you use? @@ -92,13 +87,11 @@ What game engine do you use? <p> Reply with: </p> -</ol> <blockquote> <p> I am a Dragon Rider. </p> </blockquote> -</ol> <h1 id='--watch-some-intro-videos'>Watch Some Intro Videos</h1> <p> Each video is only 20 minutes and all of them will fit into a lunch break. So please watch them: @@ -114,12 +107,10 @@ The second and third videos are not required if you are proficient with Ruby, bu <p> You may also want to try this free course provided at <a href='http://dragonruby.school'>http://dragonruby.school</a>. </p> -</ol> <h1 id='--getting-started-tutorial'>Getting Started Tutorial</h1> <p> This is a tutorial written by Ryan C Gordon (a Juggernaut in the industry who has contracted to Valve, Epic, Activision, and EA... check out his Wikipedia page: <a href='https://en.wikipedia.org/wiki/Ryan_C._Gordon'>https://en.wikipedia.org/wiki/Ryan_C._Gordon</a>). </p> -</ol> <h2>Introduction</h2> <p> Welcome! @@ -136,7 +127,6 @@ Did you not know that? Did you think you couldn't write a game because you're a <p> Here, we're going to be programming in a language called "Ruby." In the interest of full disclosure, I (Ryan Gordon) wrote the C parts of this toolkit and Ruby looks a little strange to me (Amir Rajan wrote the Ruby parts, discounting the parts I mangled), but I'm going to walk you through the basics because we're all learning together, and if you mostly think of yourself as someone that writes C (or C++, C#, Objective-C), PHP, or Java, then you're only a step behind me right now. </p> -</ol> <h2>Prerequisites</h2> <p> Here's the most important thing you should know: Ruby lets you do some complicated things really easily, and you can learn that stuff later. I'm going to show you one or two cool tricks, but that's all. @@ -144,7 +134,6 @@ Here's the most important thing you should know: Ruby lets you do some complicat <p> Do you know what an if statement is? A for-loop? An array? That's all you'll need to start. </p> -</ol> <h2>The Game Loop</h2> <p> Ok, here are few rules with regards to game development with GTK: @@ -160,7 +149,6 @@ That's an entire video game in one run-on sentence. <p> Here's that function. You're going to want to put this in mygame/app/main.rb, because that's where we'll look for it by default. Load it up in your favorite text editor. </p> -</ol> <pre>def tick args args.outputs.labels << [580, 400, 'Hello World!'] end @@ -168,12 +156,10 @@ end <p> Now run <code>dragonruby</code> ...did you get a window with "Hello World!" written in it? Good, you're officially a game developer! </p> -</ol> <h2>Breakdown Of The <code>tick</code> Method</h2> <p> <code>mygame/app/main.rb</code>, is where the Ruby source code is located. This looks a little strange, so I'll break it down line by line. In Ruby, a '#' character starts a single-line comment, so I'll talk about this inline. </p> -</ol> <pre># This "def"ines a function, named "tick," which takes a single argument # named "args". DragonRuby looks for this function and calls it every # frame, 60 times a second. "args" is a magic structure with lots of @@ -195,7 +181,6 @@ end <p> Once your <code>tick</code> function finishes, we look at all the arrays you made and figure out how to draw it. You don't need to know about graphics APIs. You're just setting up some arrays! DragonRuby clears out these arrays every frame, so you just need to add what you need _right now_ each time. </p> -</ol> <h2>Rendering A Sprite</h2> <p> Now let's spice this up a little. @@ -206,7 +191,6 @@ We're going to add some graphics. Each 2D image in DragonRuby is called a "sprit <p> There's a "dragonruby.png" file included, just to get you started. Let's have it draw every frame with our text: </p> -</ol> <pre>def tick args args.outputs.labels << [580, 400, 'Hello World!'] args.outputs.sprites << [576, 100, 128, 101, 'dragonruby.png'] @@ -218,7 +202,6 @@ end <p> That <code>.sprites</code> line says "add a sprite to the list of sprites we're drawing, and draw it at position (576, 100) at a size of 128x101 pixels". You can find the image to draw at dragonruby.png. </p> -</ol> <h2>Coordinate System and Virtual Canvas</h2> <p> Quick note about coordinates: (0, 0) is the bottom left corner of the screen, and positive numbers go up and to the right. This is more "geometrically correct," even if it's not how you remember doing 2D graphics, but we chose this for a simpler reason: when you're making Super Mario Brothers and you want Mario to jump, you should be able to add to Mario's y position as he goes up and subtract as he falls. It makes things easier to understand. @@ -229,7 +212,6 @@ Also: your game screen is _always_ 1280x720 pixels. If you resize the window, we <p> Ok, now we have an image on the screen, let's animate it: </p> -</ol> <pre>def tick args args.state.rotation ||= 0 args.outputs.labels << [580, 400, 'Hello World!' ] @@ -240,7 +222,6 @@ end <p> Now you can see that this function is getting called a lot! </p> -</ol> <h2>Game State</h2> <p> Here's a fun Ruby thing: <code>args.state.rotation ||= 0</code> is shorthand for "if args.state.rotation isn't initialized, set it to zero." It's a nice way to embed your initialization code right next to where you need the variable. @@ -248,7 +229,6 @@ Here's a fun Ruby thing: <code>args.state.rotation ||= 0</code> is shorthand for <p> <code>args.state</code> is a place you can hang your own data and have it survive past the life of the function call. In this case, the current rotation of our sprite, which is happily spinning at 60 frames per second. If you don't specify rotation (or alpha, or color modulation, or a source rectangle, etc), DragonRuby picks a reasonable default, and the array is ordered by the most likely things you need to tell us: position, size, name. </p> -</ol> <h2>There Is No Delta Time</h2> <p> One thing we decided to do in DragonRuby is not make you worry about delta time: your function runs at 60 frames per second (about 16 milliseconds) and that's that. Having to worry about framerate is something massive triple-AAA games do, but for fun little 2D games? You'd have to work really hard to not hit 60fps. All your drawing is happening on a GPU designed to run Fortnite quickly; it can definitely handle this. @@ -256,12 +236,10 @@ One thing we decided to do in DragonRuby is not make you worry about delta time: <p> Since we didn't make you worry about delta time, you can just move the rotation by 1 every time and it works without you having to keep track of time and math. Want it to move faster? Subtract 2. </p> -</ol> <h2>Handling User Input</h2> <p> Now, let's move that image around. </p> -</ol> <pre>def tick args args.state.rotation ||= 0 args.state.x ||= 576 @@ -286,7 +264,6 @@ end <p> Everywhere you click your mouse, the image moves there. We set a default location for it with <code>args.state.x ||= 576</code>, and then we change those variables when we see the mouse button in action. You can get at the keyboard and game controllers in similar ways. </p> -</ol> <h2>Coding On A Raspberry Pi</h2> <p> We have only tested DragonRuby on a Raspberry Pi 3, Models B and B+, but we believe it _should_ work on any model with comparable specs. @@ -297,7 +274,6 @@ If you're running DragonRuby Game Toolkit on a Raspberry Pi, or trying to run a <p> You're probably running a desktop environment: menus, apps, web browsers, etc. This is okay! Launch the terminal app and type: </p> -</ol> <pre>do raspi-config </pre> <p> @@ -309,12 +285,10 @@ If you're _still_ having problems and have a Raspberry Pi 2 or better, go back t <p> Note that you can also run DragonRuby without X11 at all: if you run it from a virtual terminal it will render fullscreen and won't need the "Full KMS" option. This might be attractive if you want to use it as a game console sort of thing, or develop over ssh, or launch it from RetroPie, etc. </p> -</ol> <h2>Conclusion</h2> <p> There is a lot more you can do with DragonRuby, but now you've already got just about everything you need to make a simple game. After all, even the most fancy games are just creating objects and moving them around. Experiment a little. Add a few more things and have them interact in small ways. Want something to go away? Just don't add it to <code>args.output</code> anymore. </p> -</ol> <h2>IMPORTANT: Go Through All Of The Sample Apps! Study Them Thoroughly!!</h2> <p> Now that you've completed the Hello World tutorial. Head over to the `samples` directory. It is very very important that you study the sample apps thoroughly! Go through them in order. Here is a short description of each sample app. @@ -364,9 +338,7 @@ Now that you've completed the Hello World tutorial. Head over to the `samples` d <li> 14_sprite_limits_static_references: Upper limit for how many sprites can be rendered to the screen using <code>static</code> output collections (which are updated by reference as opposed to by value).</li> <li> 15_collision_limits: How many collisions can be processed across many primitives.</li> <li> 18_moddable_game: How you can make a game where content is authored by the player (modding support).</li> -<li> 19_lowrez_jam_01_hello_world: How to use <code>render_targets</code> to create a low resolution game.</li> -<li> 19_lowrez_jam_02_buttons: How to use <code>render_targets</code> to create a low resolution game.</li> -<li> 19_lowrez_jam_03_space_shooter: How to use <code>render_targets</code> to create a low resolution game.</li> +<li> 19_lowrez_jam: How to use <code>render_targets</code> to create a low resolution game.</li> <li> 20_roguelike_starting_point: A starting point for a roguelike and explores concepts such as line of sight.</li> <li> 20_roguelike_starting_point_two: A starting point for a roguelike where sprites are provided from a tile map/tile sheet.</li> <li> 21_mailbox_usage: How to do interprocess communication.</li> @@ -392,7 +364,6 @@ Now that you've completed the Hello World tutorial. Head over to the `samples` d <p> Once you've built your game, you're all set to deploy! Good luck in your game dev journey and if you get stuck, come to the Discord channel! </p> -</ol> <h2>Creating Your Game Landing Page</h2> <p> Log into Itch.io and go to <a href='https://itch.io/game/new'>https://itch.io/game/new</a>. @@ -408,7 +379,6 @@ Log into Itch.io and go to <a href='https://itch.io/game/new'>https://itch.io/ga <p> You can fill out all the other options later. </p> -</ol> <h2>Update Your Game's Metadata</h2> <p> Point your text editor at mygame/metadata/game_metadata.txt and make it look like this: @@ -416,7 +386,6 @@ Point your text editor at mygame/metadata/game_metadata.txt and make it look lik <p> NOTE: Remove the <code>#</code> at the beginning of each line. </p> -</ol> <pre>vid=bob vtitle=Bob The Game Developer meid=mygame @@ -426,12 +395,10 @@ rsion=0.1 <p> The <code>devid</code> property is the username you use to log into Itch.io. The <code>devtitle</code> is your name or company name (it can contain spaces). The <code>gameid</code> is the Project URL value. The <code>gametitle</code> is the name of your game (it can contain spaces). The <code>version</code> can be any <code>major.minor</code> number format. </p> -</ol> <h2>Building Your Game For Distribution</h2> <p> Open up the terminal and run this from the command line: </p> -</ol> <pre>dragonruby-publish --only-package mygame </pre> <p> @@ -446,7 +413,6 @@ For the HTML version of your game after you upload it. Check the checkbox labele <p> For subsequent updates you can use an automated deployment to Itch.io: </p> -</ol> <pre>dragonruby-publish mygame </pre> <p> @@ -455,17 +421,14 @@ DragonRuby will package _and publish_ your game to itch.io! Tell your friends to <p> If you make changes to your game, just re-run dragonruby-publish and it'll update the downloads for you. </p> -</ol> <h2>DragonRuby's Philosophy</h2> <p> The following tenants of DragonRuby are what set us apart from other game engines. Given that Game Toolkit is a relatively new engine, there are definitely features that are missing. So having a big check list of "all the cool things" is not this engine's forte. This is compensated with a strong commitment to the following principals. </p> -</ol> <h3>Challenge The Status Quo</h3> <p> Game engines of today are in a local maximum and don't take into consideration the challenges of this day and age. Unity and GameMaker specifically rot your brain. It's not sufficient to say: </p> -</ol> <blockquote> <p> But that's how we've always done it. @@ -474,7 +437,6 @@ But that's how we've always done it. <p> It's a hard pill to swallow, but forget blindly accepted best practices and try to figure out the underlying motivation for a specific approach to game development. Collaborate with us. </p> -</ol> <h3>Release Often And Quickly</h3> <p> The biggest mistake game devs make is spending too much time in isolation building their game. Release something, however small, and release it quickly. @@ -485,13 +447,11 @@ Stop worrying about everything being pixel perfect. Don't wait until your game i <p> Remember: </p> -</ol> <blockquote> <p> Real artists ship. </p> </blockquote> -</ol> <h3>Sustainable And Ethical Monetization</h3> <p> We all aspire to put food on the table doing what we love. Whether it is building games, writing tools to support game development, or anything in between. @@ -499,7 +459,6 @@ We all aspire to put food on the table doing what we love. Whether it is buildin <p> Charge a fair amount of money for the things you create. It's expected and encouraged within the community. Give what you create away for free to those that can't afford it. </p> -</ol> <h3>Sustainable And Ethical Open Source</h3> <p> This goes hand in hand with sustainable and ethical monetization. The current state of open source is not sustainable. There is an immense amount of contributor burnout. Users of open source expect everything to be free, and few give back. This is a problem we want to fix (we're still trying to figure out the best solution). @@ -507,17 +466,14 @@ This goes hand in hand with sustainable and ethical monetization. The current st <p> So, don't be "that guy" in the Discord that says "DragonRuby should be free and open source!" You will be personally flogged by Amir. </p> -</ol> <h3>People Over Entities</h3> <p> We prioritize the endorsement of real people over faceless entities. This game engine, and other products we create, are not insignificant line items of a large company. And you aren't a generic "commodity" or "corporate resource". So be active in the community Discord and you'll reap the benefits as more devs use DragonRuby. </p> -</ol> <h3>Building A Game Should Be Fun And Bring Happiness</h3> <p> We will prioritize the removal of pain. The aesthetics of Ruby make it such a joy to work with, and we want to capture that within the engine. </p> -</ol> <h3>Real World Application Drives Features</h3> <p> We are bombarded by marketing speak day in and day out. We don't do that here. There are things that are really great in the engine, and things that need a lot of work. Collaborate with us so we can help you reach your goals. Ask for features you actually need as opposed to anything speculative. @@ -525,27 +481,22 @@ We are bombarded by marketing speak day in and day out. We don't do that here. T <p> We want DragonRuby to *actually* help you build the game you want to build (as opposed to sell you something piece of demoware that doesn't work). </p> -</ol> <h1 id='--how-to-determine-what-frame-you-are-on'>How To Determine What Frame You Are On</h1> <p> There is a property on <code>state</code> called <code>tick_count</code> that is incremented by DragonRuby every time the <code>tick</code> method is called. The following code renders a label that displays the current <code>tick_count</code>. </p> -</ol> <pre>def tick args args.outputs.labels << [10, 670, "#{args.state.tick_count}"] end </pre> -</ol> <h1 id='--how-to-get-current-framerate'>How To Get Current Framerate</h1> <p> Current framerate is a top level property on the Game Toolkit Runtime and is accessible via <code>args.gtk.current_framerate</code>. </p> -</ol> <pre>def tick args args.outputs.labels << [10, 710, "framerate: #{args.gtk.current_framerate.round}"] end </pre> -</ol> <h1 id='--how-to-render-a-sprite-using-an-array'>How To Render A Sprite Using An Array</h1> <p> All file paths should use the forward slash <code>/</code> *not* backslash <code></code>. Game Toolkit includes a number of sprites in the <code>sprites</code> folder (everything about your game is located in the <code>mygame</code> directory). @@ -556,7 +507,6 @@ The following code renders a sprite with a <code>width</code> and <code>height</ <p> <code>args.outputs.sprites</code> is used to render a sprite. </p> -</ol> <pre>def tick args args.outputs.sprites << [ 640 - 50, # X @@ -567,12 +517,10 @@ The following code renders a sprite with a <code>width</code> and <code>height</ ] end </pre> -</ol> <h1 id='--more-sprite-properties-as-an-array'>More Sprite Properties As An Array</h1> <p> Here are all the properties you can set on a sprite. </p> -</ol> <pre>def tick args args.outputs.sprites << [ 100, # X @@ -588,7 +536,6 @@ Here are all the properties you can set on a sprite. ] end </pre> -</ol> <h1 id='--different-sprite-representations'>Different Sprite Representations</h1> <p> Using ordinal positioning can get a little unruly given so many properties you have control over. @@ -596,7 +543,6 @@ Using ordinal positioning can get a little unruly given so many properties you h <p> You can represent a sprite as a <code>Hash</code>: </p> -</ol> <pre>def tick args args.outputs.sprites << { x: 640 - 50, @@ -623,7 +569,6 @@ end <p> You can represent a sprite as an <code>object</code>: </p> -</ol> <pre># Create type with ALL sprite properties AND primitive_marker class Sprite attr_accessor :x, :y, :w, :h, :path, :angle, :a, :r, :g, :b, @@ -654,7 +599,6 @@ def tick args h: 50) end </pre> -</ol> <h1 id='--how-to-render-a-label'>How To Render A Label</h1> <p> <code>args.outputs.labels</code> is used to render labels. @@ -665,24 +609,19 @@ Labels are how you display text. This code will go directly inside of the <code> <p> Here is the minimum code: </p> -</ol> <pre>def tick args # X Y TEXT args.outputs.labels << [640, 360, "I am a black label."] end </pre> -</ol> <h1 id='--a-colored-label'>A Colored Label</h1> -</ol> <pre>def tick args # A colored label # X Y TEXT, RED GREEN BLUE ALPHA args.outputs.labels << [640, 360, "I am a redish label.", 255, 128, 128, 255] end </pre> -</ol> <h1 id='--extended-label-properties'>Extended Label Properties</h1> -</ol> <pre>def tick args # A colored label # X Y TEXT SIZE ALIGNMENT RED GREEN BLUE ALPHA FONT FILE @@ -706,12 +645,10 @@ A <code>SIZE_ENUM</code> of <code>0</code> represents "default size". A <code>ne <p> An <code>ALIGNMENT_ENUM</code> of <code>0</code> represents "left aligned". <code>1</code> represents "center aligned". <code>2</code> represents "right aligned". </p> -</ol> <h1 id='--rendering-a-label-as-a--hash-'>Rendering A Label As A <code>Hash</code></h1> <p> You can add additional metadata about your game within a label, which requires you to use a `Hash` instead. </p> -</ol> <pre>def tick args args.outputs.labels << { x: 200, @@ -734,12 +671,10 @@ You can add additional metadata about your game within a label, which requires y } end </pre> -</ol> <h1 id='--getting-the-size-of-a-piece-of-text'>Getting The Size Of A Piece Of Text</h1> <p> You can get the render size of any string using <code>args.gtk.calcstringbox</code>. </p> -</ol> <pre>def tick args # TEXT SIZE_ENUM FONT w, h = args.gtk.calcstringbox("some string", 0, "font.ttf") @@ -755,12 +690,10 @@ You can get the render size of any string using <code>args.gtk.calcstringbox</co ] end </pre> -</ol> <h1 id='--how-to-play-a-sound'>How To Play A Sound</h1> <p> Sounds that end <code>.wav</code> will play once: </p> -</ol> <pre>def tick args # Play a sound every second if (args.state.tick_count % 60) == 0 @@ -771,7 +704,6 @@ end <p> Sounds that end <code>.ogg</code> is considered background music and will loop: </p> -</ol> <pre>def tick args # Start a sound loop at the beginning of the game if args.state.tick_count == 0 @@ -782,7 +714,6 @@ end <p> If you want to play a <code>.ogg</code> once as if it were a sound effect, you can do: </p> -</ol> <pre>def tick args # Play a sound every second if (args.state.tick_count % 60) == 0 @@ -790,7 +721,6 @@ If you want to play a <code>.ogg</code> once as if it were a sound effect, you c end end </pre> -</ol> <h1 id='--using--args.state--to-store-your-game-state'>Using <code>args.state</code> To Store Your Game State</h1> <p> <code>args.state</code> is a open data structure that allows you to define properties that are arbitrarily nested. You don't need to define any kind of <code>class</code>. @@ -801,7 +731,6 @@ To initialize your game state, use the <code>||=</code> operator. Any value on t <p> To assign a value every frame, just use the <code>=</code> operator, but _make sure_ you've initialized a default value. </p> -</ol> <pre>def tick args # initialize your game state ONCE args.player.x ||= 0 @@ -826,14 +755,11 @@ To assign a value every frame, just use the <code>=</code> operator, but _make s ] end </pre> -</ol> <h1 id='--frequently-asked-questions,-comments,-and-concerns'>Frequently Asked Questions, Comments, and Concerns</h1> <p> Here are questions, comments, and concerns that frequently come up. </p> -</ol> <h2>Frequently Asked Questions</h2> -</ol> <h3>What is DragonRuby LLP?</h3> <p> DragonRuby LLP is a partnership of four devs who came together with the goal of bringing the aesthetics and joy of Ruby, everywhere possible. @@ -861,12 +787,10 @@ NOTE: We leave the "A DragonRuby LLP Product" off of this one because that just <p> NOTE: Devs who use DragonRuby are "Dragon Riders/Riders of Dragons". That's a bad ass identifier huh? </p> -</ol> <h3>What is DragonRuby?</h3> <p> The response to this question requires a few subparts. First we need to clarify some terms. Specifically _language specification_ vs _runtime_. </p> -</ol> <h3>Okay... so what is the difference between a language specification and a runtime?</h3> <p> A runtime is an _implementation_ of a langauge specification. When people say "Ruby," they are usually referring to "the Ruby 3.0+ language specification implemented via the CRuby/MRI Runtime." @@ -874,12 +798,10 @@ A runtime is an _implementation_ of a langauge specification. When people say "R <p> But, there are many Ruby Runtimes: CRuby/MRI, JRuby, Truffle, Rubinius, Artichoke, and (last but certainly not least) DragonRuby. </p> -</ol> <h3>Okay... what language specification does DragonRuby use then?</h3> <p> DragonRuby's goal is to be compliant with the ISO/IEC 30170:2012 standard. It's syntax is Ruby 2.x compatible, but also contains semantic changes that help it natively interface with platform specific libraries. </p> -</ol> <h3>So... why another runtime?</h3> <p> The elevator pitch is: @@ -887,7 +809,6 @@ The elevator pitch is: <p> DragonRuby is a Multilevel Cross-platform Runtime. The "multiple levels" within the runtime allows us to target platforms no other Ruby can target: PC, Mac, Linux, Raspberry Pi, WASM, iOS, Android, Nintendo Switch, PS4, Xbox, and Scadia. </p> -</ol> <h3>What does Multilevel Cross-platform mean?</h3> <p> There are complexities associated with targeting all the platforms we support. Because of this, the runtime had to be architected in such a way that new platforms could be easily added (which lead to us partitioning the runtime internally): @@ -913,14 +834,11 @@ Levels 1 through 3 are fairly commonplace in many runtime implemenations (with l <p> These levels allow us to stay up to date with open source implementations of Ruby; provide fast, native code execution on proprietary platforms; ensure good seperation between these two worlds; and provides a means to add new platforms without going insane. </p> -</ol> <h3>Cool cool. So given that I understand everything to this point, can we answer the original question? What is DragonRuby?</h3> <p> DragonRuby is a Ruby runtime implentation that takes all the lessons we've learned from MRI/CRuby, and merges it with the latest and greatest compiler and OSS technologies. </p> -</ol> <h2>Frequent Comments</h2> -</ol> <h3>But Ruby is dead.</h3> <p> Let's check the official source for the answer to this question: isrubydead.com: <a href='https://isrubydead.com/'>https://isrubydead.com/</a>. @@ -934,12 +852,10 @@ What really matters is _quality/maturity_. Here is the latest (StackOverflow Sur <p> Let's stop making this comment shall we? </p> -</ol> <h3>But Ruby is slow.</h3> <p> That doesn't make any sense. A language specification can't be slow... it's a language spec. Sure, an _implementation/runtime_ can be slow though, but then we'd have to talk about which runtime. </p> -</ol> <h3>Dynamic langauges are slow.</h3> <p> They are certainly slower than statically compiled languages. With the processing power and compiler optimizations we have today, dynamic languages like Ruby are _fast enough_. @@ -950,9 +866,7 @@ Unless you are writing in some form of intermediate representation by hand, your <p> NOTE: If you _are_ hand writing LLVM IR, we are always open to bringing on new partners with such a skillset. Email us ^_^. </p> -</ol> <h2>Frequent Concerns</h2> -</ol> <h3>DragonRuby is not open source. That's not right.</h3> <p> The current state of open source is unsustainable. Contributors work for free, most all open source repositories are serverly understaffed, and burnout from core members is rampant. @@ -966,7 +880,6 @@ If you have ideas on how we can do this, email us! <p> If the reason above isn't sufficient, then definitely use something else. </p> -</ol> <h3>DragonRuby is for pay. You should offer a free version.</h3> <p> If you can afford to pay for DragonRuby, you should (and will). We don't go around telling writers that they should give us their books for free, and only require payment if we read the entire thing. It's time we stop asking that of software products. @@ -989,7 +902,6 @@ You qualify for a free, unrestricted license to DragonRuby products if any of th <p> Just contact Amir at [email protected] with a short explanation of your current situation and he'll set you up. No questions asked. </p> -</ol> <h3>But still, you should offer a free version. So I can try it out and see if I like it.</h3> <p> You can try our [web-based sandbox environment](). But it won't do the runtime justice. Or just come to our [Slack]() or [Discord]() channel and ask questions. We'd be happy to have a one on one video chat with you and show off all the cool stuff we're doing. @@ -997,7 +909,6 @@ You can try our [web-based sandbox environment](). But it won't do the runtime j <p> Seriously just buy it. Get a refund if you don't like it. We make it stupid easy to do so. </p> -</ol> <h3>I still think you should do a free version. Think of all people who would give it a shot.</h3> <p> Free isn't a sustainable financial model. We don't want to spam your email. We don't want to collect usage data off of you either. We just want to provide quality toolchains to quality developers (as opposed to a large quantity of developers). @@ -1005,7 +916,6 @@ Free isn't a sustainable financial model. We don't want to spam your email. We d <p> The peiple that pay for DragonRuby and make an effort to understand it are the ones we want to build a community around, partner with, and collaborate with. So having that small monetary wall deters entitled individuals that don't value the same things we do. </p> -</ol> <h3>What if I build something with DragonRuby, but DragonRuby LLP becomes insolvent.</h3> <p> That won't happen if the development world stop asking for free stuff and non-trivially compensate open source developers. Look, we want to be able to work on the stuff we love, every day of our lives. And we'll go to great lengths to make that happen. @@ -1013,33 +923,27 @@ That won't happen if the development world stop asking for free stuff and non-tr <p> But, in the event that sad day comes, our partnershiop bylaws state that _all_ DragonRuby IP that can be legally open sourced, will be released under a permissive license. </p> -</ol> <h1 id='--docs---gtk--runtime-'><code>GTK::Runtime</code></h1> <p> The GTK::Runtime class is the core of DragonRuby. It is globally accessible via <code>$gtk</code>. </p> -</ol> +<h1 id='--docs---gtk--runtime#reset-'><code>GTK::Runtime#reset</code></h1> +<p> +This function will reset Kernel.tick_count to 0 and will remove all data from args.state. +</p> <h1 id='--docs---gtk--runtime#calcstringbox-'><code>GTK::Runtime#calcstringbox</code></h1> <p> This function returns the width and height of a string. </p> -</ol> <pre>def tick args args.state.string_size ||= args.gtk.calcstringbox "Hello World" args.state.string_size_font_size ||= args.gtk.calcstringbox "Hello World" end </pre> -</ol> -<h1 id='--docs---gtk--runtime#reset-'><code>GTK::Runtime#reset</code></h1> -<p> -This function will reset Kernel.tick_count to 0 and will remove all data from args.state. -</p> -</ol> <h1 id='--docs---array-'><code>Array</code></h1> <p> The Array class has been extend to provide methods that will help in common game development tasks. Array is one of the most powerful classes in Ruby and a very fundamental component of Game Toolkit. </p> -</ol> <h1 id='--docs---array#map-'><code>Array#map</code></h1> <p> The function given a block returns a new <code>Enumerable</code> of values. @@ -1047,7 +951,6 @@ The function given a block returns a new <code>Enumerable</code> of values. <p> Example of using <code>Array#map</code> in conjunction with <code>args.state</code> and <code>args.outputs.sprites</code> to render sprites to the screen. </p> -</ol> <pre>def tick args # define the colors of the rainbow in ~args.state~ # as an ~Array~ of ~Hash~es with :order and :name. @@ -1079,7 +982,6 @@ Example of using <code>Array#map</code> in conjunction with <code>args.state</co end end </pre> -</ol> <h1 id='--docs---array#each-'><code>Array#each</code></h1> <p> The function, given a block, invokes the block for each item in the <code>Array</code>. <code>Array#each</code> is synonymous to foreach constructs in other languages. @@ -1087,7 +989,6 @@ The function, given a block, invokes the block for each item in the <code>Array< <p> Example of using <code>Array#each</code> in conjunction with <code>args.state</code> and <code>args.outputs.sprites</code> to render sprites to the screen: </p> -</ol> <pre>def tick args # define the colors of the rainbow in ~args.state~ # as an ~Array~ of ~Hash~es with :order and :name. @@ -1118,12 +1019,10 @@ Example of using <code>Array#each</code> in conjunction with <code>args.state</c end end </pre> -</ol> <h1 id='--docs---array#reject_nil-'><code>Array#reject_nil</code></h1> <p> Returns an <code>Enumerable</code> rejecting items that are <code>nil</code>, this is an alias for <code>Array#compact</code>: </p> -</ol> <pre>repl do a = [1, nil, 4, false, :a] puts a.reject_nil @@ -1132,19 +1031,16 @@ Returns an <code>Enumerable</code> rejecting items that are <code>nil</code>, th # => [1, 4, false, :a] end </pre> -</ol> <h1 id='--docs---array#reject_false-'><code>Array#reject_false</code></h1> <p> Returns an `Enumerable` rejecting items that are `nil` or `false`. </p> -</ol> <pre>repl do a = [1, nil, 4, false, :a] puts a.reject_false # => [1, 4, :a] end </pre> -</ol> <h1 id='--docs---array#product-'><code>Array#product</code></h1> <p> Returns all combinations of values between two arrays. @@ -1152,14 +1048,12 @@ Returns all combinations of values between two arrays. <p> Here are some examples of using <code>product</code>. Paste the following code at the bottom of main.rb and save the file to see the results: </p> -</ol> <pre>repl do a = [0, 1] puts a.product # => [[0, 0], [0, 1], [1, 0], [1, 1]] end </pre> -</ol> <pre>repl do a = [ 0, 1] b = [:a, :b] @@ -1167,12 +1061,10 @@ end # => [[0, :a], [0, :b], [1, :a], [1, :b]] end </pre> -</ol> <h1 id='--docs---array#map_2d-'><code>Array#map_2d</code></h1> <p> Assuming the array is an array of arrays, Given a block, each 2D array index invoked against the block. A 2D array is a common way to store data/layout for a stage. </p> -</ol> <pre>repl do stage = [ [:enemy, :empty, :player], @@ -1195,12 +1087,10 @@ Assuming the array is an array of arrays, Given a block, each 2D array index inv puts occupied_tiles end </pre> -</ol> <h1 id='--docs---array#include_any?-'><code>Array#include_any?</code></h1> <p> Given a collection of items, the function will return <code>true</code> if any of <code>self</code>'s items exists in the collection of items passed in: </p> -</ol> <h1 id='--docs---array#any_intersect_rect?-'><code>Array#any_intersect_rect?</code></h1> <p> Assuming the array contains objects that respond to <code>left</code>, <code>right</code>, <code>top</code>, <code>bottom</code>, this method returns <code>true</code> if any of the elements within the array intersect the object being passed in. You are given an optional parameter called <code>tolerance</code> which informs how close to the other rectangles the elements need to be for it to be considered intersecting. @@ -1208,7 +1098,6 @@ Assuming the array contains objects that respond to <code>left</code>, <code>rig <p> The default tolerance is set to <code>0.1</code>, which means that the primitives are not considered intersecting unless they are overlapping by more than <code>0.1</code>. </p> -</ol> <pre>repl do # Here is a player class that has position and implement # the ~attr_rect~ contract. @@ -1264,17 +1153,14 @@ The default tolerance is set to <code>0.1</code>, which means that the primitive puts "" end </pre> -</ol> <h1 id='--docs---gtk--outputs-'><code>GTK::Outputs</code></h1> <p> Outputs is how you render primitives to the screen. The minimal setup for rendering something to the screen is via a <code>tick</code> method defined in mygame/app/main.rb </p> -</ol> <pre>def tick args # code goes here end </pre> -</ol> <h1 id='--docs---gtk--outputs#borders-'><code>GTK::Outputs#borders</code></h1> <p> Add primitives to this collection to render an unfilled solid to the screen. Take a look at the documentation for Outputs#solids. @@ -1285,7 +1171,6 @@ The only difference between the two primitives is where they are added. <p> Instead of using <code>args.outputs.solids</code>: </p> -</ol> <pre>def tick args # X Y WIDTH HEIGHT args.outputs.solids << [100, 100, 160, 90] @@ -1294,29 +1179,24 @@ end <p> You have to use <code>args.outputs.borders</code>: </p> -</ol> <pre>def tick args # X Y WIDTH HEIGHT args.outputs.borders << [100, 100, 160, 90] end </pre> -</ol> <h1 id='--docs---gtk--outputs#solids-'><code>GTK::Outputs#solids</code></h1> <p> Add primitives to this collection to render a solid to the screen. </p> -</ol> <h2>Rendering a solid using an Array</h2> <p> Creates a solid black rectangle located at 100, 100. 160 pixels wide and 90 pixels tall. </p> -</ol> <pre>def tick args # X Y WIDTH HEIGHT args.outputs.solids << [100, 100, 160, 90] end </pre> -</ol> <h2>Rendering a solid using an Array with colors and alpha</h2> <p> The value for the color and alpha is an number between <code>0</code> and <code>255</code>. The alpha property is optional and will be set to <code>255</code> if not specified. @@ -1324,18 +1204,15 @@ The value for the color and alpha is an number between <code>0</code> and <code> <p> Creates a green solid rectangle with an opacity of 50%. </p> -</ol> <pre>def tick args # X Y WIDTH HEIGHT RED GREEN BLUE ALPHA args.outputs.solids << [100, 100, 160, 90, 0, 255, 0, 128] end </pre> -</ol> <h2>Rendering a solid using a Hash</h2> <p> If you want a more readable invocation. You can use the following hash to create a solid. Any parameters that are not specified will be given a default value. The keys of the hash can be provided in any order. </p> -</ol> <pre>def tick args args.outputs.solids << { x: 0, @@ -1349,7 +1226,6 @@ If you want a more readable invocation. You can use the following hash to create } end </pre> -</ol> <h2>Rendering a solid using a Class</h2> <p> You can also create a class with solid/border properties and render it as a primitive. ALL properties must on the class. *Additionally*, a method called <code>primitive_marker</code> must be defined on the class. @@ -1357,7 +1233,6 @@ You can also create a class with solid/border properties and render it as a prim <p> Here is an example: </p> -</ol> <pre># Create type with ALL solid properties AND primitive_marker class Solid attr_accessor :x, :y, :w, :h, :r, :g, :b, :a @@ -1383,12 +1258,10 @@ def tick args args.outputs.solids << Square.new(10, 10, 32) end </pre> -</ol> <h1 id='--docs---gtk--mouse-'><code>GTK::Mouse</code></h1> <p> The mouse is accessible via <code>args.inputs.mouse</code>: </p> -</ol> <pre>def tick args # Rendering a label that shows the mouse's x and y position (via args.inputs.mouse). args.outputs.labels << [ @@ -1439,7 +1312,6 @@ The <code>GTK::MousePoint</code> has the following properties. <p> <code>GTK::OpenEntity</code> is accessible within the DragonRuby's top level <code>tick</code> function via the <code>args.state</code> property. </p> -</ol> <pre>def tick args args.state.x ||= 100 args.outputs.labels << [10, 710, "value of x is: #{args.state.x}."] @@ -1451,7 +1323,6 @@ The primary benefit of using <code>args.state</code> as opposed to instance vari <p> For example: </p> -</ol> <pre>def tick args # intermediate player object does not need to be created args.state.player.x ||= 100 @@ -1463,7 +1334,6 @@ For example: ] end </pre> -</ol> <h1 id='--docs---gtk--openentity#as_hash-'><code>GTK::OpenEntity#as_hash</code></h1> <p> Returns a reference to the <code>GTK::OpenEntity</code> as a <code>Hash</code>. This property is useful when you want to treat <code>args.state</code> as a <code>Hash</code> and invoke methods such as <code>Hash#each</code>. @@ -1471,7 +1341,6 @@ Returns a reference to the <code>GTK::OpenEntity</code> as a <code>Hash</code>. <p> Example: </p> -</ol> <pre>def tick args args.state.x ||= 100 args.state.y ||= 100 @@ -1488,7 +1357,6 @@ Example: end end </pre> -</ol> <h1 id='--docs---numeric#frame_index-'><code>Numeric#frame_index</code></h1> <p> This function is helpful for determining the index of frame-by-frame sprite animation. The numeric value <code>self</code> represents the moment the animation started. @@ -1507,7 +1375,6 @@ This function is helpful for determining the index of frame-by-frame sprite an <p> Example using variables: </p> -</ol> <pre>def tick args start_looping_at = 0 number_of_sprites = 6 @@ -1533,7 +1400,6 @@ end <p> Example using named parameters: </p> -</ol> <pre>def tick args start_looping_at = 0 @@ -1554,17 +1420,14 @@ Example using named parameters: ] end </pre> -</ol> <h1 id='--docs---kernel-'><code>Kernel</code></h1> <p> Kernel in the DragonRuby Runtime has patches for how standard out is handled and also contains a unit of time in games called a tick. </p> -</ol> <h1 id='--docs---kernel--tick_count-'><code>Kernel::tick_count</code></h1> <p> Returns the current tick of the game. This value is reset if you call $gtk.reset. </p> -</ol> <h1 id='--docs---kernel--global_tick_count-'><code>Kernel::global_tick_count</code></h1> <p> Returns the current tick of the application from the point it was started. This value is never reset. diff --git a/docs/docs.txt b/docs/docs.txt index 8627f1b..0fe3d6d 100644 --- a/docs/docs.txt +++ b/docs/docs.txt @@ -358,29 +358,27 @@ description of each sample app. 42. 14_sprite_limits_static_references: Upper limit for how many sprites can be rendered to the screen using ~static~ output collections (which are updated by reference as opposed to by value). 43. 15_collision_limits: How many collisions can be processed across many primitives. 44. 18_moddable_game: How you can make a game where content is authored by the player (modding support). -45. 19_lowrez_jam_01_hello_world: How to use ~render_targets~ to create a low resolution game. -46. 19_lowrez_jam_02_buttons: How to use ~render_targets~ to create a low resolution game. -47. 19_lowrez_jam_03_space_shooter: How to use ~render_targets~ to create a low resolution game. -48. 20_roguelike_starting_point: A starting point for a roguelike and explores concepts such as line of sight. -49. 20_roguelike_starting_point_two: A starting point for a roguelike where sprites are provided from a tile map/tile sheet. -50. 21_mailbox_usage: How to do interprocess communication. -51. 22_trace_debugging: Debugging techniques and tracing execution through your game. -52. 22_trace_debugging_classes: Debugging techniques and tracing execution through your game. -53. 23_hexagonal_grid: How to make a tactical grid/map made of hexagons. -54. 23_isometric_grid: How to make a tactical grid/map made of isometric sprites. -55. 24_http_example: How to make http requests. -56. 25_3d_experiment_01_square: How to create 3D objects. -57. 26_jam_craft: Starting point for crafting game. It also shows how to customize the mouse cursor. -58. 99_sample_game_basic_gorillas: Reference implementation of a full game. Topics covered: physics, keyboard input, collision, sprite animation. -59. 99_sample_game_clepto_frog: Reference implementation of a full game. Topics covered: camera control, spring/rope physics, scene orchestration. -60. 99_sample_game_dueling_starships: Reference implementation that shows local multiplayer. Topics covered: vectors, particles, friction, inertia. -61. 99_sample_game_flappy_dragon: Reference implementation that is a clone of Flappy Bird. Topics covered: scene orchestration, collision, sound, sprite animations, lerping. -62. 99_sample_game_pong: Reference implementation of pong. -63. 99_sample_game_return_of_serenity: Reference implementation of low resolution story based game. -64. 99_sample_game_the_little_probe: Reference implementation of a full game. Topics covered: Arbitrary collision detection, loading map data, bounce/ball physics. -65. 99_sample_nddnug_workshop: Reference implementation of a full game. Topics covered: vectors, controller input, sound, trig functions. -66. 99_sample_snakemoji: Shows that Ruby supports coding with emojis. -67. 99_zz_gtk_unit_tests: A collection of unit tests that exercise parts of DragonRuby's API. +45. 19_lowrez_jam: How to use ~render_targets~ to create a low resolution game. +46. 20_roguelike_starting_point: A starting point for a roguelike and explores concepts such as line of sight. +47. 20_roguelike_starting_point_two: A starting point for a roguelike where sprites are provided from a tile map/tile sheet. +48. 21_mailbox_usage: How to do interprocess communication. +49. 22_trace_debugging: Debugging techniques and tracing execution through your game. +50. 22_trace_debugging_classes: Debugging techniques and tracing execution through your game. +51. 23_hexagonal_grid: How to make a tactical grid/map made of hexagons. +52. 23_isometric_grid: How to make a tactical grid/map made of isometric sprites. +53. 24_http_example: How to make http requests. +54. 25_3d_experiment_01_square: How to create 3D objects. +55. 26_jam_craft: Starting point for crafting game. It also shows how to customize the mouse cursor. +56. 99_sample_game_basic_gorillas: Reference implementation of a full game. Topics covered: physics, keyboard input, collision, sprite animation. +57. 99_sample_game_clepto_frog: Reference implementation of a full game. Topics covered: camera control, spring/rope physics, scene orchestration. +58. 99_sample_game_dueling_starships: Reference implementation that shows local multiplayer. Topics covered: vectors, particles, friction, inertia. +59. 99_sample_game_flappy_dragon: Reference implementation that is a clone of Flappy Bird. Topics covered: scene orchestration, collision, sound, sprite animations, lerping. +60. 99_sample_game_pong: Reference implementation of pong. +61. 99_sample_game_return_of_serenity: Reference implementation of low resolution story based game. +62. 99_sample_game_the_little_probe: Reference implementation of a full game. Topics covered: Arbitrary collision detection, loading map data, bounce/ball physics. +63. 99_sample_nddnug_workshop: Reference implementation of a full game. Topics covered: vectors, controller input, sound, trig functions. +64. 99_sample_snakemoji: Shows that Ruby supports coding with emojis. +65. 99_zz_gtk_unit_tests: A collection of unit tests that exercise parts of DragonRuby's API. @@ -1068,6 +1066,9 @@ under a permissive license. * DOCS: ~GTK::Runtime~ The GTK::Runtime class is the core of DragonRuby. It is globally accessible via ~$gtk~. +* DOCS: ~GTK::Runtime#reset~ +This function will reset Kernel.tick_count to 0 and will remove all data from args.state. + * DOCS: ~GTK::Runtime#calcstringbox~ This function returns the width and height of a string. @@ -1078,9 +1079,6 @@ This function returns the width and height of a string. end #+end_src -* DOCS: ~GTK::Runtime#reset~ -This function will reset Kernel.tick_count to 0 and will remove all data from args.state. - * DOCS: ~Array~ The Array class has been extend to provide methods that diff --git a/docs/parse_log.txt b/docs/parse_log.txt index 5c1d663..68a48a2 100644 --- a/docs/parse_log.txt +++ b/docs/parse_log.txt @@ -1054,102 +1054,94 @@ Now that you've completed the Hello World tutorial. Head over to the `samples` d - Line was identified as a continuation of a list. *** True Line Result 43. 15_collision_limits: How many collisions can be processed across many primitives. -** Processing line: ~45. 19_lowrez_jam_01_hello_world: How to use ~render_targets~ to create a low resolution game.~ +** Processing line: ~45. 19_lowrez_jam: How to use ~render_targets~ to create a low resolution game.~ - Line was identified as a continuation of a list. *** True Line Result 44. 18_moddable_game: How you can make a game where content is authored by the player (modding support). -** Processing line: ~46. 19_lowrez_jam_02_buttons: How to use ~render_targets~ to create a low resolution game.~ +** Processing line: ~46. 20_roguelike_starting_point: A starting point for a roguelike and explores concepts such as line of sight.~ - Line was identified as a continuation of a list. *** True Line Result -45. 19_lowrez_jam_01_hello_world: How to use ~render_targets~ to create a low resolution game. -** Processing line: ~47. 19_lowrez_jam_03_space_shooter: How to use ~render_targets~ to create a low resolution game.~ +45. 19_lowrez_jam: How to use ~render_targets~ to create a low resolution game. +** Processing line: ~47. 20_roguelike_starting_point_two: A starting point for a roguelike where sprites are provided from a tile map/tile sheet.~ - Line was identified as a continuation of a list. *** True Line Result -46. 19_lowrez_jam_02_buttons: How to use ~render_targets~ to create a low resolution game. -** Processing line: ~48. 20_roguelike_starting_point: A starting point for a roguelike and explores concepts such as line of sight.~ +46. 20_roguelike_starting_point: A starting point for a roguelike and explores concepts such as line of sight. +** Processing line: ~48. 21_mailbox_usage: How to do interprocess communication.~ - Line was identified as a continuation of a list. *** True Line Result -47. 19_lowrez_jam_03_space_shooter: How to use ~render_targets~ to create a low resolution game. -** Processing line: ~49. 20_roguelike_starting_point_two: A starting point for a roguelike where sprites are provided from a tile map/tile sheet.~ +47. 20_roguelike_starting_point_two: A starting point for a roguelike where sprites are provided from a tile map/tile sheet. +** Processing line: ~49. 22_trace_debugging: Debugging techniques and tracing execution through your game.~ - Line was identified as a continuation of a list. *** True Line Result -48. 20_roguelike_starting_point: A starting point for a roguelike and explores concepts such as line of sight. -** Processing line: ~50. 21_mailbox_usage: How to do interprocess communication.~ +48. 21_mailbox_usage: How to do interprocess communication. +** Processing line: ~50. 22_trace_debugging_classes: Debugging techniques and tracing execution through your game.~ - Line was identified as a continuation of a list. *** True Line Result -49. 20_roguelike_starting_point_two: A starting point for a roguelike where sprites are provided from a tile map/tile sheet. -** Processing line: ~51. 22_trace_debugging: Debugging techniques and tracing execution through your game.~ +49. 22_trace_debugging: Debugging techniques and tracing execution through your game. +** Processing line: ~51. 23_hexagonal_grid: How to make a tactical grid/map made of hexagons.~ - Line was identified as a continuation of a list. *** True Line Result -50. 21_mailbox_usage: How to do interprocess communication. -** Processing line: ~52. 22_trace_debugging_classes: Debugging techniques and tracing execution through your game.~ +50. 22_trace_debugging_classes: Debugging techniques and tracing execution through your game. +** Processing line: ~52. 23_isometric_grid: How to make a tactical grid/map made of isometric sprites.~ - Line was identified as a continuation of a list. *** True Line Result -51. 22_trace_debugging: Debugging techniques and tracing execution through your game. -** Processing line: ~53. 23_hexagonal_grid: How to make a tactical grid/map made of hexagons.~ +51. 23_hexagonal_grid: How to make a tactical grid/map made of hexagons. +** Processing line: ~53. 24_http_example: How to make http requests.~ - Line was identified as a continuation of a list. *** True Line Result -52. 22_trace_debugging_classes: Debugging techniques and tracing execution through your game. -** Processing line: ~54. 23_isometric_grid: How to make a tactical grid/map made of isometric sprites.~ +52. 23_isometric_grid: How to make a tactical grid/map made of isometric sprites. +** Processing line: ~54. 25_3d_experiment_01_square: How to create 3D objects.~ - Line was identified as a continuation of a list. *** True Line Result -53. 23_hexagonal_grid: How to make a tactical grid/map made of hexagons. -** Processing line: ~55. 24_http_example: How to make http requests.~ +53. 24_http_example: How to make http requests. +** Processing line: ~55. 26_jam_craft: Starting point for crafting game. It also shows how to customize the mouse cursor.~ - Line was identified as a continuation of a list. *** True Line Result -54. 23_isometric_grid: How to make a tactical grid/map made of isometric sprites. -** Processing line: ~56. 25_3d_experiment_01_square: How to create 3D objects.~ +54. 25_3d_experiment_01_square: How to create 3D objects. +** Processing line: ~56. 99_sample_game_basic_gorillas: Reference implementation of a full game. Topics covered: physics, keyboard input, collision, sprite animation.~ - Line was identified as a continuation of a list. *** True Line Result -55. 24_http_example: How to make http requests. -** Processing line: ~57. 26_jam_craft: Starting point for crafting game. It also shows how to customize the mouse cursor.~ +55. 26_jam_craft: Starting point for crafting game. It also shows how to customize the mouse cursor. +** Processing line: ~57. 99_sample_game_clepto_frog: Reference implementation of a full game. Topics covered: camera control, spring/rope physics, scene orchestration.~ - Line was identified as a continuation of a list. *** True Line Result -56. 25_3d_experiment_01_square: How to create 3D objects. -** Processing line: ~58. 99_sample_game_basic_gorillas: Reference implementation of a full game. Topics covered: physics, keyboard input, collision, sprite animation.~ +56. 99_sample_game_basic_gorillas: Reference implementation of a full game. Topics covered: physics, keyboard input, collision, sprite animation. +** Processing line: ~58. 99_sample_game_dueling_starships: Reference implementation that shows local multiplayer. Topics covered: vectors, particles, friction, inertia.~ - Line was identified as a continuation of a list. *** True Line Result -57. 26_jam_craft: Starting point for crafting game. It also shows how to customize the mouse cursor. -** Processing line: ~59. 99_sample_game_clepto_frog: Reference implementation of a full game. Topics covered: camera control, spring/rope physics, scene orchestration.~ +57. 99_sample_game_clepto_frog: Reference implementation of a full game. Topics covered: camera control, spring/rope physics, scene orchestration. +** Processing line: ~59. 99_sample_game_flappy_dragon: Reference implementation that is a clone of Flappy Bird. Topics covered: scene orchestration, collision, sound, sprite animations, lerping.~ - Line was identified as a continuation of a list. *** True Line Result -58. 99_sample_game_basic_gorillas: Reference implementation of a full game. Topics covered: physics, keyboard input, collision, sprite animation. -** Processing line: ~60. 99_sample_game_dueling_starships: Reference implementation that shows local multiplayer. Topics covered: vectors, particles, friction, inertia.~ +58. 99_sample_game_dueling_starships: Reference implementation that shows local multiplayer. Topics covered: vectors, particles, friction, inertia. +** Processing line: ~60. 99_sample_game_pong: Reference implementation of pong.~ - Line was identified as a continuation of a list. *** True Line Result -59. 99_sample_game_clepto_frog: Reference implementation of a full game. Topics covered: camera control, spring/rope physics, scene orchestration. -** Processing line: ~61. 99_sample_game_flappy_dragon: Reference implementation that is a clone of Flappy Bird. Topics covered: scene orchestration, collision, sound, sprite animations, lerping.~ +59. 99_sample_game_flappy_dragon: Reference implementation that is a clone of Flappy Bird. Topics covered: scene orchestration, collision, sound, sprite animations, lerping. +** Processing line: ~61. 99_sample_game_return_of_serenity: Reference implementation of low resolution story based game.~ - Line was identified as a continuation of a list. *** True Line Result -60. 99_sample_game_dueling_starships: Reference implementation that shows local multiplayer. Topics covered: vectors, particles, friction, inertia. -** Processing line: ~62. 99_sample_game_pong: Reference implementation of pong.~ +60. 99_sample_game_pong: Reference implementation of pong. +** Processing line: ~62. 99_sample_game_the_little_probe: Reference implementation of a full game. Topics covered: Arbitrary collision detection, loading map data, bounce/ball physics.~ - Line was identified as a continuation of a list. *** True Line Result -61. 99_sample_game_flappy_dragon: Reference implementation that is a clone of Flappy Bird. Topics covered: scene orchestration, collision, sound, sprite animations, lerping. -** Processing line: ~63. 99_sample_game_return_of_serenity: Reference implementation of low resolution story based game.~ +61. 99_sample_game_return_of_serenity: Reference implementation of low resolution story based game. +** Processing line: ~63. 99_sample_nddnug_workshop: Reference implementation of a full game. Topics covered: vectors, controller input, sound, trig functions.~ - Line was identified as a continuation of a list. *** True Line Result -62. 99_sample_game_pong: Reference implementation of pong. -** Processing line: ~64. 99_sample_game_the_little_probe: Reference implementation of a full game. Topics covered: Arbitrary collision detection, loading map data, bounce/ball physics.~ +62. 99_sample_game_the_little_probe: Reference implementation of a full game. Topics covered: Arbitrary collision detection, loading map data, bounce/ball physics. +** Processing line: ~64. 99_sample_snakemoji: Shows that Ruby supports coding with emojis.~ - Line was identified as a continuation of a list. *** True Line Result -63. 99_sample_game_return_of_serenity: Reference implementation of low resolution story based game. -** Processing line: ~65. 99_sample_nddnug_workshop: Reference implementation of a full game. Topics covered: vectors, controller input, sound, trig functions.~ +63. 99_sample_nddnug_workshop: Reference implementation of a full game. Topics covered: vectors, controller input, sound, trig functions. +** Processing line: ~65. 99_zz_gtk_unit_tests: A collection of unit tests that exercise parts of DragonRuby's API.~ - Line was identified as a continuation of a list. *** True Line Result -64. 99_sample_game_the_little_probe: Reference implementation of a full game. Topics covered: Arbitrary collision detection, loading map data, bounce/ball physics. -** Processing line: ~66. 99_sample_snakemoji: Shows that Ruby supports coding with emojis.~ -- Line was identified as a continuation of a list. -*** True Line Result -65. 99_sample_nddnug_workshop: Reference implementation of a full game. Topics covered: vectors, controller input, sound, trig functions. -** Processing line: ~67. 99_zz_gtk_unit_tests: A collection of unit tests that exercise parts of DragonRuby's API.~ -- Line was identified as a continuation of a list. -*** True Line Result -66. 99_sample_snakemoji: Shows that Ruby supports coding with emojis. +64. 99_sample_snakemoji: Shows that Ruby supports coding with emojis. ** Processing line: ~~ - End of paragraph detected. *** True Line Result -67. 99_zz_gtk_unit_tests: A collection of unit tests that exercise parts of DragonRuby's API. +65. 99_zz_gtk_unit_tests: A collection of unit tests that exercise parts of DragonRuby's API. ** Processing line: ~~ - End of paragraph detected. *** True Line Result @@ -3335,6 +3327,17 @@ But, in the event that sad day comes, our partnershiop bylaws state that _all_ D - End of paragraph detected. *** True Line Result The GTK::Runtime class is the core of DragonRuby. It is globally accessible via ~$gtk~. +** Processing line: ~* DOCS: ~GTK::Runtime#reset~~ +- Header detected. +*** True Line Result + +*** True Line Result +* DOCS: ~GTK::Runtime#reset~ +** Processing line: ~This function will reset Kernel.tick_count to 0 and will remove all data from args.state.~ +** Processing line: ~~ +- End of paragraph detected. +*** True Line Result +This function will reset Kernel.tick_count to 0 and will remove all data from args.state. ** Processing line: ~* DOCS: ~GTK::Runtime#calcstringbox~~ - Header detected. *** True Line Result @@ -3376,17 +3379,6 @@ This function returns the width and height of a string. - End of paragraph detected. *** True Line Result -** Processing line: ~* DOCS: ~GTK::Runtime#reset~~ -- Header detected. -*** True Line Result - -*** True Line Result -* DOCS: ~GTK::Runtime#reset~ -** Processing line: ~This function will reset Kernel.tick_count to 0 and will remove all data from args.state.~ -** Processing line: ~~ -- End of paragraph detected. -*** True Line Result -This function will reset Kernel.tick_count to 0 and will remove all data from args.state. ** Processing line: ~* DOCS: ~Array~~ - Header detected. *** True Line Result @@ -5513,10 +5505,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~Returns the current tick of the application from the point it was started. This value is never reset.~ * Processing Html Given True Lines ** Processing line: ~* DragonRuby Game Toolkit Live Docs~ +- H1 detected. - Formatting line: ~DragonRuby Game Toolkit Live Docs~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~The information contained here is all available via the DragonRuby Console. You can Open the DragonRuby Console by pressing [`] [~] [²] [^] [º] or [§] within your game.~ - P detected. @@ -5544,10 +5536,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - LINK detected. ** Processing line: ~~ ** Processing line: ~* Hello World~ +- H1 detected. - Formatting line: ~Hello World~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~Welcome to DragonRuby Game Toolkit. Take the steps below to get started.~ - P detected. @@ -5556,10 +5548,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~* Join the Discord and Subscribe to the News Letter~ +- H1 detected. - Formatting line: ~Join the Discord and Subscribe to the News Letter~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~Our Discord channel is [[http://discord.dragonruby.org]].~ - P detected. @@ -5607,10 +5599,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* Watch Some Intro Videos~ +- H1 detected. - Formatting line: ~Watch Some Intro Videos~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~Each video is only 20 minutes and all of them will fit into a lunch break. So please watch them:~ - P detected. @@ -5651,10 +5643,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - LINK detected. ** Processing line: ~~ ** Processing line: ~* Getting Started Tutorial~ +- H1 detected. - Formatting line: ~Getting Started Tutorial~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~This is a tutorial written by Ryan C Gordon (a Juggernaut in the industry who has contracted to Valve, Epic, Activision, and EA... check out his Wikipedia page: [[https://en.wikipedia.org/wiki/Ryan_C._Gordon]]).~ - P detected. @@ -5664,10 +5656,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - LINK detected. ** Processing line: ~~ ** Processing line: ~** Introduction~ +- H2 detected. - Formatting line: ~Introduction~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Introduction~ - Line's tilde count is: 0 - Line contains link marker: false @@ -5699,10 +5691,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** Prerequisites~ +- H2 detected. - Formatting line: ~Prerequisites~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Prerequisites~ - Line's tilde count is: 0 - Line contains link marker: false @@ -5719,10 +5711,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** The Game Loop~ +- H2 detected. - Formatting line: ~The Game Loop~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~The Game Loop~ - Line's tilde count is: 0 - Line contains link marker: false @@ -5777,11 +5769,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - CODE detected. ** Processing line: ~~ ** Processing line: ~** Breakdown Of The ~tick~ Method~ +- H2 detected. - Formatting line: ~Breakdown Of The ~tick~ Method~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H2 detected. - Formatting line: ~Breakdown Of The ~tick~ Method~ - Line's tilde count is: 2 - Line contains link marker: false @@ -5824,10 +5816,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - CODE detected. ** Processing line: ~~ ** Processing line: ~** Rendering A Sprite~ +- H2 detected. - Formatting line: ~Rendering A Sprite~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Rendering A Sprite~ - Line's tilde count is: 0 - Line contains link marker: false @@ -5870,10 +5862,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - CODE detected. ** Processing line: ~~ ** Processing line: ~** Coordinate System and Virtual Canvas~ +- H2 detected. - Formatting line: ~Coordinate System and Virtual Canvas~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Coordinate System and Virtual Canvas~ - Line's tilde count is: 0 - Line contains link marker: false @@ -5912,10 +5904,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** Game State~ +- H2 detected. - Formatting line: ~Game State~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Game State~ - Line's tilde count is: 0 - Line contains link marker: false @@ -5934,10 +5926,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - CODE detected. ** Processing line: ~~ ** Processing line: ~** There Is No Delta Time~ +- H2 detected. - Formatting line: ~There Is No Delta Time~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~There Is No Delta Time~ - Line's tilde count is: 0 - Line contains link marker: false @@ -5954,10 +5946,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** Handling User Input~ +- H2 detected. - Formatting line: ~Handling User Input~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Handling User Input~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6001,10 +5993,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - CODE detected. ** Processing line: ~~ ** Processing line: ~** Coding On A Raspberry Pi~ +- H2 detected. - Formatting line: ~Coding On A Raspberry Pi~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Coding On A Raspberry Pi~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6048,10 +6040,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** Conclusion~ +- H2 detected. - Formatting line: ~Conclusion~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Conclusion~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6064,10 +6056,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - CODE detected. ** Processing line: ~~ ** Processing line: ~** IMPORTANT: Go Through All Of The Sample Apps! Study Them Thoroughly!!~ +- H2 detected. - Formatting line: ~IMPORTANT: Go Through All Of The Sample Apps! Study Them Thoroughly!!~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~IMPORTANT: Go Through All Of The Sample Apps! Study Them Thoroughly!!~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6310,120 +6302,108 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Formatting line: ~ 18_moddable_game: How you can make a game where content is authored by the player (modding support).~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~45. 19_lowrez_jam_01_hello_world: How to use ~render_targets~ to create a low resolution game.~ -- LI detected. -- Formatting line: ~ 19_lowrez_jam_01_hello_world: How to use ~render_targets~ to create a low resolution game.~ -- Line's tilde count is: 2 -- Line contains link marker: false -- CODE detected. -** Processing line: ~46. 19_lowrez_jam_02_buttons: How to use ~render_targets~ to create a low resolution game.~ +** Processing line: ~45. 19_lowrez_jam: How to use ~render_targets~ to create a low resolution game.~ - LI detected. -- Formatting line: ~ 19_lowrez_jam_02_buttons: How to use ~render_targets~ to create a low resolution game.~ +- Formatting line: ~ 19_lowrez_jam: How to use ~render_targets~ to create a low resolution game.~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -** Processing line: ~47. 19_lowrez_jam_03_space_shooter: How to use ~render_targets~ to create a low resolution game.~ -- LI detected. -- Formatting line: ~ 19_lowrez_jam_03_space_shooter: How to use ~render_targets~ to create a low resolution game.~ -- Line's tilde count is: 2 -- Line contains link marker: false -- CODE detected. -** Processing line: ~48. 20_roguelike_starting_point: A starting point for a roguelike and explores concepts such as line of sight.~ +** Processing line: ~46. 20_roguelike_starting_point: A starting point for a roguelike and explores concepts such as line of sight.~ - LI detected. - Formatting line: ~ 20_roguelike_starting_point: A starting point for a roguelike and explores concepts such as line of sight.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~49. 20_roguelike_starting_point_two: A starting point for a roguelike where sprites are provided from a tile map/tile sheet.~ +** Processing line: ~47. 20_roguelike_starting_point_two: A starting point for a roguelike where sprites are provided from a tile map/tile sheet.~ - LI detected. - Formatting line: ~ 20_roguelike_starting_point_two: A starting point for a roguelike where sprites are provided from a tile map/tile sheet.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~50. 21_mailbox_usage: How to do interprocess communication.~ +** Processing line: ~48. 21_mailbox_usage: How to do interprocess communication.~ - LI detected. - Formatting line: ~ 21_mailbox_usage: How to do interprocess communication.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~51. 22_trace_debugging: Debugging techniques and tracing execution through your game.~ +** Processing line: ~49. 22_trace_debugging: Debugging techniques and tracing execution through your game.~ - LI detected. - Formatting line: ~ 22_trace_debugging: Debugging techniques and tracing execution through your game.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~52. 22_trace_debugging_classes: Debugging techniques and tracing execution through your game.~ +** Processing line: ~50. 22_trace_debugging_classes: Debugging techniques and tracing execution through your game.~ - LI detected. - Formatting line: ~ 22_trace_debugging_classes: Debugging techniques and tracing execution through your game.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~53. 23_hexagonal_grid: How to make a tactical grid/map made of hexagons.~ +** Processing line: ~51. 23_hexagonal_grid: How to make a tactical grid/map made of hexagons.~ - LI detected. - Formatting line: ~ 23_hexagonal_grid: How to make a tactical grid/map made of hexagons.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~54. 23_isometric_grid: How to make a tactical grid/map made of isometric sprites.~ +** Processing line: ~52. 23_isometric_grid: How to make a tactical grid/map made of isometric sprites.~ - LI detected. - Formatting line: ~ 23_isometric_grid: How to make a tactical grid/map made of isometric sprites.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~55. 24_http_example: How to make http requests.~ +** Processing line: ~53. 24_http_example: How to make http requests.~ - LI detected. - Formatting line: ~ 24_http_example: How to make http requests.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~56. 25_3d_experiment_01_square: How to create 3D objects.~ +** Processing line: ~54. 25_3d_experiment_01_square: How to create 3D objects.~ - LI detected. - Formatting line: ~ 25_3d_experiment_01_square: How to create 3D objects.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~57. 26_jam_craft: Starting point for crafting game. It also shows how to customize the mouse cursor.~ +** Processing line: ~55. 26_jam_craft: Starting point for crafting game. It also shows how to customize the mouse cursor.~ - LI detected. - Formatting line: ~ 26_jam_craft: Starting point for crafting game. It also shows how to customize the mouse cursor.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~58. 99_sample_game_basic_gorillas: Reference implementation of a full game. Topics covered: physics, keyboard input, collision, sprite animation.~ +** Processing line: ~56. 99_sample_game_basic_gorillas: Reference implementation of a full game. Topics covered: physics, keyboard input, collision, sprite animation.~ - LI detected. - Formatting line: ~ 99_sample_game_basic_gorillas: Reference implementation of a full game. Topics covered: physics, keyboard input, collision, sprite animation.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~59. 99_sample_game_clepto_frog: Reference implementation of a full game. Topics covered: camera control, spring/rope physics, scene orchestration.~ +** Processing line: ~57. 99_sample_game_clepto_frog: Reference implementation of a full game. Topics covered: camera control, spring/rope physics, scene orchestration.~ - LI detected. - Formatting line: ~ 99_sample_game_clepto_frog: Reference implementation of a full game. Topics covered: camera control, spring/rope physics, scene orchestration.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~60. 99_sample_game_dueling_starships: Reference implementation that shows local multiplayer. Topics covered: vectors, particles, friction, inertia.~ +** Processing line: ~58. 99_sample_game_dueling_starships: Reference implementation that shows local multiplayer. Topics covered: vectors, particles, friction, inertia.~ - LI detected. - Formatting line: ~ 99_sample_game_dueling_starships: Reference implementation that shows local multiplayer. Topics covered: vectors, particles, friction, inertia.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~61. 99_sample_game_flappy_dragon: Reference implementation that is a clone of Flappy Bird. Topics covered: scene orchestration, collision, sound, sprite animations, lerping.~ +** Processing line: ~59. 99_sample_game_flappy_dragon: Reference implementation that is a clone of Flappy Bird. Topics covered: scene orchestration, collision, sound, sprite animations, lerping.~ - LI detected. - Formatting line: ~ 99_sample_game_flappy_dragon: Reference implementation that is a clone of Flappy Bird. Topics covered: scene orchestration, collision, sound, sprite animations, lerping.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~62. 99_sample_game_pong: Reference implementation of pong.~ +** Processing line: ~60. 99_sample_game_pong: Reference implementation of pong.~ - LI detected. - Formatting line: ~ 99_sample_game_pong: Reference implementation of pong.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~63. 99_sample_game_return_of_serenity: Reference implementation of low resolution story based game.~ +** Processing line: ~61. 99_sample_game_return_of_serenity: Reference implementation of low resolution story based game.~ - LI detected. - Formatting line: ~ 99_sample_game_return_of_serenity: Reference implementation of low resolution story based game.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~64. 99_sample_game_the_little_probe: Reference implementation of a full game. Topics covered: Arbitrary collision detection, loading map data, bounce/ball physics.~ +** Processing line: ~62. 99_sample_game_the_little_probe: Reference implementation of a full game. Topics covered: Arbitrary collision detection, loading map data, bounce/ball physics.~ - LI detected. - Formatting line: ~ 99_sample_game_the_little_probe: Reference implementation of a full game. Topics covered: Arbitrary collision detection, loading map data, bounce/ball physics.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~65. 99_sample_nddnug_workshop: Reference implementation of a full game. Topics covered: vectors, controller input, sound, trig functions.~ +** Processing line: ~63. 99_sample_nddnug_workshop: Reference implementation of a full game. Topics covered: vectors, controller input, sound, trig functions.~ - LI detected. - Formatting line: ~ 99_sample_nddnug_workshop: Reference implementation of a full game. Topics covered: vectors, controller input, sound, trig functions.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~66. 99_sample_snakemoji: Shows that Ruby supports coding with emojis.~ +** Processing line: ~64. 99_sample_snakemoji: Shows that Ruby supports coding with emojis.~ - LI detected. - Formatting line: ~ 99_sample_snakemoji: Shows that Ruby supports coding with emojis.~ - Line's tilde count is: 0 - Line contains link marker: false -** Processing line: ~67. 99_zz_gtk_unit_tests: A collection of unit tests that exercise parts of DragonRuby's API.~ +** Processing line: ~65. 99_zz_gtk_unit_tests: A collection of unit tests that exercise parts of DragonRuby's API.~ - LI detected. - Formatting line: ~ 99_zz_gtk_unit_tests: A collection of unit tests that exercise parts of DragonRuby's API.~ - Line's tilde count is: 0 @@ -6432,10 +6412,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* Deploying To Itch.io~ +- H1 detected. - Formatting line: ~Deploying To Itch.io~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~Once you've built your game, you're all set to deploy! Good luck in your game dev journey and if you get stuck, come to the Discord channel!~ - P detected. @@ -6444,10 +6424,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** Creating Your Game Landing Page~ +- H2 detected. - Formatting line: ~Creating Your Game Landing Page~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Creating Your Game Landing Page~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6495,10 +6475,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** Update Your Game's Metadata~ +- H2 detected. - Formatting line: ~Update Your Game's Metadata~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Update Your Game's Metadata~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6533,10 +6513,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - CODE detected. ** Processing line: ~~ ** Processing line: ~** Building Your Game For Distribution~ +- H2 detected. - Formatting line: ~Building Your Game For Distribution~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Building Your Game For Distribution~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6593,10 +6573,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** DragonRuby's Philosophy~ +- H2 detected. - Formatting line: ~DragonRuby's Philosophy~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~DragonRuby's Philosophy~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6608,10 +6588,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** Challenge The Status Quo~ +- H3 detected. - Formatting line: ~Challenge The Status Quo~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~Challenge The Status Quo~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6639,10 +6619,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** Release Often And Quickly~ +- H3 detected. - Formatting line: ~Release Often And Quickly~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~Release Often And Quickly~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6675,10 +6655,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~*** Sustainable And Ethical Monetization~ +- H3 detected. - Formatting line: ~Sustainable And Ethical Monetization~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~Sustainable And Ethical Monetization~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6695,10 +6675,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** Sustainable And Ethical Open Source~ +- H3 detected. - Formatting line: ~Sustainable And Ethical Open Source~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~Sustainable And Ethical Open Source~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6715,10 +6695,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** People Over Entities~ +- H3 detected. - Formatting line: ~People Over Entities~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~People Over Entities~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6730,10 +6710,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** Building A Game Should Be Fun And Bring Happiness~ +- H3 detected. - Formatting line: ~Building A Game Should Be Fun And Bring Happiness~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~Building A Game Should Be Fun And Bring Happiness~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6745,10 +6725,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** Real World Application Drives Features~ +- H3 detected. - Formatting line: ~Real World Application Drives Features~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~Real World Application Drives Features~ - Line's tilde count is: 0 - Line contains link marker: false @@ -6765,10 +6745,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~* How To Determine What Frame You Are On~ +- H1 detected. - Formatting line: ~How To Determine What Frame You Are On~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~There is a property on ~state~ called ~tick_count~ that is incremented by DragonRuby every time the ~tick~ method is called. The following code renders a label that displays the current ~tick_count~.~ - P detected. @@ -6787,10 +6767,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* How To Get Current Framerate~ +- H1 detected. - Formatting line: ~How To Get Current Framerate~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~Current framerate is a top level property on the Game Toolkit Runtime and is accessible via ~args.gtk.current_framerate~.~ - P detected. @@ -6809,10 +6789,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* How To Render A Sprite Using An Array~ +- H1 detected. - Formatting line: ~How To Render A Sprite Using An Array~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~All file paths should use the forward slash ~/~ *not* backslash ~~. Game Toolkit includes a number of sprites in the ~sprites~ folder (everything about your game is located in the ~mygame~ directory).~ - P detected. @@ -6849,10 +6829,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* More Sprite Properties As An Array~ +- H1 detected. - Formatting line: ~More Sprite Properties As An Array~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~Here are all the properties you can set on a sprite.~ - P detected. @@ -6881,10 +6861,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* Different Sprite Representations~ +- H1 detected. - Formatting line: ~Different Sprite Representations~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~Using ordinal positioning can get a little unruly given so many properties you have control over.~ - P detected. @@ -6968,10 +6948,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* How To Render A Label~ +- H1 detected. - Formatting line: ~How To Render A Label~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~~args.outputs.labels~ is used to render labels.~ - P detected. @@ -7002,10 +6982,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* A Colored Label~ +- H1 detected. - Formatting line: ~A Colored Label~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~#+begin_src~ @@ -7020,10 +7000,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* Extended Label Properties~ +- H1 detected. - Formatting line: ~Extended Label Properties~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~#+begin_src~ @@ -7061,11 +7041,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - CODE detected. ** Processing line: ~~ ** Processing line: ~* Rendering A Label As A ~Hash~~ +- H1 detected. - Formatting line: ~Rendering A Label As A ~Hash~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~You can add additional metadata about your game within a label, which requires you to use a `Hash` instead.~ - P detected. @@ -7101,10 +7081,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* Getting The Size Of A Piece Of Text~ +- H1 detected. - Formatting line: ~Getting The Size Of A Piece Of Text~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~You can get the render size of any string using ~args.gtk.calcstringbox~.~ - P detected. @@ -7134,10 +7114,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* How To Play A Sound~ +- H1 detected. - Formatting line: ~How To Play A Sound~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~Sounds that end ~.wav~ will play once:~ - P detected. @@ -7195,11 +7175,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* Using ~args.state~ To Store Your Game State~ +- H1 detected. - Formatting line: ~Using ~args.state~ To Store Your Game State~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~~args.state~ is a open data structure that allows you to define properties that are arbitrarily nested. You don't need to define any kind of ~class~.~ - P detected. @@ -7250,10 +7230,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* Frequently Asked Questions, Comments, and Concerns~ +- H1 detected. - Formatting line: ~Frequently Asked Questions, Comments, and Concerns~ - Line's tilde count is: 0 - Line contains link marker: false -- H1 detected. ** Processing line: ~~ ** Processing line: ~Here are questions, comments, and concerns that frequently come up.~ - P detected. @@ -7262,20 +7242,20 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** Frequently Asked Questions~ +- H2 detected. - Formatting line: ~Frequently Asked Questions~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Frequently Asked Questions~ - Line's tilde count is: 0 - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~*** What is DragonRuby LLP?~ +- H3 detected. - Formatting line: ~What is DragonRuby LLP?~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~What is DragonRuby LLP?~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7336,10 +7316,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** What is DragonRuby?~ +- H3 detected. - Formatting line: ~What is DragonRuby?~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~What is DragonRuby?~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7351,10 +7331,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** Okay... so what is the difference between a language specification and a runtime?~ +- H3 detected. - Formatting line: ~Okay... so what is the difference between a language specification and a runtime?~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~Okay... so what is the difference between a language specification and a runtime?~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7371,10 +7351,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** Okay... what language specification does DragonRuby use then?~ +- H3 detected. - Formatting line: ~Okay... what language specification does DragonRuby use then?~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~Okay... what language specification does DragonRuby use then?~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7386,10 +7366,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** So... why another runtime?~ +- H3 detected. - Formatting line: ~So... why another runtime?~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~So... why another runtime?~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7406,10 +7386,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** What does Multilevel Cross-platform mean?~ +- H3 detected. - Formatting line: ~What does Multilevel Cross-platform mean?~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~What does Multilevel Cross-platform mean?~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7479,10 +7459,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** Cool cool. So given that I understand everything to this point, can we answer the original question? What is DragonRuby?~ +- H3 detected. - Formatting line: ~Cool cool. So given that I understand everything to this point, can we answer the original question? What is DragonRuby?~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~Cool cool. So given that I understand everything to this point, can we answer the original question? What is DragonRuby?~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7494,20 +7474,20 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** Frequent Comments~ +- H2 detected. - Formatting line: ~Frequent Comments~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Frequent Comments~ - Line's tilde count is: 0 - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~*** But Ruby is dead.~ +- H3 detected. - Formatting line: ~But Ruby is dead.~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~But Ruby is dead.~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7535,10 +7515,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** But Ruby is slow.~ +- H3 detected. - Formatting line: ~But Ruby is slow.~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~But Ruby is slow.~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7550,10 +7530,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** Dynamic langauges are slow.~ +- H3 detected. - Formatting line: ~Dynamic langauges are slow.~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~Dynamic langauges are slow.~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7575,20 +7555,20 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** Frequent Concerns~ +- H2 detected. - Formatting line: ~Frequent Concerns~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Frequent Concerns~ - Line's tilde count is: 0 - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~*** DragonRuby is not open source. That's not right.~ +- H3 detected. - Formatting line: ~DragonRuby is not open source. That's not right.~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~DragonRuby is not open source. That's not right.~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7615,10 +7595,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** DragonRuby is for pay. You should offer a free version.~ +- H3 detected. - Formatting line: ~DragonRuby is for pay. You should offer a free version.~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~DragonRuby is for pay. You should offer a free version.~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7677,10 +7657,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** But still, you should offer a free version. So I can try it out and see if I like it.~ +- H3 detected. - Formatting line: ~But still, you should offer a free version. So I can try it out and see if I like it.~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~But still, you should offer a free version. So I can try it out and see if I like it.~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7697,10 +7677,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** I still think you should do a free version. Think of all people who would give it a shot.~ +- H3 detected. - Formatting line: ~I still think you should do a free version. Think of all people who would give it a shot.~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~I still think you should do a free version. Think of all people who would give it a shot.~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7717,10 +7697,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~*** What if I build something with DragonRuby, but DragonRuby LLP becomes insolvent.~ +- H3 detected. - Formatting line: ~What if I build something with DragonRuby, but DragonRuby LLP becomes insolvent.~ - Line's tilde count is: 0 - Line contains link marker: false -- H3 detected. - Formatting line: ~What if I build something with DragonRuby, but DragonRuby LLP becomes insolvent.~ - Line's tilde count is: 0 - Line contains link marker: false @@ -7737,11 +7717,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~* DOCS: ~GTK::Runtime~~ +- H1 detected. - Formatting line: ~~GTK::Runtime~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~The GTK::Runtime class is the core of DragonRuby. It is globally accessible via ~$gtk~.~ - P detected. - Formatting line: ~The GTK::Runtime class is the core of DragonRuby. It is globally accessible via ~$gtk~.~ @@ -7749,12 +7729,24 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false - CODE detected. ** Processing line: ~~ +** Processing line: ~* DOCS: ~GTK::Runtime#reset~~ +- H1 detected. +- Formatting line: ~~GTK::Runtime#reset~~ +- Line's tilde count is: 2 +- Line contains link marker: false +- CODE detected. +** Processing line: ~This function will reset Kernel.tick_count to 0 and will remove all data from args.state.~ +- P detected. +- Formatting line: ~This function will reset Kernel.tick_count to 0 and will remove all data from args.state.~ +- Line's tilde count is: 0 +- Line contains link marker: false +** Processing line: ~~ ** Processing line: ~* DOCS: ~GTK::Runtime#calcstringbox~~ +- H1 detected. - Formatting line: ~~GTK::Runtime#calcstringbox~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~This function returns the width and height of a string.~ - P detected. - Formatting line: ~This function returns the width and height of a string.~ @@ -7771,24 +7763,12 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - PRE end detected. ** Processing line: ~~ ** Processing line: ~~ -** Processing line: ~* DOCS: ~GTK::Runtime#reset~~ -- Formatting line: ~~GTK::Runtime#reset~~ -- Line's tilde count is: 2 -- Line contains link marker: false -- CODE detected. -- H1 detected. -** Processing line: ~This function will reset Kernel.tick_count to 0 and will remove all data from args.state.~ -- P detected. -- Formatting line: ~This function will reset Kernel.tick_count to 0 and will remove all data from args.state.~ -- Line's tilde count is: 0 -- Line contains link marker: false -** Processing line: ~~ ** Processing line: ~* DOCS: ~Array~~ +- H1 detected. - Formatting line: ~~Array~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~The Array class has been extend to provide methods that will help in common game development tasks. Array is one of the most powerful classes in Ruby and a very fundamental component of Game Toolkit.~ - P detected. @@ -7798,11 +7778,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Array#map~~ +- H1 detected. - Formatting line: ~~Array#map~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~The function given a block returns a new ~Enumerable~ of values.~ - P detected. @@ -7855,11 +7835,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Array#each~~ +- H1 detected. - Formatting line: ~~Array#each~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~The function, given a block, invokes the block for each item in the ~Array~. ~Array#each~ is synonymous to foreach constructs in other languages.~ - P detected. @@ -7911,11 +7891,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Array#reject_nil~~ +- H1 detected. - Formatting line: ~~Array#reject_nil~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Returns an ~Enumerable~ rejecting items that are ~nil~, this is an alias for ~Array#compact~:~ - P detected. @@ -7939,11 +7919,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Array#reject_false~~ +- H1 detected. - Formatting line: ~~Array#reject_false~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Returns an `Enumerable` rejecting items that are `nil` or `false`.~ - P detected. @@ -7964,11 +7944,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Array#product~~ +- H1 detected. - Formatting line: ~~Array#product~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Returns all combinations of values between two arrays.~ - P detected. @@ -8007,11 +7987,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Array#map_2d~~ +- H1 detected. - Formatting line: ~~Array#map_2d~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Assuming the array is an array of arrays, Given a block, each 2D array index invoked against the block. A 2D array is a common way to store data/layout for a stage.~ - P detected. @@ -8048,11 +8028,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Array#include_any?~~ +- H1 detected. - Formatting line: ~~Array#include_any?~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Given a collection of items, the function will return ~true~ if any of ~self~'s items exists in the collection of items passed in:~ - P detected. @@ -8063,11 +8043,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Array#any_intersect_rect?~~ +- H1 detected. - Formatting line: ~~Array#any_intersect_rect?~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Assuming the array contains objects that respond to ~left~, ~right~, ~top~, ~bottom~, this method returns ~true~ if any of the elements within the array intersect the object being passed in. You are given an optional parameter called ~tolerance~ which informs how close to the other rectangles the elements need to be for it to be considered intersecting.~ - P detected. @@ -8144,11 +8124,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~GTK::Outputs~~ +- H1 detected. - Formatting line: ~~GTK::Outputs~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Outputs is how you render primitives to the screen. The minimal setup for rendering something to the screen is via a ~tick~ method defined in mygame/app/main.rb~ - P detected. @@ -8168,11 +8148,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~GTK::Outputs#borders~~ +- H1 detected. - Formatting line: ~~GTK::Outputs#borders~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Add primitives to this collection to render an unfilled solid to the screen. Take a look at the documentation for Outputs#solids.~ - P detected. @@ -8219,11 +8199,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~GTK::Outputs#solids~~ +- H1 detected. - Formatting line: ~~GTK::Outputs#solids~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Add primitives to this collection to render a solid to the screen.~ - P detected. @@ -8232,10 +8212,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - Line contains link marker: false ** Processing line: ~~ ** Processing line: ~** Rendering a solid using an Array~ +- H2 detected. - Formatting line: ~Rendering a solid using an Array~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Rendering a solid using an Array~ - Line's tilde count is: 0 - Line contains link marker: false @@ -8257,10 +8237,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~** Rendering a solid using an Array with colors and alpha~ +- H2 detected. - Formatting line: ~Rendering a solid using an Array with colors and alpha~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Rendering a solid using an Array with colors and alpha~ - Line's tilde count is: 0 - Line contains link marker: false @@ -8288,10 +8268,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~** Rendering a solid using a Hash~ +- H2 detected. - Formatting line: ~Rendering a solid using a Hash~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Rendering a solid using a Hash~ - Line's tilde count is: 0 - Line contains link marker: false @@ -8321,10 +8301,10 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~** Rendering a solid using a Class~ +- H2 detected. - Formatting line: ~Rendering a solid using a Class~ - Line's tilde count is: 0 - Line contains link marker: false -- H2 detected. - Formatting line: ~Rendering a solid using a Class~ - Line's tilde count is: 0 - Line contains link marker: false @@ -8373,11 +8353,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~GTK::Mouse~~ +- H1 detected. - Formatting line: ~~GTK::Mouse~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~The mouse is accessible via ~args.inputs.mouse~:~ - P detected. @@ -8498,11 +8478,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset - CODE detected. ** Processing line: ~~ ** Processing line: ~* DOCS: ~GTK::MousePoint~~ +- H1 detected. - Formatting line: ~~GTK::MousePoint~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~The ~GTK::MousePoint~ has the following properties.~ - P detected. @@ -8581,11 +8561,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~GTK::OpenEntity~~ +- H1 detected. - Formatting line: ~~GTK::OpenEntity~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~~GTK::OpenEntity~ is accessible within the DragonRuby's top level ~tick~ function via the ~args.state~ property.~ - P detected. @@ -8633,11 +8613,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~GTK::OpenEntity#as_hash~~ +- H1 detected. - Formatting line: ~~GTK::OpenEntity#as_hash~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Returns a reference to the ~GTK::OpenEntity~ as a ~Hash~. This property is useful when you want to treat ~args.state~ as a ~Hash~ and invoke methods such as ~Hash#each~.~ - P detected. @@ -8674,11 +8654,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Numeric#frame_index~~ +- H1 detected. - Formatting line: ~~Numeric#frame_index~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~This function is helpful for determining the index of frame-by-frame sprite animation. The numeric value ~self~ represents the moment the animation started.~ - P detected. @@ -8781,11 +8761,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Kernel~~ +- H1 detected. - Formatting line: ~~Kernel~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Kernel in the DragonRuby Runtime has patches for how standard out is handled and also contains a unit of time in games called a tick.~ - P detected. @@ -8795,11 +8775,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Kernel::tick_count~~ +- H1 detected. - Formatting line: ~~Kernel::tick_count~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Returns the current tick of the game. This value is reset if you call $gtk.reset.~ - P detected. @@ -8809,11 +8789,11 @@ Returns the current tick of the game. This value is reset if you call $gtk.reset ** Processing line: ~~ ** Processing line: ~~ ** Processing line: ~* DOCS: ~Kernel::global_tick_count~~ +- H1 detected. - Formatting line: ~~Kernel::global_tick_count~~ - Line's tilde count is: 2 - Line contains link marker: false - CODE detected. -- H1 detected. ** Processing line: ~~ ** Processing line: ~Returns the current tick of the application from the point it was started. This value is never reset.~ - P detected. |
