[wip] a minimalist shmup, with variations

[wip] a minimalist shmup, with variations

Postby deca9 » 17 May 2022, 12:22

Hi,
This message to share a work in progress mini-project.
I'm fond of abstract games from Kenta sho, so I has willing to try to make something abstract too.
I'm not the author of these minimalist abstract elements though.
The idea of the background with squares that sometimes change color is just one of the screensavers from xscreensaver.
I like to minimalist abstract random avatars from github, so this is what I used for the ships.

I also thought from the beginning that I will want to make a simple basic shmup that I will reuse as a base to make variants, to explore and experiment creative rules, and weird different shmups.
The first one I did (and which I used after to make variants) is shmup_av
https://github.com/fccm/ocaml-shmups

This first one even started as a tutorial, it happened that I first teached to myself with it, and got a minimalist result that I still like to play with 2 years after.
https://github.com/fccm/ocaml-sdl2-minigames
https://github.com/fccm/ocaml-sdl2-mini ... ster/shmup
This tutorial is not written in the blog style, but with different steps of development from 0 to N.
The step 0 is most of the time almost a hello-world in each sub-directories.

shmup_te and shmup_tc are similar variants that play with colors, different enemies colors that should be killed with different shooting colors (the idea comes from the famous Ikaruga).
in shmup_te there are 3 colors, you shoot each different colored enemy with a different key or button (S, D and F for repectively green, red, and blue), and in shmup_tc there is one key/button for shooting and another one for switching the color. I was willing to see what is the nicest way to shoot with different colors, I'm still not sure which I prefer.

In shmup_bg you are a bodyguard protecting a VIP ship (the white ship). You can not die when you are hit by enemies bullets, and you can absorb enemies's bullets (just like a bodyguard wearing a bulletproof vest) before they touch the VIP. The game over happen when the VIP is touched by a bullet. I don't know if anyone already had the idea to make a bodyguard shmup, if someone have ideas to make different kind of shmups like this, I will be happy if you share it with me.

Some people seem don't like to compile something else than C, here is a C rewrite of shmup_av:
https://github.com/fccm/cshmup-av
(I will not rewrite to C all the variants)

There is a small bug in this C rewrite, maybe someone here can help me to fix it. Enemy's bullets disappear on the left before to be outside the visible area of the window, and I don't understand why.
The function step_foes_bullets() updates enemies bullet. In this function the bullets are removed if the function f_bullet_outside() says that the bullet is outside the window. The test is: return ( (y > height) || (x > width) || (y < -20) || (x < -20) ) because a bullet is 20x20 pixel and (x, y) is the coordinate of the upper-left corner of the square that contains a bullet.

What I see happening is as if the code was (y < 0) also whichever value I try to put there (y < -80) or (y < 0) or anything else, the bullet always disappears when the bullet touches the left side of the window.

shmup_gn don't provide a rule variation, only a different graphics using the ocaml port of the famous pixel-sprite-generator: https://github.com/zfedoran/pixel-sprite-generator

My favourite one is shmup_ci, I wrote it when I had a baby and when I could only play with one hand while holding the baby in the other hand :)
The player don't need to press a button to shoot because the player's bullets are just rotating around it.
At the beginning the player has 5 lifes that are visible by 5 bullets rotating around him/her, and everytime the player get hit by an enemy's bullet the player lose one life/ one bullet.
At the end the player has only one bullet rotating around him and it becomes hard to play, but when he/she kills an enemy he can get a life back.
_ci is still my favorite one today, even when I have my 2 hands free :)

Not done yet, but I plan to make a variant of shmup_ci soon that I will call shmup_cj, the enemies will also have their bullets rotating around them.

I think it would be interesting to reuse the colors rules from _te & _tc, with the rotating bullets from _ci, the result will probably be something easier to play than te/tc because several buttons to shoot and switch color is not that easy to play. With a colored _ci there would be only one button to switch the color.

I was also thinking I could make a color variant where we don't switch the color with a button, but by catching bonuses around.

