A downloadable game for Windows, Linux, and Android

Foxy Misfortunes

A simple top-down shooter game made in Castle Game Engine for Lewdie Jam.

Content warning

This game contains material suitable only for mature audience. You can play this game only if you are a legal adult.

Optional censored mode (off by default) removes unnecessary detail from the graphics but doesn't change the mature nature of the game.


Follow the (mis)adventures of Foxy and her fellow students from the College of Magic who decided to test their skills, were curious or simply silly and by chance got themselves in embarrassing situations in the end leaving them significantly less dressed than it is socially acceptable.


The Player controls Foxy or other student, movement is done using WASD or arrow keys on Desktop or touch controller in the left bottom of the screen on Android.

Click/tap the map to shoot in that direction. Each shot costs mana, total character's mana is displayed on top of the screen.

ESC key pauses the game, there's also an on-screen button. F11 toggles full screen mode, F5 to make a screenshot.

Picking up coins and powerups and also killing monsters grants points. The goal of the game is to earn as much points as possible.

If monsters catch the Player character's, she loses clothes. She can take 4 hits total.

There are many types of monsters and powerups available in-game, from time to time a tutorial message pops up with additional information.

Earn 1500 (750 on Android) points as Foxy to unlock Cheety as a playable character! Earn 1600/800 as Cheety to unlock Wolfy! Earn 1700/850 as Wolfy to unlock Squirrly. Earn 1800/900 as Squirrly to unlock Deery. :)

Support the development

If you like the game and want more content like this - play the game and have fun! As simple as that! The download count alone is something that helps me to keep going. Maybe even spread the word around social networks to help more people have fun?

In case you want to help even more - leave a good comment at the game's page. It's free and shouldn't take you long, but you really can't overestimate what miracles can player feedback do to my motivation :D Did you like the game? Why not tell about it? Or maybe you see something that can be improved? - I can't promise to implement every requested features (there are limits to what can be done within the reasonable amount of time), but will most certainly consider it.

And if you really want to be more eloquent and believe that merely saying "thank you" is not enough... No, I don't have a Patreon, at least not yet, but I highly encourage you to consider supporting Castle Game Engine https://www.patreon.com/castleengine . If it weren't for this Game Engine this game would have never existed. And thanks to this Engine I've got my full-time dream job as a game developer, so by supporting it you are indirectly financially supporting me too ;)


Game by EugeneLoza

Created in Castle Game Engine (castle-engine.io).

Music by Ivan Stanton (northivanastan) and Ted Kerr (Wolfgang)

Sound by SubspaceAudio, altfuture and reg7783

Character art by EugeneLoza

UI by pzUH

Map tileset by pzUH, StudioFibonacci, sixsixfive, rMiszczak, bocian, Arvin61r58 et. al.

Fonts by Wojciech Kalinowski and Peikos

Install instructions


No installation required - just extract the game into one folder and play.


No installation required - just extract the game into one folder and play.

In some situations you might also need to set "executable" flag for the binary (`chmod +x foxy-misfortunes` or through file properties in the file manager).

You need the following libraries installed to play the game:

* libopenal1
* libpng
* zlib1g
* libvorbis
* libfreetype6
* You also need X-system, GTK at least version 2 and OpenGL drivers for your videocard, however, you are very likely to have those already installed :)


Download and install the APK.  The game requires Android 4.2 and higher.

Note that you may need to allow installation of third-party APKs in phone/tablet Settings.


foxy-misfortunes-1.8.509-android-release.apk 20 MB
foxy-misfortunes-1.8.509-linux-x86_64.tar.gz 17 MB
foxy-misfortunes-1.8.509-win32-i386.zip 16 MB
foxy-misfortunes-1.8.509-win64-x86_64.zip 17 MB

Development log

View all posts


Log in with itch.io to leave a comment.


Hello! There's some issue with the pack of the game. It won't start. Can you help me, please? Error: Exception "FreeTypeException":
Error 1 while loading font 0 from file C:\Users\??????\AppData\Local\foxy-misfortunes\cache_font_1138746899.ttf

