-2

cross-posted from: https://programming.dev/post/15553031

second devlog of a neural network playing Touhou, though now playing the second stage of Imperishable Night with 8 players (lives). the NN can "see" the whole iwndow rather than just the neighbouring entities.

comment from video:

the main issue with inputting game data relatively was how tricky it was to get the NN to recognise the bounds of the window which lead to it regularly trying to move out of the bounds of the game. an absolute view of the game has mostly fixed this issue.

the NN does generally perform better now; it is able to move its way through bullet patterns (01:38) and at one point in testing was able to stream - moving slowly while many honing bullets move in your direction.

1
submitted 5 months ago* (last edited 5 months ago) by zolax@programming.dev to c/devlogs@programming.dev

second devlog of a neural network playing Touhou, though now playing the second stage of Imperishable Night with 8 players (lives). the NN can "see" the whole iwndow rather than just the neighbouring entities.

comment from video:

the main issue with inputting game data relatively was how tricky it was to get the NN to recognise the bounds of the window which lead to it regularly trying to move out of the bounds of the game. an absolute view of the game has mostly fixed this issue.

the NN does generally perform better now; it is able to move its way through bullet patterns (01:38) and at one point in testing was able to stream - moving slowly while many honing bullets move in your direction.

4
Triple Baka ringtone (programming.dev)
submitted 5 months ago* (last edited 5 months ago) by zolax@programming.dev to c/music@lemmy.world

a gapless, ringtone version of the song "Triple Baka" from the first few seconds.

this is the audio

reply or DM if you want a loseless download because this upload is compressed.

[-] zolax@programming.dev 7 points 5 months ago* (last edited 5 months ago)

I always find it interesting to see how optimization algorithms play games and to see how their habits can change how we would approach the game.

me too! there aren't many attempts at machine learning in this type of game so I wasn't really sure what to expect.

Humans would usually try to find the safest area on the screen and leave generous amounts of space in their dodges, whereas the AI here seems happy to make minimal motions and cut dodges as closely as possible.

yeah, the NN did this as well in the training environment. most likely it just doesn't understand these tactics as well as it could so it's less aware of (and therefore more comfortable) to make smaller, more riskier dodges.

I also wonder if the AI has any concept of time or ability to predict the future.

this was one of its main weaknesses. the timespan of the input and output data are both 0.1 seconds - meaning it sees 0.1 seconds into the past to perform moves for 0.1 seconds into the future - and that amount of time is only really suitable for quick, last-minute dodges, not complex sequences of moves to dodge several bullets at a time.

If not, I imagine it could get cornered easily if it dodges into an area where all of its escape routes are about to get closed off.

the method used to input data meant it couldn't see the bounds of the game window so it does frequently corner itself. I am working on a different method that prevents this issue, luckily.

[-] zolax@programming.dev 8 points 5 months ago* (last edited 5 months ago)

yeah, the training environment was a basic bullet hell "game" (really just bullets being fired at the player and at random directions) to teach the neural network basic bullet dodging skills

  • the white dot with 2 surrounding squares is the player and the red dots are bullets
  • the data input from the environment is at the top-left and the confidence levels for each key (green = pressed) are at the bottom-left
  • the scoring system is basically the total of all bullet distances

  • this was one of the training sessions
  • the fitness does improve but stops improving pretty quickly
  • the increase in validation error (while training error decreased) is indicated overfitting
    • it's kinda hard to explain here but basically the neural network performs well with the training data it is trained with but doesn't perform well with training data it isn't (which it should also be good at)
52
  • neural network is trained with deep Q-learning in its own training environment
  • controls the game with twinject

demonstration video of the neural network playing Touhou (Imperishable Night):

it actually makes progress up to the stage boss which is fairly impressive. it performs okay in its training environment but performs poorly in an existing bullet hell game and makes a lot of mistakes.

let me know your thoughts and any questions you have!

