{"id":626,"date":"2020-08-28T23:04:29","date_gmt":"2020-08-28T14:04:29","guid":{"rendered":"https:\/\/studio-atr.com\/blog\/?p=626"},"modified":"2020-08-28T23:05:09","modified_gmt":"2020-08-28T14:05:09","slug":"godot-%e3%81%ae-%e3%83%87%e3%83%a2%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88-%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%bf%e3%81%9f%e3%80%82","status":"publish","type":"post","link":"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-%e3%81%ae-%e3%83%87%e3%83%a2%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88-%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%bf%e3%81%9f%e3%80%82\/","title":{"rendered":"Godot\u306e\u30c7\u30e2\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8aad\u3093\u3067\u307f\u305f\u3002"},"content":{"rendered":"\n<p><a href=\"https:\/\/studio-atr.com\/blog\/2020\/08\/22\/godot-%e3%81%a7-%e6%9c%80%e5%88%9d%e3%81%ae%e3%82%b2%e3%83%bc%e3%83%a0-%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%9f%e3%80%82\/\">\u524d\u56de<\/a>Godot\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306b\u3042\u308b\u7c21\u5358\u306a\u30b2\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u4eca\u56de\u306f\u3001Godot\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4e00\u89a7\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u300c<strong>2D Role Playing Game Demo<\/strong>\u300d\u306e\u4e2d\u8eab\u3092\u8aad\u3093\u3067\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>\u53c2\u8003\u30da\u30fc\u30b8<\/strong>:<\/p>\n\n\n\n<ul><li>GitHub: <a href=\"https:\/\/github.com\/godotengine\/godot-demo-projects\/tree\/3.2-8d9d58f\/2d\/role_playing_game\">Role Playing Game<\/a><\/li><\/ul>\n\n\n\n<p><strong>\u74b0\u5883:<\/strong><\/p>\n\n\n\n<ul><li>Godot Engine v3.2.2<\/li><\/ul>\n\n\n\n<h2>\u30b2\u30fc\u30e0\u306e\u6a5f\u80fd\u3002<\/h2>\n\n\n\n<ul><li>\u30ad\u30fc\u30dc\u30fc\u30c9\u64cd\u4f5c\u3067\u30de\u30c3\u30d7\u3092\u5f98\u5f8a<\/li><li>\u5bfe\u9762\u3059\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6bce\u306b\u9055\u3046\u30a2\u30af\u30b7\u30e7\u30f3\u304c\u767a\u751f\u3059\u308b<\/li><li>\u4f1a\u8a71Window\u304c\u8868\u793a\u3055\u308c\u4f1a\u8a71\u304c\u3067\u304d\u308b<\/li><li>\u5bfe\u6226\u30e2\u30fc\u30c9\u304c\u3042\u308b<\/li><\/ul>\n\n\n\n<h2>\u5b66\u3073\u30e1\u30e2\u3002<\/h2>\n\n\n\n<h4>Game\u30b7\u30fc\u30f3<\/h4>\n\n\n\n<ul><li>AnimationPlayer: \u753b\u9762\u5207\u308a\u66ff\u3048\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3<\/li><li>Transition(CanvasLayer): <ul><li>ColorRect: fade\u306b\u308a\u3088\u3046\u3059\u308b\u9ed2\u5857\u308aNode<\/li><\/ul><\/li><li>Combat: \u5bfe\u6226\u30b7\u30fc\u30f3<\/li><li>Exploration: \u63a2\u7d22\u30b7\u30fc\u30f3<\/li><li>Camera2D: \u30ab\u30e1\u30e9<\/li><\/ul>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-file=\"Game.gd\" data-lang=\"Python\" data-show-lang=\"0\"><code>extends Node\n\n# Node\u306e\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3092\u7d10\u3065\u3051\u308b\u305f\u3081\u306b\u516c\u958b\u5909\u6570\u306b\u3059\u308b\nexport(NodePath) var combat_screen\nexport(NodePath) var exploration_screen\n\n# \u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u306e\u5b9a\u7fa9\nconst PLAYER_WIN = &quot;res:\/\/dialogue\/dialogue_data\/player_won.json&quot;\nconst PLAYER_LOSE = &quot;res:\/\/dialogue\/dialogue_data\/player_lose.json&quot;\n\nfunc _ready():\n  # Node\u306e\u53d6\u5f97\n\texploration_screen = get_node(exploration_screen)\n\tcombat_screen = get_node(combat_screen)\n\n  # \u30b7\u30b0\u30ca\u30eb\u306e\u63a5\u7d9a .connect(&lt;signal_name&gt;, &lt;target_node&gt;, &lt;target_function_name&gt;)\n\tcombat_screen.connect(&quot;combat_finished&quot;, self, &quot;_on_combat_finished&quot;)\n  # $Exploration \u306f get_node( &quot;Exploration&quot;) \u306e\u77ed\u7e2e\u7cfb\n\tfor n in $Exploration\/Grid.get_children():\n\t\tif not n.type == n.CellType.ACTOR:\n\t\t\tcontinue\n\t\tif not n.has_node(&quot;DialoguePlayer&quot;):\n\t\t\tcontinue\n\u3000\u3000# \u30e2\u30d6\u306e\u30b7\u30b0\u30ca\u30eb\u306e\u63a5\u7d9a\u3000\n\t\tn.get_node(&quot;DialoguePlayer&quot;).connect(&quot;dialogue_finished&quot;, self,\n\t\t\t&quot;_on_opponent_dialogue_finished&quot;, [n])\n  # \u6226\u95d8\u30b7\u30fc\u30f3\u524a\u9664\n\tremove_child(combat_screen)\n\n\n# \u6226\u95d8\u958b\u59cb\nfunc start_combat(combat_actors):\n\t# \u63a2\u7d22\u30b7\u30fc\u30f3\u524a\u9664\n\tremove_child($Exploration)\n\t# fade\u30a4\u30f3\n\t$AnimationPlayer.play(&quot;fade&quot;)\n\t\n\t# animation_finished \u306e\u30b7\u30b0\u30ca\u30eb\u5f8c\u518d\u958b\n\tyield($AnimationPlayer, &quot;animation_finished&quot;)\n\t# \u6226\u95d8\u30b7\u30fc\u30f3\u8ffd\u52a0\n\tadd_child(combat_screen)\n\t# \u6226\u95d8\u30b7\u30fc\u30f3\u8868\u793a\n\tcombat_screen.show()\n\t# \u6226\u95d8\u30b7\u30fc\u30f3\u521d\u671f\u5316\n\tcombat_screen.initialize(combat_actors)\n\t# fade\u30a2\u30a6\u30c8\n\t$AnimationPlayer.play_backwards(&quot;fade&quot;)\n\n\n# \u5bfe\u6226\u76f8\u624b\u306e\u4f1a\u8a71\u304c\u7d42\u4e86\nfunc _on_opponent_dialogue_finished(opponent):\n\t# \u5bfe\u6226\u76f8\u624b\u304c\u8ca0\u3051\u3066\u3044\u305f\u3089return \n\tif opponent.lost:\n\t\treturn\n\t# \u5bfe\u6226\u30da\u30a2\u3092\u6c7a\u3081\u3066\u6226\u95d8\u958b\u59cb\n\tvar player = $Exploration\/Grid\/Player\n\tvar combatents = [player.combat_actor, opponent.combat_actor]\n\tstart_combat(combatents)\n\n\n# \u5bfe\u6226\u7d42\u4e86\nfunc _on_combat_finished(winner, _loser):\n\t# \u5bfe\u6226\u30b7\u30fc\u30f3\u3092\u524a\u9664\n\tremove_child(combat_screen)\n\t# fade\u30a2\u30a6\u30c8\n\t$AnimationPlayer.play_backwards(&quot;fade&quot;)\n\t# \u63a2\u7d22\u30b7\u30fc\u30f3\u8ffd\u52a0\n\tadd_child(exploration_screen)\n\t# \u5bfe\u8a71\u30b7\u30fc\u30f3\u8aad\u307f\u8fbc\u307f\n\tvar dialogue = load(&quot;res:\/\/dialogue\/dialogue_player\/DialoguePlayer.tscn&quot;).instance()\n\t# \u4f1a\u8a71\u30d5\u30a1\u30a4\u30eb\u8a2d\u5b9a\n\tif winner.name == &quot;Player&quot;:\n\t\tdialogue.dialogue_file = PLAYER_WIN\n\telse:\n\t\tdialogue.dialogue_file = PLAYER_LOSE\n\t# \u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u7d42\u4e86\u5f8c\u518d\u4f1a\n\tyield($AnimationPlayer, &quot;animation_finished&quot;)\n\t# \u30c0\u30a4\u30a2\u30ed\u30b0\u3092\u8868\u793a\n\tvar player = $Exploration\/Grid\/Player\n\texploration_screen.get_node(&quot;DialogueUI&quot;).show_dialogue(player, dialogue)\n\t# \u5bfe\u6226\u30b7\u30fc\u30f3\u30af\u30ea\u30a2\n\tcombat_screen.clear_combat()\n\t# \u30c0\u30a4\u30a2\u30ed\u30b0\u304c\u7d42\u4e86\u5f8c\u518d\u4f1a\n\tyield(dialogue, &quot;dialogue_finished&quot;)\n\t# \u30c0\u30a4\u30a2\u30ed\u30b0\u3092\u89e3\u653e\n\tdialogue.queue_free()\n<\/code><\/pre><\/div>\n\n\n\n<h4>Combat\u30b7\u30fc\u30f3<\/h4>\n\n\n\n<ul><li>Combatants (Node2D): \u6226\u95d8\u54e1\u306e\u914d\u7f6eView<\/li><li>TurnQueue: \u30bf\u30fc\u30f3\u3092\u7ba1\u7406<\/li><li>UI (Control)<ul><li>Combatants (HboxContainer): \u6226\u95d8\u54e1\u306e\u30b2\u30fc\u30b8\u914d\u7f6eView<\/li><li>Buttons (PanelContainer): \u30b3\u30de\u30f3\u30c9View<ul><li>GridContainer: \u30b3\u30de\u30f3\u30c9\u30ac\u30a4\u30c9\u30b3\u30f3\u30c6\u30ca<ul><li>Attack (Button): Attack\u30dc\u30bf\u30f3<\/li><li>Defend (Button): Defend\u30dc\u30bf\u30f3<\/li><li>Flee (Button): Flee\u30dc\u30bf\u30f3<\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><\/ul>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-file=\"Combat.gd\" data-lang=\"Python\" data-show-lang=\"0\"><code>extends Node\n\n# \u6226\u95d8\u7d42\u4e86\u306e\u30b7\u30b0\u30ca\u30eb\nsignal combat_finished(winner, loser)\n# \u6226\u95d8\u54e1\u306e\u578b\uff1f\nconst Combatant = preload(&quot;res:\/\/turn_combat\/combatants\/Combatant.gd&quot;)\n\n# \u521d\u671f\u8a2d\u5b9a\nfunc initialize(combat_combatants):\n\t# \u6e21\u3055\u308c\u305f\u6226\u95d8\u30e1\u30f3\u30d0\u30fc\n\tfor combatant in combat_combatants:\n\t\tcombatant = combatant.instance()\n\t\tif combatant is Combatant:\n\t\t\t# CombatantsNode\u306b\u8ffd\u52a0\n\t\t\t$Combatants.add_combatant(combatant)\n\t\t\t# Conbatant\u306eHealtnNode\u306edead\u30b7\u30b0\u30ca\u30eb\u306e\u63a5\u7d9a\n\t\t\tcombatant.get_node(&quot;Health&quot;).connect(&quot;dead&quot;, self, &quot;_on_combatant_death&quot;, [combatant])\n\t\telse:\n\t\t\tcombatant.queue_free()\n\t$UI.initialize()\n\t$TurnQueue.initialize()\n\n\n# \u72b6\u614b\u30af\u30ea\u30a2\nfunc clear_combat():\n\t# Combatants\u3068UI\/Combatants\u306e\u5b50Node\u89e3\u653e\n\tfor n in $Combatants.get_children():\n\t\tn.queue_free()\n\tfor n in $UI\/Combatants.get_children():\n\t\tn.queue_free()\n\n\n# \u6226\u95d8\u3092\u7d42\u4e86\u3059\u308b\nfunc finish_combat(winner, loser):\n\temit_signal(&quot;combat_finished&quot;, winner, loser)\n\n\n# \u6226\u95d8\u3067\u5012\u308c\u305f\u901a\u77e5\nfunc _on_combatant_death(combatant):\n\tvar winner\n\tif not combatant.name == &quot;Player&quot;:\n\t\twinner = $Combatants\/Player\n\telse:\n\t\tfor n in $Combatants.get_children():\n\t\t\tif not n.name == &quot;Player&quot;:\n\t\t\t\twinner = n\n\t\t\t\tbreak\n\tfinish_combat(winner, combatant)<\/code><\/pre><\/div>\n\n\n\n<h4>Exploration\u30b7\u30fc\u30f3<\/h4>\n\n\n\n<ul><li>Grass (TileMap): \u30de\u30b9\u76ee<\/li><li>Grid (TileMap): \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30de\u30c3\u30d7<ul><li>Player (Node2D): \u30d7\u30ec\u30a4\u30e4\u30fc<\/li><li>Opponent (Node2D): \u5bfe\u6226\u76f8\u624b<ul><li>DialoguePlayer: \u30c0\u30a4\u30a2\u30ed\u30b0\u60c5\u5831<\/li><li>Timer: (?)<\/li><\/ul><\/li><li>Object (Node2D): \u30a2\u30a4\u30c6\u30e0<ul><li>DialoguePlayer: \u30c0\u30a4\u30a2\u30ed\u30b0\u60c5\u5831<\/li><\/ul><\/li><\/ul><\/li><li>DialogueUI (Panel): \u30c0\u30a4\u30a2\u30ed\u30b0<\/li><\/ul>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-file=\"Grid.gd\" data-lang=\"Python\"><code>extends TileMap\n\n# Enum\u5b9a\u7fa9\nenum CellType { ACTOR, OBSTACLE, OBJECT }\n# Node\u306e\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\nexport(NodePath) var dialogue_ui\n\nfunc _ready():\n\t# \u5b50Node\u3092Cell\u3068\u3057\u3066\u914d\u7f6e\n\tfor child in get_children():\n\t\tset_cellv(world_to_map(child.position), child.type)\n\n\n# Cell\u304b\u3089\u5bfe\u8c61\u306e\u30dd\u30fc\u30f3\u3092\u53d6\u5f97\nfunc get_cell_pawn(cell, type = CellType.ACTOR):\n\tfor node in get_children():\n\t\tif node.type != type:\n\t\t\tcontinue\n\t\tif world_to_map(node.position) == cell:\n\t\t\treturn(node)\n\n\n# \u30dd\u30fc\u30f3\u306e\u79fb\u52d5\u8981\u6c42\nfunc request_move(pawn, direction):\n\tvar cell_start = world_to_map(pawn.position)\n\tvar cell_target = cell_start + direction\n\t\n\tvar cell_tile_id = get_cellv(cell_target)\n\tmatch cell_tile_id:\n\t\t-1: # \u7a7a\u304d\u3060\u3063\u305f\u3089\n\t\t\t# \u79fb\u52d5\n\t\t\tset_cellv(cell_target, CellType.ACTOR)\n\t\t\tset_cellv(cell_start, -1)\n\t\t\treturn map_to_world(cell_target) + cell_size \/ 2\n\t\t\t\n\t\tCellType.OBJECT, CellType.ACTOR: # \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u3042\u3063\u305f\u3089\n\t\t\t# \u79fb\u52d5\u5148\u306b\u3042\u3063\u305f\u30dd\u30fc\u30f3\u53d6\u5f97\n\t\t\tvar target_pawn = get_cell_pawn(cell_target, cell_tile_id)\n\t\t\tprint(&quot;Cell %s contains %s&quot; % [cell_target, target_pawn.name])\n\t\t\t\n\t\t\tif not target_pawn.has_node(&quot;DialoguePlayer&quot;): # \u30c0\u30a4\u30a2\u30ed\u30b0\u8981\u7d20\u304c\u306a\u3051\u308c\u3070\n\t\t\t\treturn\n\t\t\t\n\t\t\t# \u30c0\u30a4\u30a2\u30ed\u30b0\u8868\u793a\n\t\t\tget_node(dialogue_ui).show_dialogue(pawn, target_pawn.get_node(&quot;DialoguePlayer&quot;))\n<\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Godot\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4e00\u89a7\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u300c2D Role Playing Game Demo\u300d\u306e\u4e2d\u8eab\u3092\u8aad\u3093\u3067\u307f\u305f\u3002<\/p>\n","protected":false},"author":1,"featured_media":637,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[22],"tags":[26],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Godot\u306e\u30c7\u30e2\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8aad\u3093\u3067\u307f\u305f\u3002 - studioATR<\/title>\n<meta name=\"description\" content=\"Godot \u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4e00\u89a7\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u308b \u30c7\u30e2 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u300c 2D Role Playing Game Demo \u300d\u306e\u4e2d\u8eab\u3092\u8aad\u3093\u3067\u307f\u305f\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-\u306e-\u30c7\u30e2\u30d7\u30ed\u30b8\u30a7\u30af\u30c8-\u3092\u8aad\u3093\u3067\u307f\u305f\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Godot\u306e\u30c7\u30e2\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8aad\u3093\u3067\u307f\u305f\u3002 - studioATR\" \/>\n<meta property=\"og:description\" content=\"Godot \u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4e00\u89a7\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u308b \u30c7\u30e2 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u300c 2D Role Playing Game Demo \u300d\u306e\u4e2d\u8eab\u3092\u8aad\u3093\u3067\u307f\u305f\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-\u306e-\u30c7\u30e2\u30d7\u30ed\u30b8\u30a7\u30af\u30c8-\u3092\u8aad\u3093\u3067\u307f\u305f\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"studioATR\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-28T14:04:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-08-28T14:05:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/studio-atr.com\/blog\/wp-content\/uploads\/2020\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2020-08-28-22.24.04.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"920\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/atamatarin_\" \/>\n<meta name=\"twitter:site\" content=\"@atamatarin_\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"3\u5206\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/studio-atr.com\/blog\/#website\",\"url\":\"https:\/\/studio-atr.com\/blog\/\",\"name\":\"studioATR\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/studio-atr.com\/blog\/#\/schema\/person\/ccc09f2d68d8ad961f6c2c7d8e95d4c0\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/studio-atr.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"ja\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-%e3%81%ae-%e3%83%87%e3%83%a2%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88-%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%bf%e3%81%9f%e3%80%82\/#primaryimage\",\"inLanguage\":\"ja\",\"url\":\"https:\/\/studio-atr.com\/blog\/wp-content\/uploads\/2020\/08\/\\u30b9\\u30af\\u30ea\\u30fc\\u30f3\\u30b7\\u30e7\\u30c3\\u30c8-2020-08-28-22.24.04.jpg\",\"width\":1500,\"height\":920},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-%e3%81%ae-%e3%83%87%e3%83%a2%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88-%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%bf%e3%81%9f%e3%80%82\/#webpage\",\"url\":\"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-%e3%81%ae-%e3%83%87%e3%83%a2%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88-%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%bf%e3%81%9f%e3%80%82\/\",\"name\":\"Godot\\u306e\\u30c7\\u30e2\\u30d7\\u30ed\\u30b8\\u30a7\\u30af\\u30c8\\u3092\\u8aad\\u3093\\u3067\\u307f\\u305f\\u3002 - studioATR\",\"isPartOf\":{\"@id\":\"https:\/\/studio-atr.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-%e3%81%ae-%e3%83%87%e3%83%a2%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88-%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%bf%e3%81%9f%e3%80%82\/#primaryimage\"},\"datePublished\":\"2020-08-28T14:04:29+00:00\",\"dateModified\":\"2020-08-28T14:05:09+00:00\",\"description\":\"Godot \\u306e\\u30d7\\u30ed\\u30b8\\u30a7\\u30af\\u30c8\\u4e00\\u89a7\\u304b\\u3089\\u30c0\\u30a6\\u30f3\\u30ed\\u30fc\\u30c9\\u3067\\u304d\\u308b \\u30c7\\u30e2 \\u30d7\\u30ed\\u30b8\\u30a7\\u30af\\u30c8\\u300c 2D Role Playing Game Demo \\u300d\\u306e\\u4e2d\\u8eab\\u3092\\u8aad\\u3093\\u3067\\u307f\\u305f\\u3002\",\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-%e3%81%ae-%e3%83%87%e3%83%a2%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88-%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%bf%e3%81%9f%e3%80%82\/\"]}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-%e3%81%ae-%e3%83%87%e3%83%a2%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88-%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%bf%e3%81%9f%e3%80%82\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-%e3%81%ae-%e3%83%87%e3%83%a2%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88-%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%bf%e3%81%9f%e3%80%82\/#webpage\"},\"author\":{\"@id\":\"https:\/\/studio-atr.com\/blog\/#\/schema\/person\/ccc09f2d68d8ad961f6c2c7d8e95d4c0\"},\"headline\":\"Godot\\u306e\\u30c7\\u30e2\\u30d7\\u30ed\\u30b8\\u30a7\\u30af\\u30c8\\u3092\\u8aad\\u3093\\u3067\\u307f\\u305f\\u3002\",\"datePublished\":\"2020-08-28T14:04:29+00:00\",\"dateModified\":\"2020-08-28T14:05:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-%e3%81%ae-%e3%83%87%e3%83%a2%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88-%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%bf%e3%81%9f%e3%80%82\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/studio-atr.com\/blog\/#\/schema\/person\/ccc09f2d68d8ad961f6c2c7d8e95d4c0\"},\"image\":{\"@id\":\"https:\/\/studio-atr.com\/blog\/2020\/08\/28\/godot-%e3%81%ae-%e3%83%87%e3%83%a2%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88-%e3%82%92%e8%aa%ad%e3%82%93%e3%81%a7%e3%81%bf%e3%81%9f%e3%80%82\/#primaryimage\"},\"keywords\":\"Godot\",\"articleSection\":\"\\u958b\\u767a\",\"inLanguage\":\"ja\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/studio-atr.com\/blog\/#\/schema\/person\/ccc09f2d68d8ad961f6c2c7d8e95d4c0\",\"name\":\"atamatarin_\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/studio-atr.com\/blog\/#personlogo\",\"inLanguage\":\"ja\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e1004663207edda5e2768639ad25ef51?s=96&d=mm&r=g\",\"caption\":\"atamatarin_\"},\"logo\":{\"@id\":\"https:\/\/studio-atr.com\/blog\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/https:\/\/twitter.com\/atamatarin_\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/studio-atr.com\/blog\/wp-json\/wp\/v2\/posts\/626"}],"collection":[{"href":"https:\/\/studio-atr.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/studio-atr.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/studio-atr.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/studio-atr.com\/blog\/wp-json\/wp\/v2\/comments?post=626"}],"version-history":[{"count":13,"href":"https:\/\/studio-atr.com\/blog\/wp-json\/wp\/v2\/posts\/626\/revisions"}],"predecessor-version":[{"id":640,"href":"https:\/\/studio-atr.com\/blog\/wp-json\/wp\/v2\/posts\/626\/revisions\/640"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studio-atr.com\/blog\/wp-json\/wp\/v2\/media\/637"}],"wp:attachment":[{"href":"https:\/\/studio-atr.com\/blog\/wp-json\/wp\/v2\/media?parent=626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studio-atr.com\/blog\/wp-json\/wp\/v2\/categories?post=626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studio-atr.com\/blog\/wp-json\/wp\/v2\/tags?post=626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}