(1 edit) (+1)

Also, cache_font_******  - new number and file itself appears in that direcoty while trying to launch the game. What could go wrong?


Log for "foxy-misfortunes".

  Version: 1.7.451.

  Started on 2021-12-03 at 14:41:57.

  Castle Game Engine version: 7.0-alpha.snapshot (unstable).

  Compiled with FPC 3.2.2.

  Platform: Desktop, OS: Win64, CPU: x86_64 (64-bit).

LibPng detected (version 1.4.0).

WinAPI: Dots (pixels) per inch is 96.00 (1.00 * default 96.00)

-------------------- Rendering Context Initialization begin

OpenGL information (detected by foxy-misfortunes):



  Version string: 4.6.0 - Build

  Version parsed: major: 4, minor: 6, release exists: True, release: 0, vendor-specific information: "- Build"

  Vendor-specific version parsed: major: 26, minor: 20, release: 100

  Vendor: Intel

  Vendor type: Intel

  Renderer: Intel(R) HD Graphics 620

  Fglrx (ATI on Linux): False

  Mesa: False

  Buggy glGenerateMipmap(EXT): False


  Buggy VBO: False

  Buggy shader shadow map: False

  Buggy FBO rendering to multi-sampling texture: False

  Buggy FBO rendering to cube map texture: False

  Buggy swap buffers with non-standard glViewport: False

  Buggy 32-bit depth buffer: False

  Buggy GLSL gl_FrontFacing: False

  Buggy GLSL read varying: False

  Buggy Pure Shader Pipeline: False

  Buggy Texture Size Above 2048: False

  Buggy Shader Bump Mapping num_steps: False


Real versions available:

