Release of Feoh the Fitter game

Oliver Marsh
I’m releasing my first game ‘Feoh the Fitter’. It is a puzzle grid game designed to test your spatial awareness and allow you to explore the rules of the game. If you like thinky puzzle games like sokobond or a good snowman is hard to build you may enjoy this game.

To download the game i’ve created an itch io page here (itch io page). It is pay what you want.



If you have any bugs that come up, any questions or just want to say hello, the best email is [email protected]

I made the game with the idea of building a system and exploring interesting consequences that arise. I have learnt a lot from this project. How to make a professional product (hopefully!), how you go about designing a game and most of all, actually finishing the product. All three of these were a big learning curve for me, but I’m happy to say I made it out alive.

It has given me confidence to take on bigger challenges, and the confidence of finishing a product once I start.

Thank you everyone on the Handmade Network for answering questions and giving me support (just by existing) to make this game. I would not have done this without the network, and definitely not without Casey’s Handmade Hero, which gave me the confidence that I could even make a game. I am very grateful Casey made the series and everything that has come about from it.

I would be great if you could test the game on your computer and see if it works, and give me any feedback.

Some details about the game:

Developed primarily on a Mac computer
Used plain c (no function or operator overloading and writing typedef struct a lot)

1
2
11855 loc total not including libraries or external code. 
3390 loc for the main gameplay code, included in the above


Compiled using clang on mac and visual studio compiler on windows

Libraries used:
SDL2 for both Windows and Mac
Sean Barret’s stb_image, stb_image_write, stb_truetype
gl3w to load OpenGL functions

Only supports rendering through an OpenGL context. And needs at least version 3.1 to run.

Time Length:
I started making the game at the start of September and finished around end of January. Didn’t do anything in December. Working part-time (2-3hrs 5 days a week approx.). I used engine code from previous projects, so didn’t write it from scratch.
Congratulation on releasing your first game.

Unfortunately it, doesn't work for me on Windows 7 64bit. The launcher opens a blue window with nothing in it, if I click at about 75% in the window it launches another window, with pink background and wind sound. That windows doesn't draw anything either but moving the mouse and clicking seem to interact with invisible menus...

Here is some feedback on the release and packaging. It may sound negative but I hope it'll help you for your next release:
  • English is not my mother tongue so I may be wrong about those:
    • "I'm announcing the release..." sounds to me like you're announcing a release date, not the actual game. "I'm releasing Feoh the Fitter..." is better in my opinion.
    • "...and allow you to explore the rules of this wonderful world..." you never mentioned any "world" and using "this" implies you're talking about something the reader knows about. "... and allow you to explore the rules of a wonderful world" seems more appropriate to me. Maybe it's just me but qualifying the world of wonderful sounds like a marketing word with no meaning behind.
    • When adding links, put text in the link. It's useful for accessibility and easier to click. Make the text describe the link as precisely as possible, for example "You can download <url=...>Feoh the Fitter on itch . io</url>."
  • The official site doesn't work for me. It goes to feohthefitter .com/defaultsite and it's a blank page.
  • The feature list on itch is not useful in my opinion. Are those the things you find interesting about your game ?
    • "45 Handcrafted levels" is not really a feature. It may worth mentioning on the game page but that wouldn't motivate me to try the game.
    • "Unique gameplay" doesn't gives any idea of what the gameplay is. Also sounds like marketing without meaning.
    • "Original soundtrack" isn't really a feature (lot's of game have original soundtrack). As far as I can tell there are only 2 tracks and they don't seem particularly good (personal opinion). One is called "Fitris_Soundtrack". Were those created for the game (the meaning of "original soundtrack") ? And I bet the trailer music isn't in the game ?
    • "Minimal UI" doesn't sound like something that would attract people to a game.
  • The minimum spec probably will not be useful to any non-dev player.
  • The download file contains both the mac and windows version in the same zip. I don't find that useful, I prefer to have a separate download for each version.
  • Once unzipped, there are two exe and no real indication to which one I should launch.
  • I would prefer to have only one exe. The game seems simple enough to not require a launcher.
  • You left the SDL lib files next to the exe which are not necessary.
  • Maybe you could statically link SDL into your exe to avoid having the dll in the package.
  • The sub folders in the res folder contain the MacOS .DS_Store files.
  • I would suggest you to pack everything from the res folder into a single file. It's would make the whole game folder be just 2 files (the exe and the resource file).


