From 2daf8b5344c8bded6594610a403775c7b1db3b88 Mon Sep 17 00:00:00 2001 From: Justin Bruce Van Horne Date: Wed, 11 Jul 2018 15:01:04 -0700 Subject: [PATCH] Add dashing as a mechanic --- README.md | 17 +++-- engine/include/raptr/game/character.hpp | 21 +++-- engine/include/raptr/game/game.hpp | 32 +++----- engine/src/game/character.cpp | 95 +++++++++++------------ engine/src/game/game.cpp | 72 +++++++++++++----- engine/src/input/controller.cpp | 4 + game/aseprite/raptr.aseprite | Bin 16865 -> 19505 bytes game/characters/raptr.toml | 2 + game/maps/demo/demo.aseprite | Bin 10380 -> 9413 bytes game/maps/demo/demo.png | Bin 8902 -> 7938 bytes game/textures/raptor-spritesheet.png | Bin 5998 -> 8040 bytes game/textures/raptor.json | 97 +++++++++++++++--------- 12 files changed, 199 insertions(+), 141 deletions(-) diff --git a/README.md b/README.md index 057b30e..9859551 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,11 @@ Additional developer insight and blog can be found at ![Our Dinosaur Warrior][raptr-idle] -## Installing and Running v0.1-alpha.5 +## Installing and Running v0.1-alpha.6 It's pretty dang simple under 64-bit Windows right now. -1. [Download the 0.1-alpha.5 Windows 64-bit Release](https://github.com/justinvh/raptr/releases/download/v0.1-alpha.5/raptr-0.1.0-alpha.5-Release-win64.zip) +1. [Download the 0.1-alpha.6 Windows 64-bit Release](https://github.com/justinvh/raptr/releases/download/v0.1-alpha.6/raptr-0.1.0-alpha.6-Release-win64.zip) 2. Extract that anywhere your heart desires. 3. Plug in a 360, GameCube, or Steam controller. 4. Go into the bin/ folder and run `raptr-client.exe` @@ -23,9 +23,9 @@ It's pretty dang simple under 64-bit Windows right now. If you get a complaint about redistributables missing, then try downloading the [Visual C++ Redistributable for Visual Studio 2017 - x64](https://aka.ms/vs/15/release/vc_redist.x64.exe) -## Current State: v0.1-alpha.5 +## Current State: v0.1-alpha.6 -![Feature Mash][raptr-0.1-alpha.5] +![Feature Mash][raptr-0.1-alpha.6] ## Features with some Hyperbole @@ -39,7 +39,7 @@ If you get a complaint about redistributables missing, then try downloading the ## Building and Running Raptr with CMake -1. [Download the 7-zip archive of Raptr's dependencies from here](https://github.com/justinvh/raptr/releases/download/v0.1-alpha.5/vcpkg-export-20180710-003830.7z) +1. [Download the 7-zip archive of Raptr's dependencies from here](https://github.com/justinvh/raptr/releases/download/v0.1-alpha.6/vcpkg-export-20180710-003830.7z) ``` $ git clone https://github.com/justinvh/raptr.git raptr @@ -137,7 +137,11 @@ To be added ## Other Screenshots ([View the Album](https://imgur.com/a/pnREFi5)) -7/8/2018 - Parallax backgrounds and foregrounds, oh my. +7/10/2018 - Multiplayer + parallax + +![Feature Mash][raptr-0.1-alpha.5] + +7/9/2018 - Parallax backgrounds and foregrounds, oh my. ![Feature Mash][raptr-0.1-alpha.4] @@ -174,3 +178,4 @@ To be added [raptr-0.1-alpha.3]: https://i.imgur.com/szO854w.gif [raptr-0.1-alpha.4]: https://i.imgur.com/DQ5CTNO.gif [raptr-0.1-alpha.5]: https://i.imgur.com/p71vkhy.gif +[raptr-0.1-alpha.6]: https://i.imgur.com/VCSDNqM.gif diff --git a/engine/include/raptr/game/character.hpp b/engine/include/raptr/game/character.hpp index 361d23a..a97cbc3 100644 --- a/engine/include/raptr/game/character.hpp +++ b/engine/include/raptr/game/character.hpp @@ -8,15 +8,14 @@ #include #include #include +#include namespace raptr { class Game; class Sprite; -class Controller; class Renderer; class Filesystem; -struct ControllerState; /*! A character is a subclass of an entity that is intended to be controlled. @@ -132,6 +131,12 @@ class Character : public Entity { //! How long the character has been jumping int64_t jump_time_us; + int64_t dash_length_us; + + int64_t dash_time_us; + + int32_t dash_speed; + //! Current jump count uint32_t jump_count; @@ -150,17 +155,9 @@ class Character : public Entity { //! The initial velocity (v(0)) for computing how high the character will jump int32_t jump_vel; - //! Dashing is a multiplier of 1.25 - bool dashing; - - //! Dash multiplier - double dash_scale; - - int64_t dash_check_timer; - - int32_t dash_move_check; - int32_t bunny_hop_count; + + ControllerState last_controller_state; }; } // namespace raptr diff --git a/engine/include/raptr/game/game.hpp b/engine/include/raptr/game/game.hpp index c0690cd..5f2a3a2 100644 --- a/engine/include/raptr/game/game.hpp +++ b/engine/include/raptr/game/game.hpp @@ -62,7 +62,7 @@ class Game : public std::enable_shared_from_this, public Serializable { template void add_event(T* event) { - engine_events.push_back(EngineEvent::create(event)); + engine_events_buffers[engine_event_index].push_back(EngineEvent::create(event)); } void dispatch_event(const std::shared_ptr& event); @@ -88,29 +88,19 @@ class Game : public std::enable_shared_from_this, public Serializable { Spawn an entity to the world */ void spawn_staticmesh(const std::string& path, - StaticMeshSpawnEvent::Callback callback = [](auto&a) {}) - { - StaticMeshSpawnEvent* event = new StaticMeshSpawnEvent(); - auto g = xg::newGuid(); - event->guid = g.bytes(); - event->path = path; - event->callback = callback; - this->add_event(event); - } + StaticMeshSpawnEvent::Callback callback = [](auto&a) {}); + /*! Spawn an entity to the world */ void spawn_character(const std::string& path, - CharacterSpawnEvent::Callback callback = [](auto&a) {}) - { - CharacterSpawnEvent* event = new CharacterSpawnEvent(); - auto g = xg::newGuid(); - event->guid = g.bytes(); - event->path = "characters/" + path + ".toml"; - event->callback = callback; - this->add_event(event); - } + CharacterSpawnEvent::Callback callback = [](auto&a) {}); + + /* + */ + void spawn_player(int32_t controller_id, + CharacterSpawnEvent::Callback callback = [](auto&a) {}); /*! Run the game and manage maintaining a healthy FPS @@ -187,6 +177,7 @@ class Game : public std::enable_shared_from_this, public Serializable { //! A mapping of controller device ID to controller instances std::map> controllers; + std::map>> controller_to_character; //! A list of all loaded entities in the game std::vector> entities; @@ -213,7 +204,8 @@ class Game : public std::enable_shared_from_this, public Serializable { int64_t frame_last_time; - std::vector> engine_events; + int32_t engine_event_index = 0; + std::vector> engine_events_buffers[2]; public: //! If set, then all initialization has happened successfully diff --git a/engine/src/game/character.cpp b/engine/src/game/character.cpp index 35cec51..ceed295 100644 --- a/engine/src/game/character.cpp +++ b/engine/src/game/character.cpp @@ -60,7 +60,8 @@ std::shared_ptr Character::from_toml(const FileInfo& toml_path) "character.jumps_allowed", "character.jump_perfect_scale", "character.fast_fall_scale", - "character.dash_scale", + "character.dash_speed", + "character.dash_length_ms", "sprite.path", "sprite.scale" }; @@ -103,8 +104,9 @@ std::shared_ptr Character::from_toml(const FileInfo& toml_path) character->sprite->x = 0; character->sprite->y = 0; character->jump_count = 0; - character->dash_scale = dict["character.dash_scale"]->as(); - character->dash_check_timer = 0; + character->dash_speed = dict["character.dash_speed"]->as(); + character->dash_length_us = dict["character.dash_length_ms"]->as() * 1e3; + character->dash_time_us = 0; character->do_pixel_collision_test = false; if (character->sprite->has_animation("Collision")) { @@ -138,6 +140,18 @@ void Character::think(std::shared_ptr& game) jump_time_us += delta_us; } + bool in_dash = false; + if (dash_time_us > 0) { + in_dash = true; + dash_time_us += delta_us; + } + + if (dash_time_us > dash_length_us) { + in_dash = false; + dash_time_us = 0; + this->on_left_joy(this->last_controller_state); + } + acc.y = game->gravity; // External forces, like gravity @@ -145,14 +159,14 @@ void Character::think(std::shared_ptr& game) fall_check.y += 0.1; auto intersected_entity = game->intersect_world(this, fall_check); - if (!intersected_entity) { + if (!intersected_entity && !in_dash) { if (fast_fall) { vel.y += fast_fall_scale * game->gravity * delta_us / 1e6; } else { vel.y += game->gravity * delta_us / 1e6; } falling = true; - } else { + } else if (!in_dash) { if (falling) { jump_count = 0; jump_time_us = 0; @@ -163,7 +177,9 @@ void Character::think(std::shared_ptr& game) vel.x = 0; } - if (vel.x > walk_speed) { + if (in_dash) { + sprite->set_animation("Dash"); + } else if (vel.x > walk_speed) { sprite->set_animation("Run"); } else if (vel.x > 0) { sprite->set_animation("Walk"); @@ -208,6 +224,8 @@ void Character::think(std::shared_ptr& game) pos.x = want_x.x; } else { vel.x = 0; + dash_time_us = 0; + sprite->set_animation("Idle"); } int32_t steps_y = static_cast((std::abs(pos.y - want_y.y) / 4) + 1); @@ -269,6 +287,7 @@ void Character::stop() moving = false; auto& vel = this->velocity(); vel.x = 0.0; + dash_time_us = 0; if (!falling) { sprite->set_animation("Idle"); } @@ -276,55 +295,25 @@ void Character::stop() bool Character::on_left_joy(const ControllerState& state) { + this->last_controller_state = state; auto& vel = this->velocity(); float mag_x = std::fabs(state.x); - int64_t dash_delta_ms = static_cast((clock::ticks() - dash_check_timer) / 1e3); - // Turn around boosted dash - if (!dashing) { - bool can_dash = dash_delta_ms < 250; - if (state.x < -0.95) { - if (dash_move_check == 1 && can_dash) { - dashing = true; - } else if (dash_move_check != -1) { - dash_move_check = -1; - dash_check_timer = clock::ticks(); - } - } else if (state.x > 0.95) { - if (dash_move_check == -1 && can_dash) { - dashing = true; - } else if (dash_move_check != 1) { - dash_move_check = 1; - dash_check_timer = clock::ticks(); - } + if (dash_time_us > 0) { + if (mag_x < 0.01f && !falling) { + this->stop(); + } + return false; } - if (mag_x < 0.95) { - dashing = false; - } - + // Turn around boosted dash if (mag_x < 0.01f) { this->stop(); - - if (dash_delta_ms > 250) { - dash_move_check = 0; - } - } else if (mag_x < 0.75f) { this->walk(state.x); } else if (mag_x >= 0.75f) { - if (dashing) { - float new_x = 0.0f; - if (state.x < 0.0f) { - new_x = static_cast(-dash_scale); - } else { - new_x = static_cast(dash_scale); - } - this->run(new_x); - } else { - this->run(state.x); - } + this->run(state.x); } if (falling && state.y > 0.5) { @@ -352,6 +341,19 @@ bool Character::on_button_down(const ControllerState& state) sprite->set_animation("Jump"); ++jump_count; } + + if (state.button == Button::x && dash_time_us == 0 && jump_count < jumps_allowed) { + sprite->set_animation("Dash"); + dash_time_us = 1; + if (sprite->flip_x) { + vel.x += dash_speed; + } else { + vel.x -= dash_speed; + } + + + vel.y = 0; + } return false; } @@ -415,11 +417,6 @@ void Character::serialize(std::vector& list) CNF(walk_speed), CNF(run_speed), CNF(jump_vel), - CNF(dashing), - CNF(dashing), - CNF(dash_scale), - CNF(dash_check_timer), - CNF(dash_move_check), CNF(bunny_hop_count) }; diff --git a/engine/src/game/game.cpp b/engine/src/game/game.cpp index 5cc8530..e666c1e 100644 --- a/engine/src/game/game.cpp +++ b/engine/src/game/game.cpp @@ -106,6 +106,14 @@ void Game::handle_controller_event(const ControllerEvent& controller_event) const SDL_Event& e = controller_event.sdl_event; const int32_t& controller_id = controller_event.controller_id; + // Is this a new character? + if (e.type == SDL_CONTROLLERBUTTONDOWN && + controller_to_character.find(controller_id) == controller_to_character.end()) + { + this->spawn_player(controller_id); + return; + } + if (e.type == SDL_CONTROLLERAXISMOTION || e.type == SDL_CONTROLLERBUTTONDOWN || e.type == SDL_CONTROLLERBUTTONUP) { controllers[controller_id]->process_event(e); } else if (e.type == SDL_JOYAXISMOTION || e.type == SDL_JOYBUTTONDOWN || e.type == SDL_JOYBUTTONUP) { @@ -172,7 +180,9 @@ bool Game::process_engine_events() return true; } - for (auto& engine_event : engine_events) { + auto& current_events = this->engine_events_buffers[this->engine_event_index]; + this->engine_event_index = (this->engine_event_index + 1) % 2; + for (auto& engine_event : current_events) { this->dispatch_event(engine_event); } @@ -205,7 +215,7 @@ bool Game::process_engine_events() renderer->run_frame(); } - engine_events.clear(); + current_events.clear(); frame_last_time = clock::ticks(); return true; @@ -269,6 +279,45 @@ std::shared_ptr Game::intersect_world(Entity* entity, const Rect& bbox) return nullptr; } +void Game::spawn_player(int32_t controller_id, CharacterSpawnEvent::Callback callback) +{ + this->spawn_character("raptr", [&, controller_id, callback](auto& character) + { + character->position().y = 1000; + character->flashlight = true; + character->attach_controller(controllers[controller_id]); + renderer->camera_follow(character); + controller_to_character[controller_id].push_back(character); + callback(character); + }); +} + +/*! +Spawn an entity to the world +*/ +void Game::spawn_staticmesh(const std::string& path, StaticMeshSpawnEvent::Callback callback) +{ + StaticMeshSpawnEvent* event = new StaticMeshSpawnEvent(); + auto g = xg::newGuid(); + event->guid = g.bytes(); + event->path = path; + event->callback = callback; + this->add_event(event); +} + +/*! +Spawn an entity to the world +*/ +void Game::spawn_character(const std::string& path, CharacterSpawnEvent::Callback callback) +{ + CharacterSpawnEvent* event = new CharacterSpawnEvent(); + auto g = xg::newGuid(); + event->guid = g.bytes(); + event->path = "characters/" + path + ".toml"; + event->callback = callback; + this->add_event(event); +} + bool Game::init() { SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER); @@ -320,6 +369,7 @@ bool Game::init_controllers() int32_t num_gamepads = 0; for (int32_t i = 0; i < SDL_NumJoysticks(); ++i) { + num_gamepads++; } @@ -424,24 +474,6 @@ bool Game::init_demo() } this->spawn_staticmesh("staticmeshes/demo.toml"); - - int x = 0; - int y = -200; - for (auto controller : controllers) { - int32_t controller_id = controller.first; - this->spawn_character("raptr", [&, x, y, controller_id](auto& character) - { - auto& pos = character->position(); - pos.x = x; - pos.y = y; - character->flashlight = true; - character->attach_controller(controllers[controller_id]); - renderer->camera_follow(character); - }); - - x += 64; - } - return true; } diff --git a/engine/src/input/controller.cpp b/engine/src/input/controller.cpp index a6e440a..ddba51d 100644 --- a/engine/src/input/controller.cpp +++ b/engine/src/input/controller.cpp @@ -130,6 +130,10 @@ ControllerState state_from_joystick_event(SDL_GameController* controller, const state.button = Button::a; } else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_B) { state.button = Button::b; + } else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_X) { + state.button = Button::x; + } else if (e.cbutton.button == SDL_CONTROLLER_BUTTON_Y) { + state.button = Button::y; } else { state.button = Button::not_set; } diff --git a/game/aseprite/raptr.aseprite b/game/aseprite/raptr.aseprite index cd04abf1b1d44a5287187bb6857de76c3faca4f6..6b6aad09b001a1a00fd3b34cf2bd9d3c51ef46c5 100644 GIT binary patch delta 2492 zcmds3eKb^Q7=N#sJ9ij_X@-f_L`l?S^4(%m*4ehUPn!-&;*f7~ioqB)M_Hxf-Atc8 zvXoMc;gmj*PCm{`*h(j5v!z;DD<37Q+4tT``uJnd{@I;#&$;(`f6woEo_XHq{oO7Z zrZ|8R!leM*FPM@+hzTPa0He>eGIm~q_c3ENYd+kDaiAA=pWt8s81PxpRV_hE2X1~b zn^-^#sDTL=4XoM{p$&8=n9w5*7KH_eZ`1?qkI^{z-Y+UjJQ;94#k)oXMT@yW|6@B1 zto92q06YK;CoV96YhbiraDade#b-hh%^AaBmxcsWgTAaxj0P7lJBUPTl@6ou1Pq7E zwD!Pw#uSWzueH*l3Bjd2Vqq!4Kwf8wRLZLhqeBz*NQBQ+FGg6AM&1{gPI2wP=h}aa}-YE=fm~74CK?mD@Q)9##yjbkIbfC zZx5CKW?0Xjj?t98Y!?hUS#owDa2e+$0{d_a|5pIEAsN8JuyQ=HT7r(6i}Ptpg%OPm z6NPUfa;ds-C^XJ_o0)VCwKo``0j-c%2fA@S0CeXn8|qAU;XWX!C8^I+_@q_C+re^T@F2v*LC^(Mm` zCVNgU>0HNC_@rY6i%wOx9ln}*ZSmmJwxQxR<*5zwdizv4*WEUxn_ZBS{b+?mKJZs# zN?H4j{9B@hPqS=)75mSUpGq`I9+4*ig@4gL1yvi_ImY|i7|6s0EV$R)88y;Y*kZLn z80)vksnNi(d0(5+-E{%GO|umnZ7z)fcNf!SAppEund;s40MmdP{6{B}mp~EY07G-} z;ZM^AOt?Xd3-55)3#|zOv5Kf=#XJ-?)og5*hQ+tu%-=QbpsXuat&3S_Wu4n2Yyy=> zb=>V}kKBh!`7{{@qPONMb0}&8=tAj~wb04bMQTP_n5YV^3BfQFJnqPtN~Mwl^-&G7+nckvZMU6AtZiJ9Bs5&ygA`!4r8oI6Kv z=<{`L)2n?Mw^jQ4f%X}7Q~#JTXTZCtby1Mz-d>@{;mk8eVd>@qo^Q!@UBdwHv?YUi z-LW2WB4qeLQDfTeJY!K6c1wI-uf_4n<)FrlI47IDn6t6^!_ng4wt@P#;G&-uh7}TT zrC-QGh4tW$J`r>2vRzIUHKSFJg~uH|Lw)DH@(w;Z>~(ssP0+dG_}rg}vYU^V%ep)L zo72lHM)faXRa>R$UuZBY`>X74;3sqY^j&}PkLK2nn%jGFKh$4l$^})?`~|Tmhh=pJ zliG9?kujAwGv)oI;kzEt=>pv}?$gb^*Y``aFFcO+Xm?+6F|nD5Pr}2U`!9_ht`mit zt{IS*ly6d2eRnl7U|6H?YFlK1XSGjg@s!<~x^-#mKX;xK~fs`36Up$Gf|v^;B)wR_~FVXjZDK1AA5G zPLg@ck9BsWZOI-S@)GB8q^!=D`|Eux&WhJo+!?H5g>4rjy#u0PpAc zIMrtiCQU6wS|TxDPU;U%L-NUjkp`XUocFd6)6h`_lg#Am?@te%cc+I35{V2`Qib@_ z_aiShAe8;=`4~<|XBiF7lr} zERIaP1Mu@}Y+vtF=D-(B!5~|dmjS@)(D%8Lu~Xx35a4Kga}31Mbj=c>w5jn_ zodM#3G@?s{3V$FFG(tjjrhbXwZ9dr=G(qC}xd6xf^$M7=TCg!0+l2!Rutn~`P>jSF zy0raFgS%tj;*cmY0n>~HxFGtN7SC-7;X^4|lqi871FmhDnz0q*XVX&es``K&pk!tAMS2)==S#FuYERhu@(#vXsqBS9l4dB$_dY1Lj5l6Bvj}AdxS_Y zLM}5%8pl0hxrY}L`iswUp&RHZkqEY{WG!rzLrX4kBUy}F7s?M81aljK~LrRC|-Ac L!#@S54>$e+R0IvE diff --git a/game/characters/raptr.toml b/game/characters/raptr.toml index b235005..158ad98 100644 --- a/game/characters/raptr.toml +++ b/game/characters/raptr.toml @@ -7,6 +7,8 @@ jumps_allowed = 2 jump_perfect_scale = 1.50 fast_fall_scale = 2.5 dash_scale = 1.25 +dash_speed = 650 +dash_length_ms = 250 [sprite] path = "textures/raptor.json" diff --git a/game/maps/demo/demo.aseprite b/game/maps/demo/demo.aseprite index 7fbde845161918df0639b0cf8be8f1af0f5352c3..58e7ea02a60dec0501351d0de32a920b4a8427ad 100644 GIT binary patch literal 9413 zcmcIpd0bORyFLLCl})V$aRFO5tO6=1B9Np-#T`&Vkxf(t1c@5909jlLZ585zplksZ zQB*)y*%Fj$RD=W(A_NjNK!6Yegb=ddNoZ}q<$k~W{c-by=bSU|%sbEX%$zxAl2^k%wj%OCyO{X@S>l}ZIc z)0mT!1I`Z|H~^5`t^gR4EeB|}I}0FekvqWm@748xO;qC+yIO!oMu7mke^-|jMyc_L z#dCnmXPy8!R4)P8d}a(_l3UlUu6mK z(W6HI9UUFjC6GFU8cP7oP>=W);3)V5jsiP@m%vEiBCrtn2h0P`0o#CQz%bwzunPDD zOacx8dw@5<7~l%91o#2W08RiKfCs<;pdLsEx`Ak*7{~=$fl#0lNCf(TIG_y30-Asz zpaw_*I)DhE0MG~A0dWmu$Xv~MnfCOB2Gvq@p}hf^!1K#C{O9mSXHa+HGOfS0{-@I! z(5{nVfiTTY@VC%x$QczD7J?2zh07K|kj}E{nCfdL^{o?=$?s-{b9SccxS7tJ{{}&y zH3})*T8(_o>d&rJsaiYlho9WJ8Fe@2`{(V>TPq*89KZ1by>R}cPyAC`hg}Q$QHc#r z*5mKcVqK{B;Yd$XfyCP*kMd?+Q5^zy%s^@n^|~T-3G(vJfLoKo9|qIxd+*e6#zW*S zJm<*`&^msnAte?gYMa;Ue=;>lki6f4B*W`Mw3c+%X1iYx4_a?*L`S>S!4M!r(hxpCOW!ok(4JN#LcS>f~{|{(R+wvbuX1EL@GA~Du$+Y>~4^;o1(VHVM4f= zRSMl6xT8}>)+uZ=A&P&G#9#Nwt^yJ7$=UVWXzOxh3Q|F<*)#*gy0w8MXz#>F94w9*-@ z>{&U-Pu}VKSPiN{5dgiQ$v62H= z(giE7e#d#sqs0Ylwlj{WoXQCuw!cT1pBUP5G3$qx#zvBVTb+JHl2gzEx0mbjYdiCd z>kc)2x6g*YX(ZDf`D=sxX;?l-a?WZ)$js^;SvGSlF5ISk`xKsOZq7Y^sQYA2XqP(O zFB0#!1&z63^8Mo^M!DVGi>8=ni=5vBl%9nJ)y?0M-5I2EyKi1DjA}01pB^^nVcdva zz5J<9-Oq!0lB?DSnl5-4I0Qv8Zm!DE8p@V^`PKoCUQ@l;Gku6QmDzjNb~LjiYkzwD zoPjrSBj3{XHQ}R+Jv02e67^PV)9!SS-G7@;NUr6=E47BkPaGbRH*rYi$~(@og{V0H zAJ2^1mpWwIN*2)F#a%&%k?0!vksY~0J0iY)M+ADc_VDXWn;On8n+ZG_w{j7hh7H%T zt!X4~PuYZb7tVe(GSsIqC^N}I`I46U`XL82MtMz*Zm~}Y?Xv1h_cE5pO z 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 literal 10380 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 TnU0IaiD%{aDUqV_&-?xd8-gWC diff --git a/game/maps/demo/demo.png b/game/maps/demo/demo.png index d235f4f08f7671caacd4c169b1c26a596f8eb9ad..d79b0227435a3b0c50e680160d4f1f3c881d4e41 100644 GIT binary patch literal 7938 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 E113UtF#rGn literal 8902 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 diff --git a/game/textures/raptor-spritesheet.png b/game/textures/raptor-spritesheet.png index f4dddac5bb09851b498c84c0d003f3c1604bae5a..c673da91a653cc8ed4cf5e66ee254e69946593db 100644 GIT binary patch literal 8040 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