(checks both version string and actual functions availability in GL library, to secure from buggy implementations)

  1.2: True

  1.3: True

  1.4: True

  1.5: True

  2.0: True

  2.1: True

  3.0: True

  3.1: True

  3.2: True

  3.3: True

  4.0: True



  Shaders (GLSL) support: Standard

  => Enable deprecated (fixed-function) support: False

  Multi-texturing: True

  Framebuffer Object: Standard (or ARB "core extension")

  Multi-sampling for FBO buffers and textures: True

  Vertex Buffer Object: True

  GenerateMipmap available (and reliable): True

  Cube map textures: Standard


  3D textures: Standard

  Textures non-power-of-2: True

  Blend constant parameter: True

  Float textures: True

  Depth textures: True

  Packed depth + stencil: True

  All extensions: GL_3DFX_texture_compression_FXT1 GL_AMD_depth_clamp_separate GL_AMD_vertex_shader_layer GL_AMD_vertex_shader_viewport_index GL_ARB_ES2_compatibility GL_ARB_ES3_1_compatibility GL_ARB_ES3_compatibility GL_ARB_arrays_of_arrays GL_ARB_base_instance GL_ARB_bindless_texture GL_ARB_blend_func_extended GL_ARB_buffer_storage GL_ARB_cl_event GL_ARB_clear_buffer_object GL_ARB_clear_texture GL_ARB_clip_control GL_ARB_color_buffer_float GL_ARB_compatibility GL_ARB_compressed_texture_pixel_storage GL_ARB_compute_shader GL_ARB_conditional_render_inverted GL_ARB_conservative_depth GL_ARB_copy_buffer GL_ARB_copy_image GL_ARB_cull_distance GL_ARB_debug_output GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_derivative_control GL_ARB_direct_state_access GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_draw_indirect GL_ARB_draw_instanced GL_ARB_enhanced_layouts GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_layer_viewport GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_fragment_shader_interlock GL_ARB_framebuffer_no_attachments GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_geometry_shader4 GL_ARB_get_program_binary GL_ARB_get_texture_sub_image GL_ARB_gl_spirv GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_indirect_parameters GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_internalformat_query2 GL_ARB_invalidate_subdata GL_ARB_map_buffer_alignment GL_ARB_map_buffer_range GL_ARB_multi_bind GL_ARB_multi_draw_indirect GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_occlusion_query2 GL_ARB_pipeline_statistics_query GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_polygon_offset_clamp GL_ARB_post_depth_coverage GL_ARB_program_interface_query GL_ARB_provoking_vertex GL_ARB_query_buffer_object GL_ARB_robust_buffer_access_behavior GL_ARB_robustness GL_ARB_robustness_isolation GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_seamless_cubemap_per_texture GL_ARB_separate_shader_objects GL_ARB_shader_atomic_counter_ops GL_ARB_shader_atomic_counters GL_ARB_shader_bit_encoding GL_ARB_shader_draw_parameters GL_ARB_shader_group_vote GL_ARB_shader_image_load_store GL_ARB_shader_image_size GL_ARB_shader_objects GL_ARB_shader_precision GL_ARB_shader_stencil_export GL_ARB_shader_storage_buffer_object GL_ARB_shader_subroutine GL_ARB_shader_texture_image_samples GL_ARB_shading_language_100 GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_shadow GL_ARB_spirv_extensions GL_ARB_stencil_texturing GL_ARB_sync GL_ARB_tessellation_shader GL_ARB_texture_barrier GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_buffer_range GL_ARB_texture_compression GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_cube_map_array GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_filter_anisotropic GL_ARB_texture_float GL_ARB_texture_gather GL_ARB_texture_mirror_clamp_to_edge GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_levels GL_ARB_texture_query_lod GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_rgb10_a2ui GL_ARB_texture_stencil8 GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_texture_swizzle GL_ARB_texture_view GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_transform_feedback_instanced GL_ARB_transform_feedback_overflow_query GL_ARB_transpose_matrix GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit GL_ARB_vertex_attrib_binding GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_vertex_type_10f_11f_11f_rev GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ARB_window_pos GL_ATI_separate_stencil GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_clip_volume_hint GL_EXT_compiled_vertex_array GL_EXT_direct_state_access GL_EXT_draw_buffers2 GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_object GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_packed_pixels GL_EXT_polygon_offset_clamp GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shader_framebuffer_fetch GL_EXT_shader_integer_mix GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture3D GL_EXT_texture_array GL_EXT_texture_compression_s3tc GL_EXT_texture_edge_clamp GL_EXT_texture_env_add GL_EXT_texture_env_combine GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod_bias GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_texture_shared_exponent GL_EXT_texture_snorm GL_EXT_texture_storage GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_transform_feedback GL_IBM_texture_mirrored_repeat GL_INTEL_conservative_rasterization GL_INTEL_fragment_shader_ordering GL_INTEL_framebuffer_CMAA GL_INTEL_map_texture GL_INTEL_multi_rate_fragment_shader GL_INTEL_performance_query GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_KHR_context_flush_control GL_KHR_debug GL_KHR_no_error GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_ldr GL_NV_blend_square GL_NV_conditional_render GL_NV_primitive_restart GL_NV_texgen_reflection GL_SGIS_generate_mipmap GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_SUN_multi_draw_arrays GL_WIN_swap_hint WGL_EXT_swap_control


Current buffers bit depths:

  Color (red / green / blue / alpha): 8 / 8 / 8 / 8

  Depth: 24

  Index: 32

  Stencil: 8

  Accumulation (red / green / blue / alpha): 16 / 16 / 16 / 16

  Double buffer: True

  Multi-sampling (full-screen anti-aliasing) possible: True

    Current: 1 samples per pixel


Stack depths:

  Attributes: 16

  Client attributes: 16

  Modelview: 32

  Projection: 4

  Texture: 10

  Name: 128



  Max clip planes: 8

  Max lights (fixed-function limit): 8

  Max eval order: 32

  Max list nesting: 64

  Max pixel map table: 65536

  Max texture size: 16384

  Max viewport dims (width, height): 16384 16384

  Max texture units (shader pipeline): 32

  Max texture units (fixed-function): 8

  Max cube map texture size: 16384

  Max 3d texture size: 2048

  Max texture max anisotropy: 16

  Query counter bits (for occlusion query): 64

  Max renderbuffer size: 16384