[-] zolax@programming.dev 43 points 7 months ago* (last edited 7 months ago)

this is the ad-free version, which is available with the exact same (if I'm correct) features on F-Droid for free, along with the source code on GitHub.

the versions on the Play Store (paid version and free version with ads) likely just help pay the developer for their work

and as others have said already, free software is free as in freedom, not free beer.

-5

don't know if this is the correct community to post this on, but is there a way to style Reddit (most likely old Reddit but it doesn't matter) with a similar style to Lemmy? there are a few small subreddits I still browse (because there is no Lemmy equivalent) and it would be cool if I could style it like the regular Lemmy style (if you need an example: lemmy.ml)

I know there are frontends for viewing Lemmy instances like Reddit, but I haven't heard of any way to do the reverse.

it could be through a stylesheet, an alternative frontend, even just a pointer on how you could style a website into a different style.
thanks!

[-] zolax@programming.dev 55 points 8 months ago

to clarify:

The developers of the Alpine Linux-based postmarketOS mobile distribution today that they’re now supporting the systemd init system alongside OpenRC and other alternative init systems.

and:

postmarketOS currently supports the Sxmo, Phosh, GNOME Shell on Mobile, and KDE Plasma Mobile UIs. While the Sxmo images will stay with OpenRC, the GNOME and KDE Plasma Mobile images will be built on top of systemd

[-] zolax@programming.dev 6 points 9 months ago* (last edited 9 months ago)

another cave story user on fedi!! very cool

i know someone with that exact bg too lol

[-] zolax@programming.dev 9 points 9 months ago* (last edited 9 months ago)

haven't compiled it in like months bc it keeps erroring out lol

please tell me you use ccache tho

[-] zolax@programming.dev 8 points 1 year ago

oh another restic user

yeah restic is a very good choice

it even works with incremental backups so you don't waste as much space as other solutions

[-] zolax@programming.dev 6 points 1 year ago

this app is amazing

1

for a while, I have been using hardware through Linux that uses the beep from the PC speaker. I'm actually really used to it, so when I switched to using hardware with an unusably loud (volume can't be changed) volume (and also different frequency), I started looking into "exporting" the original beep to an audio file that could be played at different volumes and for other purposes.

looking through the internet, however, I haven't found any attempts to represent any actual PC speaker beep in an audio file, so I'm asking you guys if you know how to do so. presumably, the beep is just a short, simple waveform at a certain frequency, but I am not sure what that waveform is, or what the easiest way to do so is.

22
submitted 1 year ago* (last edited 1 year ago) by zolax@programming.dev to c/selfhosted@lemmy.world

so I was looking at someone's personal website from Mastodon, and noticed that they had banners to advertise other people's servers. while server lists like fediring exist, I was thinking of a more automatic method of advertisement within someone's website.

the concept is this: people could store advertisements (small banners, gifs) on their websites with a server and people willing to embed them could use an API to retrieve a random ad onto their website.

people would self-host their ads and "federate" with other websites to embed other ads on their website. not sure if this would scale up as well, though.

what do you think? just curious on lemmy's POV

edit: going by the comments, this idea is quite flawed and webrings (in small sizes) are a better approach.

thanks for the help

[-] zolax@programming.dev 6 points 1 year ago

that's ok. we all make mistakes

[-] zolax@programming.dev 10 points 1 year ago

oh ok

I do appreciate the fact that more private Piped links are provided instead of direct YouTube links (my bad btw), although direct ways of saying thank you (messaging developers, sending donations, providing feedback) would be more useful and productive

thanks for the advice. I'm also not a fan of those type of comments too lol

[-] zolax@programming.dev 13 points 1 year ago

also didn't know you could pipe text into lolcat like that

[-] zolax@programming.dev 44 points 1 year ago

you could use Termux::API to get stats (battery percentage, notifications, calls, some other stuff) of your phone from your PC.

this video gives good examples

view more: next ›

zolax

joined 1 year ago