Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

mirkohd

31
Posts
1
Topics
2
Followers
A member registered May 02, 2024 · View creator page →

Creator of

Recent community posts

Thanks, I will keep updating it and try some of your suggestions.

Thank you. I tried the REPL again, and after importing a module,  functions can be redefined. What I was trying to do was fetching the function name and redefine it (using set!)  in what I had assumed was the main process, I understand know that run-web-repl starts the REPL from scratch (with very little context from where it is launched). I will try to start the game loop from within the REPL and see how it goes. 

Thank you. I already fix a bunch of things including the collision, I will post the updated version once the jam ends. The original  flock simulation that I tried (only rectangles)  works really nice and with realistic movement (similar to some demos in youtube), but this is with a higher resolution, when I downscaled to 320 x 180 and over the  tilemap I had all sort of unexpected problems, I will fix  the  speed issue tonight.

Sorry, I meant re-evaluating a function (with geiser send definition). What worked for me was exporting a global variable (a record)  from a module, and then in the REPL changing the value of different fields, it worked well with the game loop. But it is cumbersome to use globals in this way, I only did it to try out  the REPL and the geiser hoot package. I know there are limitations with the current version of the REPL, that is why I'm asking for some useful tips given said limitations (I only tried it briefly, global variables was the only thing that came to mind).

Thanks, I did not know how to run the game, using the openjdk from guix also works. 

I have some hoot related questions:

Is it possible to load multiple wasm modules in the game.js file? It would be helpful for reducing the compile times (and maybe used for hot reloading if possible, reloading the hoot module from javascript). I could not figure out how to use  load_extension.

I also tried the repl (works great with the geiser hoot extension for Emacs)  but, since it can't reload functions, I did not figure out how to use it effectively, could you share some tips?

I wanted to upload the finished version of the game but I was not aware that you can't upload after the jam is finished. I posted a link of the repo. 

The goal is a simple game using boids/flocking and basic dungeon generation.

Thanks!, I will try the suggested approach for compiling modules.

I have some questions regarding  Hoot (or the game template):

- Is it possible to reduce the compile times?, maybe compiling into separate wasm modules  and combining them somehow using tools external to Hoot?

- Emacs geiser does not work with hoot right?, I tried  evaluating hoot related modules, even with the load path indicating Hoot's source code does not seem to work. I wonder how can I use the guile repl and hoot, it would improve development time considerably.  Maybe it can be done by organizing the code in a different way and keep some guile modules without Hoot dependencies?.

- Guile specific question. Is it possible to filter the error messages, sometimes the full backtrace is not that useful, only the file and line number indicating the error. Ideally Emacs next-error  would work with Guile or Hoot's error reporting. Here is an example error message.

 -    hoot/library-group.scm:1231:27: unbound top-level #("engine/map.scm" 151 11)  some-undefined-variable

Ideally some hoot compiler option could present the error like this:

- engine/map.scm:151:11

Thank you. Simply adding a  printer to vec2 improves how pk displays all the other records (that have vec2 fields).

I have some questions regarding hoot.

- is there some sort of enum or constant?  the (rnrs enums) guile module is not available.

- how can I use  #:print  with define-record-type?, bytevectors printed using pk are not very informative; and I can't use pk in a module so I'm not sure how to create a print function.

- what is the use case for the call-external function?. It seems that it allows direct access of javascript function without the need of a binding.

I had some trouble with the random number generator (which I was going to use for the particles and map generation).

I will see if I can finish it later today.  Here is the incomplete version.

https://mirkohd.itch.io/g4

I like it, fun to play and good sound and physics.  Thanks for posting those links to the game art, the background looks nice!, I was wondering how it was made.

Ah, good to know, I initially I wanted to drastically change the physical properties of each prop but it was impossible to win. I'm glad you like my programmer art (I don't!).

The bar increases faster depending on the number of juggling props in action, the goal of the game is to fill the bar, I did not tweak the score mechanic enough to get a more intuitive feel. I like your idea of an angle selector, maybe for  a special move or a more difficult mode, since  I would have to reduce the  current gravity value.

The source should be in in the download page.

It is probably an issue on my part, I'm using version 30.0.50 .It did work after  evaluating init.el and then pendulum.el. 

 I did not understood the mechanics of the game but it is cool that you can program something like this in emacs. 

Thanks. I originally intended to create a more realistic juggling animation, and the juggling mechanic to be just pressing a button at the right time, but in the end  a poor  animation with simpler mechanics seemed to work best( a happy accident I guess).

I considered drawing the hands, but knew I would not have time to animate them. I will probably add them later, there is a list of things that i would like to add, and learn a bit more of Hoot in the process.

Incredible game!. Creative levels, and the ominous music makes  you want to finish them.

Nice looking game and the music is so good!. Only issue I had was that the camera sometimes moved away from the player.

I'm unable to play this game, maybe a specific version of emacs is required.

(1 edit)

I'm unable to play this game because of the following error.

Passing a string as a type-name to make-record-type is deprecated.

Also there is a typo in the manifest,  in the ncurses library.

This is a fantastic way to combine games with the programming experience . I would suggest the addition of a few structural editing commands (I personally use only a few but  it makes lisp programming a really enjoyable), and also  a run command, to keep the flow of the game going. I feel that this is a kind of game that can work well with very few (programming like) languages.

(1 edit)

Thanks. After the jam I realize now that I totally underestimated how time consuming creating art and sound is (which is why I ended with no sound and the cartoony style). And I expected to finish with coding much sooner, my original simple design was harder to implement than expected.  Anyway I'm hyped for the next jam.

Also, Hoot is fantastic, this was a great opportunity to learn about it. I will definitely use it ( if not for a more fully developed game)  for making some tools or for web development.

I like the funny names (autogenerated?) and the look of the text and boxes. The movement between the menus is clumsy but I guess this is a shortcoming in most turn based rpgs. Maybe a key could be use to speed up the 'advance to next day' action.   

Also, I did not manage to play the linux version(missing glfw error)  but the windows version runs fine using wine.

Yes, I had a list of things to add but I barely managed to finish before the deadline (this is my first game jam) . I will add better sound effects and descriptive text. Thanks for the feedback!.

(1 edit)

Thanks!. That worked, replacing (scheme base) with (hoot records) and removing the  3rd parameter of the record fields (hoot records uses only two apparently).

The parent property appears in the guile hoot documentation. And it is in the the guile hoot records.scm file.

So I guess that I'm using the wrong definition, I will try to import the proper definition.  I already tried (hoot records) to no success. 

I'm trying to use the record #:parent property to refactor some code. I'm unable to use the parent property of a record, what is the proper usage of this property?

(define-record-type <particle>
  (make-particle)
  particle?
;; omitted)
(define-record-type <prop>   
#:parent <particle>
(make-prop) 
prop?
;; omitted)

A juggler game. I'm still working on the physics code. I intend to upgrade the placeholder graphics with sprites during the  weekend.

(1 edit)

Please, I need some help with this,  to get a better guile hoot understanding.  

I'm trying to create a toggle full-screen  command.

(define-foreign full-screen-element
  "document" "fullscreenElement"
  (ref extern) ->   (ref null extern) )

I already have the full-screen and exit full-screen commands. But the command required for testing is giving me some trouble.

The function returns either null or the element, I expected that the null value would be considered as false in scheme but it is not the case.  I'm supposed to cast these values ? test for the string "null" ? or is my usage of define-foreign wrong?

Edited: I found out about the external-null?  and external-non-null? this work for the mentioned example but I'm still confused about the general approach for define-foreign.  Extra care is needed for those functions in scheme code?