Memory (in Kb):

  Total: 0 (unknown)

  Current: 0 (unknown)

  Current for VBO: 0 (unknown)

  Current for Textures: 0 (unknown)

  Current for Renderbuffers: 0 (unknown)

-------------------- Rendering Context Initialization end

Path: Program data path detected as "file:///C:/Users/%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BB/Desktop/foxy-misfortunes/data/"

Loading font through a temporary file "file:///C:/Users/%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BB/AppData/Local/foxy-misfortunes/cache_font_32875645.ttf"

Exception: Exception "FreeTypeException":

Error 1 while loading font 0 from file C:\Users\Кирилл\AppData\Local\foxy-misfortunes\cache_font_32875645.ttf


















Warning: Font is missing glyph for character К (Unicode number 1050)

Warning: Font is missing glyph for character К (Unicode number 1050)

Warning: Font is missing glyph for character и (Unicode number 1080)

Warning: Font is missing glyph for character и (Unicode number 1080)

Warning: Font is missing glyph for character р (Unicode number 1088)

Warning: Font is missing glyph for character р (Unicode number 1088)

Warning: Font is missing glyph for character и (Unicode number 1080)

Warning: Font is missing glyph for character и (Unicode number 1080)

Warning: Font is missing glyph for character л (Unicode number 1083)

Warning: Font is missing glyph for character л (Unicode number 1083)

Warning: No further warnings about missing glyphs will be reported for this font (to avoid slowing down the application by flooding the log with warnings)

Thank you for report! I’ll look into it ASAP.

I looked at the problem and it seems to be a bit complex - it’s a bug of FreeType library (though definitely should be possible to fix). However, in your case there should be a simple workaround - try putting the game into folder with only ASCII characters, e.g. not on the desktop but somewhere on D:\Downloads\foxy-misfortunes... (just copy-paste it)


Попробую (увидел, что Вы и по-русски разговариваете)

(1 edit) (+1)

Спасибо! Заработало. А я думал, что проблема в шрифте в самой папке с игрой - система на русском и имя пользователя соответствующее. Всё оказалось гораздо проще)

Да, это ошибка в библиотеке, её можно исправить, просто “сегодня” не получится :) Рад, что заработало, а корень проблемы попробуем исправить в ближайшее время.

G'day, Eugene! At first i wanna ask you - da you speak rus? depending on the answer, the conversation will go differently.  I will explain why later:0

Да, есть такое немного :)

//Yes, I can speak Russian.


кашерно , а то на англе язык сломаю попытаться построить грамотный диалог . Не спрашивал бы про это , не возымея , глядя на твой ник, мысли, что ты русский :) 

В общем...для начала хотел бы спросить , чем для тебя является данный проект ? Первая проба в NSFW , я так поглядел. В целом для тебя это хобби или что-то более этого?

Геймдев - моё хобби с раннего детства. Недавно захотел попробовать что-то “новенькое” и, похоже, не промахнулся :)

Ну и работаю гейм девелопером на работе тоже, уже второй год :)

(1 edit)

Приятно видеть человека , любящего своё хобби и относящегося к нему не просто как к чему-то, на что тратишь время :) 

В Таком случае могу больше спросить конкретно про эту игру - раз уж это первый и очень удачный опыт, в будущем, уверен, будет выходить больше и качественнее . Но сейчас пойдёт речь конкретно от этой игре - планируешь ли ты ее как-то ещё развивать ? Или может уже метишь в какой-нибудь финальный апдейт ?:0 

Если первый вариант, могу пару идей и предложений накидать .

К сожалению, эта игра была изначальна “ограничена в масштабе”. Т.е. она была сделана “чтобы получить быстрый результат” (для гейм-джема). Без существенной переработки (так называемого рефактора) значительно расширить её не получится. А “рефактор” это дело скучное и грустное, а главное, не гарантирует что действительно откроет дорогу к существенным улучшениям.