As a player, the game not working on my computer makes the release looks bad: I see a small game that doesn't even draw something and makes me think you haven't tested it. Finding feedback is not easy... but there is handmade.network and I'm pretty sure if you asked around here before releasing, you could have at least a few people testing it on different config and OS. Don't hesitate to ask.
Thank-you for the honest feedback Simon, agree with everything you said.

Promoting and the branding side is definitely not my strong point. When I wrote the description it felt a bit markety but was a bit lost what to write for it.

I only tested on a windows 10 computer. It sounds like it's creating a gl context but can't find the texture file? Would it be alright if I sent you a debug copy to test on your computer?

Thanks again for all the feedback Simon, I definitely will be making those changes you suggested. I think I'll get rid of the website, it's a bit superfluous, and just keep the itch.io as the main site.
Yes, I'm ok to test another build.
I'm trying to static link to SDL library but I can't seem to do it. I pass the .lib not .dll to the compiler but the exe still needs the .dll file to run. This is my build script:

1
cl -wd4577 -O2 -Oi  /DNOMINMAX /I ../SDL2 main.cpp  /link ..\bin\SDL2.lib ..\bin\SDL2main.lib opengl32.lib shlwapi.lib /SUBSYSTEM:WINDOWS


Do I have to force the compiler somehow to link to the static library?
What is this SDL2.lib file you are using? Just because extension is .lib it does not mean it is static library. There are two type of .lib files - one is for dynamic imports, one is static library. Former simply contains list of symbols (functions, global vars) that dll exports and dll file name, so application that links to this .lib file will simply contain reference to .dll file and list of symbols to import. Static .lib on the other hand contains full machine code (as collection of .obj files) inside.

So make sure the .lib file you are using is actually static library and not dynamic import library.
This makes sense, I didn't realise this is how dlls work. So, for example, when I'm passing opengl32.lib, it's not statically linking but just given info about the .dll that is presumably on everyones machine?

I was just using the sdl2.lib files that came with the development binaries, which now that I am looking are small compared to the .dll which would have the actually machine code in. To get an actual static .lib of sdl do I have to compile the library myself?

An extra question (might be a bit silly), can you ever pass a .dll to the compiler, or do you always reference it using .lib files?


Yes, that's exactly how opengl32.lib and other system dll import libraries work.

If SDL is not giving static libraries on their website, then yes - you'll need to compile them yourself. It kind of makes sense, because every compiler and even different versions of compiler has a bit different formats for object files / static libraries. So they would need to give you all possible combinations of VS, gcc, clang and each version of those. That would be insane work to do.

Technically it should be possible for linker to use just dll file to figure out which symbols to use as imports during linking. Unfortunately MSVC does not do that. lld (from llvm project) also does not support it. Binutils (which usually comes with GCC) does support this, so you can use .dll file for linker arguments instead of .lib/.a file when using GCC.
@Simon Hey Simon can you try this build on your computer

https://drive.google.com/file/d/1...scsoPTpNDyAtL9Eq/view?usp=sharing

I've got it so it will create a log file on any assert it hits. The log file will be in the res folder.
Just tried it. It still doesn't display any graphics and it doesn't create a log file. At least not next to the exe. Is the log created somewhere else ?

I used UI for ETW to see which files where accessed by the application and the paths are correct. So the problem is probably sending the files to the graphics card.
Thanks Simon, the log file would have been created in the res folder and be called something like LogFile_3734343.txt
There is no log in the res folder.