It’d be really nice if you could feature my game too - I’ll (try to) finish it around Christmas Eve (and it’ll be web-based + linux/windows/etc).
fmixolydian
Creator of
Recent community posts
Since in basically 90% of jams i’ve joined in the past i haven’t submitted a thing, i thought to make a journal to give me a little more motivation.
MiniNations is a game about expanding your nation and conquering territory, using armies to attack neighboring provinces.
When the game begins, you start with a 24x16 map of Europe - 8 tiles are chosen at random to be the captials of 8 randomly chosen nations - kinda like Sid Meier’s Civ V.
The goal of the game is conquering the capitals of every nation, thus achieving a war victory.
Terrain
Currently, the only terrain types are Plains. More terrains may be added in the future (mountains, hills, desert, etc, coast, etc) with different defensive/offensive/economic pros and cons.
Units
Each tile may hold up to 9 soldiers at a time - the group of soldiers on a given tile is called a unit.
Actions
You may consume up to 5 action points per turn - every action consumes a select amount of points:
- Moving a unit: Consumes 1 action point per tiles moved if over land, 2 if over sea;
- Splitting a unit: Consumes 1 action point;
- Adding two units: Consumes 1 action point;
- Recruiting soldiers: Consumes as many action points as soldiers recruited.
Catena
An additional design goal of the game is to be written in a new catlang, created specificately for this jam: Catena (the name comes from the italian word for chain).
Catena is an object-oriented catlang designed around mutation: you run commands along with arguments separated by spaces or commas to mutate the state of the stack.
0 | set x
1 | set y
1 | set z
while [z | lt 100] do
y | set x
z | set y
x | + y | set z
z | puts
end
I’ll eventually publish a full description of the language in the catlang discord, as well as on my website (not yet finished).
Thanks! :)
By the way, at 2AM (Basically i did everything described in my last post from 11PM to 1:30AM) i came up with an idea that i also had earlier. I made a text file to describe how it works:
/\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/\ /\ /\ /\
/ \ / \ / \ / \
/ 1 \/ 1 \/ 2 \/ 2 \
Each player has to guess a word that has to do with the word on his left and right triangle.
/\
/ \
/ \
/ \
/ \
/ \
/\ /\
/ \ / \
/ \ / \
/ 1 \ / 2 \
/ \ / \
/ \/ \
Now starts a cycle: Players 1 and 2 need to guess something that has to do with the words of both players. Whoever is the least accurate gets eliminated:
/\
/ \
/ \
/ \
/ \
/ 1 \
/ \
/ \
/ \
/ \
/ \
/ \
Step 2 repeats for each group of 2 players, until there's only one player remaining in the triangle:
/\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/\ /\ /\ /\
/ \ / \ / \ / \
/ \ / \ / \ / \
/ 1 \ / 2 \ / 3 \ / 4 \
/ \ / \ / \ / \
/ \/ \/ \/ \
/\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/\ /\
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ 1 \ / 4 \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \/ \
/\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ 4 \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
I would use a simulated keyboard on the GBA to write words.
Every bottom triangle will contain a word randomly picked from an array of words; Actually, the array is a table that’s 3 words long; this is the dictionary. The first 2 entries are the entries that have to do with the 3rd word.
I’ll include every single noun in the English language, and sometimes the 3rd entries in the dictionary table will not be in the dictionary, like a “1-up” that has to do with “life” and “mushroom”.
I’m sorry if you don’t like devlogs in your Community page, so please reply if i can continue to post here my game’s devlog or if i should do it somewhere else. By the way, once i post the game, i’ll put the devlog in the game’s page and (if you want to) remove it from here.
My first decision is to choose an engine; I’m a C programmer. I don’t want to deal with any low-level stuff, so a high-level C library with a lot of good documentation and examples (like some DS libraries I’ve used before and probably use again) would be awesome.
My first pick was gba-modern, but it had virtually zero basic examples or documentation so I can’t use it.
Then I looked at gba-plusplus, and (at least at first) it looked quite nice! OK tutorials to build my game from the ground up, and overall a pretty good library!
So I decided to select it.
Though, to use it, obviously, I’ll need to install it first.
So I immediately git cloned the repository and tried to build it with cmake…
And my version of cmake was too low. So I got around that by editing the minimum required version of cmake…
And I was missing SPHINX_EXECUTABLE, with the error “Cannot find Doxygen”.
I have no idea what it wanted to build, but I installed every single sphinx package I could find and tried again. And it complained about Doxygen. So I installed that and tried again. And it complained about a dot component of Doxygen. So I installed every single Doxygen package that exists and tried again. Now it complained about some error I didn’t understand:
CMake Error at CMakeLists.txt:8 (set_target_properties):
INTERFACE_LIBRARY targets may only have whitelisted properties. The
property "LINKER_LANGUAGE" is not allowed.
-- Configuring incomplete, errors occurred!
See also "/home/<username>/Documents/Code/gbapp/gba-plusplus/CMakeFiles/CMakeOutput.log".
At this point, I just game up and uninstalled every unnecessary package I installed. The only thing it would have built anyways was the Doxygen wiki…
So I went and took a peek at the include/gba directory, and found the header files of the library. Turns out I could just use it right away!
But I still needed to create the project with a Makefile, and I realized a problem…
None of the examples were building. It turns out that the environment variables weren’t set in the root user, and because the examples were in a directory that I couldn’t write to without root privileges, I was forced to compile as root. So I copied one of the examples to another directory I had write access to, and I got Permission denied.
Turns out the directory itself was write-protected for me. I chowned the directory to me and it finally built.
And it worked like a charm.
Now I had to just copy the Makefile over to my game’s directory, copy gba-plusplus to it, change the game’s and directories’ names to my liking and I was good to go!
But then I had to decide on the name of my game, and none of the themes were particularly interesting or I couldn’t think of good ideas for them, but I really wanted to use one of the LOWREZJAM’s themes.
After a lot of thinking. I had these ideas:
- A platformer where you go through wells to change gravity…
And that was it. So i setted up everything i needed while i thinked of some ideas.
But in the middle of setting up, i noticed one of gbaplusplus’s examples and went “oh no this is too complicated”. So i changed to Butano.
I git cloned Butano into a directory and compiled the text example. It took a pretty long time to compile, even with all my cores.
I copied the template to my game’s directory and set everything up to run and compile with Butano, but had to modify the Makefile a bit to point to the corrent location of Butano.
Here’s the setup i used:
- OS: Linux Mint 20.3 Una
- Butano directory: “./butano/butano”
- Emulator used: mgba-qt
- CMake version: 3.16.3
- Make version: 4.2.1
- Editor used: Vim & Gnome Builder
- G++/GCC/C++/… version: 9.4.0
I wrote this post as i went through everything i did in this post, and i still haven’t comed up with a theme, so it took me hours to write.
EDIT: I put Butano’s directory inside of the source code, so that it can be directly downloaded and builded without needing to first build Butano.
I decided to use a resolution of 64x64, by rendering everything to 3 64x64 sprites (that I will call the “display sprites”) and scaling them 2x; there are 3 “display sprites” on top of each other, so there are 3 layers, and virtual sprites (like the player) have to be rendered directly to one of the three layers, like background elements.
In the case of block-based programming language, you should ensure that all the code in each sprite (not combined, so you can have as many sprites as you want) fits into one screen of the editor, at the most zoomed out.
Oh, and btw online games are an exception to Rule 3, therefore they are valid in this jam.
I’ve considered 2 meanings of this theme:
-
You connect “nodons” (circles) to perform math. (This isn’t a game idea so I wasted just 2 days)
-
You control 2 entities at the same time, and one’s controls (and the world) mirror the other (eg. if one goes left, the other one goes right). There are only a few differences between the left half of the world and the right half, and you have to use these differences to complete the level by desyncing the 2 entities. Thus they are connected.
-
You connect some wires so that electricity can reach the other wire.
Thanks a lot for your help! Though I still have 1 problem:
I don’t know if Talonlang supports SDL (it would support it only if the interpreter would), so I think that for Talonlang I’ll have to make a text-based game, maybe with ncurses. I would like to know if I can directly import Python modules from Talonlang (since its interpreter is written in Python).
Update: I can’t.
I don’t think I’ll have enough time to make 3 completed games, so I’ll start with the Talonlang game, then (if I have time) I’ll make the Ruby and Go ones.
Also, the Ruby gems package manager gives me a lot of problems. Still, I just can’t get Raylib to work, and I doubt that SDL will; by the way I have the dev packages of SDL2 and Raylib installed (the latter as a static library), I use Linux (more specifically Mint) and use Windows only for C# stuff, basic C/C++ programming with CYGWIN, or GameMaker Studio stuff (that I can’t get to work, but I think I’m derailing too much).
Lastly, I couldn’t come up with any ideas for the games. I think I’ll just generate some ideas using a generator and select the ones I find interesting.
Update: I wasn’t able to get Raylib working on Ruby or Rust. I don’t even wanna try with Go because I know that it would be a headache.
I’ll just write these games text-based with ncurses for now.
Also, I replaced Rust with Talonlang because… primarily ownership and borrowing. Plus, I think Talonlang is pretty nice for this.
I chose Ruby, Go, and Rust.
- Ruby because it has a nice syntax.
- Go because it is pretty similar to C, a language that I regularly use.
- Rust because it is very interesting to me, plus the same reason as Go.
All of these 3 games I’ll make (or less if I don’t have enough time) require a graphics library; normally I’d use Raylib, a very nice library that has bindings to all 3 programming languages I selected.
But are there any alternatives that aren’t in the “gray area” between frameworks and libraries? Or should I just make a text-based game?
Can I use non-game-specific code that I’ve already written? While I was making one of my unreleased games, I made a non-game-specific file containing classes and functions for creating vectors and other useful things; just utilities that all the games I make share.
If you want to know the full list of utilities in this file (excluding ones I might add in the future), here’s a list:
- A distance function that calculates the distance between two vectors
- A function to create a vector from a list of numbers or an array of numbers
- A class to store data about a shape (the vectors. the calculation operations, and the color)
- A function to split a string by a delimiter
- Functions to do math operations with vectors instead of single numbers
I can also show the code if you want.
I have two questions:
First, does the game have to be for a specific system?
I would want to know if my game needs to be able to run on machines that have floppy disk drives (for example, old DOS computers or Commodores) or my game can be able to run only on Linux (or only on Windows), and no other platform.
Second, I can’t understand the phrase “No third party media” in the rules;
If no third-party media at all can be used (including compilers, OSs, etc.), then I would have to write my game directly in machine language and would have to write everything from scratch, and it would take me over a month to get even a basic platformer.
There are a lot of different meanings to this phrase, and I would kindly ask you to rephrase it. Thanks.
When i ran it on Linux for the first time, it deadlocked my entire computer (I could only move the mouse on a black screen, nothing else worked, not even closing the screen of my laptop or pressing the power button). Then after hard-rebooting, the game will get to the Unity splash screen, fade, and then close.
I typically use a 14” laptop screen at 60hz (I think), with a resolution of 1920x1080 pixels. I also have a secondary monitor (that was my primary monitor until I bought a laptop), 24” big. Those measurements are just guesses; I don’t remember what the box of my monitor or laptop said about my screen size.
The mechanic of this game is excavating blocks with the mouse, creating a path to the green block while avoiding red blocks, and then pressing R to let the robot character follow the path. If the robot hits a red block, he gets teleported to a random level and you lose some points. If instead he hits the green block, you go to a random level and gain some points. I'm rapidly updating this game so this mechanic might change slightly in future updates, though i want to make sure that anyone can play any version of the game.
Well... BASIC8 isn't free, and probably i will be using it for just this jam.
I think that for me BASIC8 is just a waste of money, because i'll use it for this jam and then abandon it.
When it comes to fantasy cosnoles, i usually make JS games with the TIC-80 or the SCRIPT-8. So spending $13 on a fantasy console that i'll be using for only one time... Just isn't worth it. I'd consider to lower the price a bit, maybe to $10, where it is more affordable. Then, if you'd lower the price for me, i could sponsor it, or even make a commercial.
To make the user base more big, and not do the same "mistakes" the PICO-8 and other paid fantasy consoles did, i think you should make a free demo version of the BASIC-8 to be more competitive to the other paid fantasy cossoles. in the demo version, the user should be able to:
- Make a game
- Use the sprite/tile editor
- Use the map editor
Howeaver, with the following limits:
- The user can't save disks.
- The user can only use the game dev. tools for a limited amount of time (For example, 4 hours)
- The user can't use any advanced tools.
I think that this demo version would bring more users to the fanbase.