Пока, я планирую добавить ещё одного персонажа и картинку-поздравление “с победой”. А также несколько новых типов противников (в сумме будет 8 разных врагов - в трёх группах по способностям), туториал и всякие разные мелочи. Вполне возможно что получится без особых сложностей добавить “варианты” уже существующих персонажей (с разными одёжками и раскрасками). Это будет финальный апдейт. По идее можно попробовать что-то ещё добавить, но, опять-таки “много” не получится (за идеи буду благодарен, но обещать что-то, увы, не могу :))

Гораздо эффективнее после этого будет заняться “новым проектом”. Сейчас отложен другой, более масштабный проект (тоже немного NSFW :)) Морского Боя, уже почти год в разработке. Но по оценке мне нужно часов 150-200 только на одно рисование. И вчера-сегодня меня “осенило”, что, возможно, веселее будет сделать (вполне возможно, параллельно) проект с меньшим количеством картинок и более простым интерфейсом, набросал геймдизайн экшен-рогалика в стиле Unexplored и Enchanted Cave (т.е. по факту что-то близкое к текущей игре, но с существенно большим размахом - инвентарём, навыками, уровнями, посёлком, магазинами и т.п.) - пока что складывается вполне просто но разнообразно и интересно.


I'm going to be honest, I don't like Wolfy. I can't get past 1500 without losing atleast one piece of clothing. She is a high effort low reward character, though I do like how much of a challenge it is to actually play her, it's a bit frustrating though. I also thought of a new idea that you could implement: "skins".  And by that, I mean change the color of the fur/outfits for each character so you can have a 3000 goal in order to unlock  a "skin" for that character that's just a different colored outfit, 4500 for another skin where the fur is changed ect. Just a random Idea that I've had that I decided to share.

(2 edits) (+1)

Indeed, Wolfy was meant to be “hard to play” and the next character - Squirrly is supposed to be even harder. As I’ve managed to get the same high-score with Wolfy as with other characters (around 4k for me, also surprisingly consistent on Android where inconveniences in control are extreme) I thought it’s balanced, but indeed increasing the rewards is a good idea.

Also, maybe you could come up with an idea “what exactly is frustrating”? The long recharge time or slow movement speed, or both? I also feel that it’s kinda takes too much effort, but increasing the rewards alone may not be enough to compensate for that. My first guess would be that speed is the major culprit, as it doesn’t really serve a lot of purpose here + slower movements make the game a bit more tedious. WDYT?

(UPD) And I’ve forgotten to add one more mechanics to Wolfy - she is supposed to kill all enemies nearby when losing clothes.

Skins system is possible. Not something too dramatic, but changing the main tone of the character is definitely doable, even without too much effort. I’ll see how to in the nearest future. For clothes it’s more complicated as they contain several different colors and simply colorizing them may be not enough. (UPD: Ok, I think I know how to change different colors on the clothes independently)


Wolfy gets 2.5 shots per energy power up and had a recharge at 4 seconds per shot, making her the least efficient character when it comes to energy. While true she has 12.5 shots to start with, it can quickly dwindle down. That in addition to her cool down in between shots and slow speed make it very easy for her to either run out of energy while surrounded by enemies resulting in what might be a instant loss (Which could be taken care of by the mechanic you intended to add) or take damage due to poor crowd control. One thing you could do is give her more value out of the speed and shield power ups, making them have a better effect or last longer, and another thing you could do is make her shots AOE or fire 3 spells for one shot. These would make it more rewarding and fair to play Wolfy while also making it still difficult, though if these hypothetical changes were to be implemented Wolfy might have to see a slight nerf in some other area of her kit just to keep her balanced.

is make her shots AOE or fire 3 spells for one shot

That’s exactly the mechanics I want to add for the upcoming characters :D

Squirrly will fire 2 bullets per shot (initially I want to implement that through familiar mechanics [not implemented yet, but mostly requires only graphics, coding part is easy]) and Lizzy will make use of AOE [mechanics is already implemented] also Deery will have piercing bullets [mechanics is already implemented], that will also have some efficiency of AOE.