shmup_ds ( https://github.com/fccm/ocaml-shmup-ds ) includes the ships from Commander@OGA

And now in OCaml we can produce javascript from ocaml source in an easy way, and the js output is very readable. So I started to play with it. The original versions was using SDL2, all the source of these mini-games compile fine to javascript, I only had to rewrite the display functions (and it only required minimal time and efforts, I got something that works very easily).

I only did _av, _ci and _ds for now, and I'll try to make _tc or _te soon:
http://decapode314.free.fr/games/

shmup_px.js uses Kenney.nl graphics from the pixel-shmup submission on OGA, it's a work in progress, and comment, suggestions are welcome as for other variants and ideas.
I'm planing to make a background generator for this one, to reproduce the screenshot from Kenney.

Several months ago I saw a documentary on TV about the Op-Art, they were talking about Bridget Riley and Vasarely,
I like Bridget's Shadowplay: https://en.wikipedia.org/wiki/File:Rile ... owplay.jpg but found disappointing that colors don't change like in a screensaver, so I did a mini JS version of it:
http://decapode314.free.fr/re/Bridget_Riley.html
http://decapode314.free.fr/re/Bridget_R ... araja.html
http://decapode314.free.fr/re/Vasarely.html
(I even bought the pillow at Ikea with the Bridget Riley patterns)
My wife said she don't understand this kind of abstract art, I also bought the pillow to show her that it's made to be reused as patterns for bed covers, pillows and so.

And now I'm trying to think what kind of shmup I could do with Bridget and Vasarely patterns. Maybe Bridget's skewed rectangles could arrive on screen on a parallel direction than the skewed side of the rectangles, and maybe before to disappear the rectangle could change color several times.

This was quite a while that I was trying to think how I could make mini-game that look like pieces of art.
The Op-Art can probably be a good source of inspiration for something like that.

Maybe the Vasarely ( http://decapode314.free.fr/re/Vasarely.html ) would fit well for a tower defense, and skewed rectangles from Bridget would also fit well for a brick breaker game.

I know that no-one will want to play with these games and variants, but I'm still having a lot of fun with it.
I already submit it on Itch.io, there is really no-one that want to play with it :) even on GitHub, there are also no stars.
deca9
 
Posts: 18
Joined: 16 May 2022, 01:22

Re: [wip] a minimalist shmup, with variations

Postby PeterX » 17 May 2022, 18:37

Definitily cool! I will playtest some of them. Probably not all of them. They are so many.

Only critique: I know someone who is colorblind. So he can't tell green from red. Colorblind people can't play the color-shmup.

Greetings
Peter
User avatar
PeterX
 
Posts: 270
Joined: 01 Oct 2020, 21:44

Re: [wip] a minimalist shmup, with variations

Postby deca9 » 17 May 2022, 20:15

Color blind people can still see grayscale, we can just replace red/green by 2 different greys.
This is a strength with free software because we can do these kind of things.

(The author of the pdf viewer from the KDE project was kind enough to do something similar.)
deca9
 
Posts: 18
Joined: 16 May 2022, 01:22

Re: [wip] a minimalist shmup, with variations

Postby PeterX » 17 May 2022, 21:44

Cool! You could also use yellow instead of green. Or replace only green with gray.

I've tested the C version. A bit abstract (though not completely abstract, so it's fine). Not bad. But I doesn't catch my passion.

(I also tried minirts from the minigames repo. But I can't get OCaml-SDL2 to cooperate with minirts build script.)

Greetings
Peter
User avatar
PeterX
 
Posts: 270
Joined: 01 Oct 2020, 21:44

Re: [wip] a minimalist shmup, with variations

Postby deca9 » 18 May 2022, 00:19

For your blindcolor friend, you can redefine the 3 colors in shmup_te.ml like this:

{l Code}: {l Select All Code}
let grey1  = (230, 230, 230)
let grey2  = (120, 120, 120)
let grey3  = (40, 40, 40)

let green  = grey1
let red    = grey2
let blue   = grey3

let f_green = grey1
let f_red   = grey2
let f_blue  = grey3


I tested several grey values, and different orders for the 3 shooting buttons (s, d, f), these values and in this order gives a good result IMHO.
deca9
 
Posts: 18
Joined: 16 May 2022, 01:22

Re: [wip] a minimalist shmup, with variations

Postby deca9 » 18 May 2022, 00:24

Don't expect something you can play in the mini-games repo.
As I said this is something to learn OCaml.
In particular mini-rts only provides step 0 for now, also because I'm not happy with this step 0 yet, in order to make the following steps.
deca9
 
Posts: 18
Joined: 16 May 2022, 01:22

Re: [wip] a minimalist shmup, with variations

Postby deca9 » 18 May 2022, 00:29

There are also other visual difficulties than color-blind. Some people have floaters in the eyes.
When you have floaters in the eyes, white or bright backgrounds are annoying.
Today 99% of the websites provide white backgrounds.
Rare are the websites that provide a CSS swither.
GitHub recently provided a dark theme css which I'm very happy with.
https://developer.mozilla.org/ also provides a dark theme for people that have difficulties with bright backgrounds.
(Is there some hope for this website?)
deca9
 
Posts: 18
Joined: 16 May 2022, 01:22

Re: [wip] a minimalist shmup, with variations

Postby deca9 » 18 May 2022, 00:32

You can run minirts like this:
{l Code}: {l Select All Code}
ocaml -I ../OCamlSDL2/src sdl2.cma minirts0.ml

but there is nothing to play, this is a tutorial to learn OCaml.
deca9
 
Posts: 18
Joined: 16 May 2022, 01:22

Re: [wip] a minimalist shmup, with variations

Postby PeterX » 18 May 2022, 11:00

Ah, thanks for all the infos. OCaml looks pretty straight forward btw.
User avatar
PeterX
 
Posts: 270
Joined: 01 Oct 2020, 21:44

Who is online

Users browsing this forum: No registered users and 1 guest