Actually I think I indeed should prioritize now implementing familiars, as I also see that while Cheety and Foxy don’t have powerful familiars, those start playing an important role from Wolfy and later on.

Meanwhile I’ll also add more speed and shields to Wolfy and we’ll see how it works out. Maybe also add her a short shield when she shoots, as I planned originally.

(1 edit) (+1)

6502 and I gotta say: I love cheety. The visual design is decent and the coloration is much better then before. I do feel as though the red in the clothing does collide with the yellow a little and the red could be a bit brighter, but aside from that it looks fine. I'm also now realizing that power ups spawn a little to rapidly, but the game is still at a good spot.

(1 edit)

Thank you! I’ll see if I can do something with clothes colors, indeed I’ve forgotten to change them from the previous orange design.

Yeah, powerups spawn faster because Cheety relies on powerups as her own mana regeneration is poor. They spawn even faster for Wolfy, because her mana regeneration is even slower. BTW, Wolfy is finished, I’m doing the final tests… will be available in about an hour unless I find something badly broken.


Good update

Thank you! :)


6579 and I must say: excellent. The game is at a great state and the balance is just about perfect where it's difficult but you have more then enough to last. In terms of gameplay, I don't know if there is much you can do to improve it other then making it so the enemies are a bit more predictable, because atm it feels really random. Other then that, gameplay is a 9/10. Good work.


Thank you!!! I’m really glad to hear that.

then making it so the enemies are a bit more predictable

Good idea! I’ve also noticed that I’m getting a hit rather randomly (if the enemy spawns too close and I’m too slow to react, or when the enemy changes course too abruptly and avoids the shot) than through a “consistent situation” - more often my reaction fails, than strategy.

I’ll think of what can be done here - definitely something should be done :D I believe I just have to stop being lazy and implement a better (and hence a more predictable) AI, not just random walking as it’s now.


I'm a idiot when it comes to coding, but I have seen a youtube video showing different kinds of "maze finding AI" and maybe you could...take one of those and...reverse engineer it to find the shortest route to the player or something. I'm sure it doesn't work like that, but I figured I would suggest it anyways. Maybe if you could make the AI find shortest possible routes to the player that could also help. Again, I'm a idiot when it comes to coding so aside from ideas in extremely basic form I don't know if I can help much.

(1 edit) (+1)

Oh, don’t worry about that. I already have the maze solving algorithm ready (technically most of my games involve mazes in some variant :D). I’m just a bit too lazy to apply it here. In the end I wanted to add a few “smart enemies” that would carefully plan their route unlike their numerous but dumb friends that would randomly wander around.

The problem here would be that the Player will actually have to kill all the enemies to survive - now the crowd is relatively manageable, and good maneuver can ensure the survival even when the player is overwhelmed with numbers. If the enemies will run directly into Player’s position, they’ll be quite efficient with that. But that’s all pretty goes down to balance - we can just introduce “not always follow the best route” with a chance that allows both a) keep the number of enemies on the map high (I like zombies :D) and b) keep them predictable and require actual skill to avoid even when mana is not enough to kill them all.


10055 and the game seems to have gotten easier and the AI seems to have gotten worse. The number one thing I would do if I were you is to make it so you have passive recharge on you energy, but not enough/barely enough to keep up with enemy spawns and make it so there are items you could pick up to restore energy, and once you pick up that item it would respawn somewhere randomly in the map. That way you have a objective to maintain survival.


Thank you!

Interesting. AI shouldn’t have gotten into the issues except unable to walk through the walls now except for blue slime. I’ll look into it.

barely enough to keep up with enemy spawns

That’s exactly how the difficulty is handled now. Recharge is 2 seconds, enemy spawns are 5 seconds, and going down to 2 seconds roughly after 4.5 minutes.

However, I wonder, maybe it’d be reasonable to increase the spawn rate even further - that the player most certainly cannot survive “infinitely” even if missing no shots.

Note that the current build contains an already-fixed bug that you can kill several enemies with one bullet. This doesn’t happen too often, but still can shift the balance to player’s favor.

Most likely the problem is that the average speed of enemies dropped, so even when there are more enemies, the threat level decreased. I already see this issue and will address it in the next update.

Yeah, I’m dead set on implementing powerups, and it’s close to be finished (got a bit more complicated than I’ve initially expected) - I hope I’ll be able to roll out an update today or tomorrow.

Also powerups will be taken into account here, that will make the curve even harder.


By "the AI seems to have gotten worse" I men't that more in the sense of "dumber", like they seem less 'aggressive' and aren't moving around walls to get to the player as much in addition to not making a straight line (Which is why I thought at first that the player was faster then the enemies), but that might just be me interpreting it as such.

I say it is reasonable to make it so the player can't survive infinitely. After all, this is a game where you are suppose to lose after a certain point. There could still be progression in the game without changing the gameplay to , where after you get a certain number of points you are allowed to progress after you finish your game where you are while still able to try and get a high score where you're at.

And a few random ideas here: each time you collect a recharge power up it because less effective, recharge and spawn time get reduced to 1 second to increase intensity along with spawn time for coins, everything has increased speed (progressively or originally),  if you are going to have a level system you could have a ghost level,  different types of coins that could give you more or less that are RNG based though have rarities (I.E: "blue coins" give you 20 but are slightly less commen then gold, silver gives you 5 and are also slightly less common then gold, reds are worth 50 and are even rarer ect), change the sound effect for when you click on something (it sounds like a tight fart and it's a little annoying), boss level (after you have already developed a progression system).

That's all I got for now, not sure if any if this feedback is useful but I hope it helps.


Thanks a lot for you reply and suggestions!

I’m looking into AI issue. Maybe it got broken when I “fixed” collisions with walls.

Yes, they aren’t making a straight line - they are moving in curved trajectories that end up in Player’s position. Just like in good old Pac-Man :) This is a feature, and for now it seems good. I’d more eagerly improve the pathfinding (or rather add it, because now it’s just randomly walking around the map).

I say it is reasonable to make it so the player can’t survive infinitely

Just done, and indeed it looks really cool.

I have a bit more extensive way for “progression”. Right now I have stories for 6 characters, and most of their unique abilities (that would allow to survive longer) are already implemented, such as piercing or exploding bullets, dash movements, individual patterns of powerups and (not yet implemented) monster spawns. However, they’re badly lacking art - so I’ll need to give 5x6 = something like 30 hours to paint them. Each character will have its own “target” high score and the next character will be unlocked when it’s achieved.

“blue coins” give you 20 but are slightly less common than gold

Yes, I’ve finished implementing powerups now (still want to add a “speed” powerup, but that may come later), and there is plenty of space now for different score for different rarity of powerups (i.e. coin is 10 points, I’ll most certainly add something more rare and valuable in the next release).

I’ll try to prepare the next update in a few hours. I feel like releasing the “current version” may be a bit confusing, so I want to implement some additional improvements (tutorial popups; enemy spawn rules; speed-up powerup; more valuable and rare coins - all of those should be relatively quick and easy).

not sure if any if this feedback is useful but I hope it helps.

It really helps a lot, many thanks! :D


7283 on the new update. It's pretty hard and I honestly like it more this way. Thanks for the update.


Thank you!


11502 is my new high score


Amazing job! That feel when with my 2750 high score I thought I’m damn good at this game…


One thing I've noticed but liked is that you can collect coins and enemies can pass through diagonally through blocks, which I would imagine is a unintentional design, but I like it and I would vote to keep it in, and maybe improve on it kinda like how blizzard did with Lucio being able to ride on walls in overwatch. A complaint I do have is that the game seems to easy and to shallow atm. The ways how I would fix those is by making it so every 300 points or so, the monsters speed and health increase, and I would also make it so that there is either a requirement for regaining energy like picking up something on the field to regain energy instead of recharging it passively, a nerf to recharge speed, or a bit of both. This game seriously has alot of potential, and I would recommend capitalizing on it by creating a patreon and making it so that you would have to be a patreon to play the newest build assuming you would want to invest into this project you got going, I also have plenty of other ideas and could give more feedback if you would like and would happily answer any question you have or give advice. I wish you the best of luck and hope things work out for you no matter what you choose. 

(1 edit)

Thanks for the heads up!

you can collect coins and enemies can pass through diagonally through blocks

Yeah, I was fighting with this bug for a few hours, but couldn’t fix it. I finally know how to make this work properly, but exactly as you’ve noticed, I like this behavior. I plan to add different enemy types (I have 8-9 good but simple-to-implement ideas) and want to leave blobs, the most generic enemy type, to be able to pass diagonally :D

A complaint I do have is that the game seems to easy and to shallow atm.

Yes, unfortunately I accidentally broke this balance by making the game more convenient when implementing gameplay improvement for Android (now it’s easier to hit enemies, which in turns makes player miss less). I want to keep convenience of the game, but I have already made the difficulty curve more steep - in the current build the game runs up to 90% of max difficulty after 9 minutes of gameplay, I changed it to 4.5 minutes. That’s the moment when the amount of generated monsters is just 10% less than mana regeneration - i.e. player cannot miss more than 10% of the shots, otherwise the map will get crowded with more and more monsters. Testing, maybe I should make the runs even shorter. I’ll most likely release the new binaries today.

About shallowness - I planned addition of more monster types, including shooting ones, and one more spell (summon familiar, a she-wolf who will act as a piece of clothing, but can be called multiple times) will hopefully add more depth to the gameplay. However, the game originally was planned as “small and simple” so, there won’t be much of depth anyway.

For around half a year by now I’m working on another mature game, Piratess in Distress (adult variant of Sea Battle), which obviously planned as much more complex project and would have much more variability and depth (still keeping it simple). I’m still in the early prototype stage though - most mechanics are already working, but almost no graphics completed (and even those 10 girls x 13 hours each is still hell of time to go :D).

requirement for regaining energy like picking up something on the field to regain energy instead of recharging it passively

Yes, you are reading my thought exactly :D I played with mana regeneration speed and it’s much more fun if the regeneration would be 50%-100% slower. But it requires implementing powerups (mana refill, shield, speed, etc.) which is simple, but not done yet.

I would recommend capitalizing on it by creating a patreon

I thought about that, but for me the problem is that I’m from Ukraine and e-banking works kinda weird around here. I was planning to recommend people to support Castle Game Engine development though which made this game possible - https://www.patreon.com/castleengine - and thanks to which I got a wonderful full-time job as a game developer, so indirectly financially supporting me too!

I also have plenty of other ideas and could give more feedback if you would like and would happily answer any question you have or give advice.

That would be most welcome! You may directly create ideas at https://gitlab.com/EugeneLoza/foxy-misfortunes/-/issues - you may find some of your ideas already there just waiting to be implemented :D Or write here - in any way convenient for you! I can’t promise I will implement everything, but as for the ideas above - most likely I’ll be able to make them happen even this week.


Good update

Thank you!


Cool game but frist or later you can make a version apk?

(1 edit)

I can easily make an APK. The problem here is that I have no idea how to implement “twin-stick” input on Android. I’ve experimented with this mechanics in the past, and it’s practically unplayable on touch screen. Maybe you know (or anyone else knows) some game that does it well? So that I can see it for inspiration.

(1 edit) (+1)

unfortunately I don't know I'm only at the beginning the only thing I know is to transform the decimal numbers into binaries and vice versa, but i can se for that 

No, I mean I can implement whatever we need. I just have no idea how UI should look for that. I can easily implement movement UI (I believe the Engine even has something ready out-of-the-box for this). But when touching the screen for shooting the finger covers the gameplay area and it’s frustrating. Implement two sticks? - It’s very hard to aim this way. But maybe I’m missing something obvious - a screenshot from a similar game with good UX should give me a hint :D


ok i can try  to find


You can control a game called free fire or call of duty for mobile