On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

harebrained

34
Posts
2
Topics
2
Followers
1
Following
A member registered Oct 28, 2022 · View creator page →

Creator of

Recent community posts

I agree on many points, in particular the packaging. I came to the same conclusion: it needs to be easy to run your game. AppImage is linux only which might reduce player count (though many lispers are probaly on linux). Another point for browser games: cross-compatibility. I did work on packaging as AppImage since the last jam and was hoping to test it out this time bit did not submit anything this edition due to travels but looking forward the playing the submissions and hearing wether you got more feedback with the AppImage version

hoping to have @Andrew (cl-fast-ecs library), @oofoe and @Jummit comment here as well. You can read about their approach to ECS  in their devlogs https://awkravchuk.itch.io/cl-fast-ecs/devlog/622054/gamedev-in-lisp-part-1-ecs-and-metalinguistic-abstraction.    https://oofoe.itch.io/rfk2k/devlog/624237/handling-entities and https://jummit.itch.io/tic80-access-battlers/devlog/622949/pre-jam-preparations

(2 edits)

Many submissions this time around made use of some form of ECS. I think it would be great to discuss implementation strategies and libraries. 

I will start: Components have a symbol as key and any other type as value, implemented as a scheme record. An entity is a list of components. All entities (e.g. list of components) are stored in a vector. They are represented by an integer (their index into the vector), however this is never exposed to the user. Instead a query macro is provided with which to access entities with particular component types (cannot query on component values). This is backed by a  hashtable mapping the components to a bitset of entity ids (to answer the question which entity implement what component). A system then applies a query and acts on the components of the entities return by the query. 

I took great care that there is no mutation to allow a functional programming style. Thus at each step of the game loop a system is applied to the game world and returns a new game world.

Brief example of defining a world with a single entity with 3 components and a system to render to the screen


(define world (create-world (list (component 'myentity) (component 'postition (cons 1 1)) (component 'sprite "path/to/sprite"))))
(define (render world)
    (let-values (((_ pos sprite) (get-components world (query 'position 'sprite) 'position 'sprite)))                 (for-each (lambda(p s) (draw-sprite (at (car p) (cdr p) s))) pos sprite)))



Code for the library: https://github.com/sam-d/klecs

EDIT:  code formatting

This game is full of graphics, sound and many other elements. That is very impressive. The rules were unclear to me so I just played around a little. I hope one day to submit an entry which includes music and proper graphics :)

Thanks for the distraction and testing my reflexes! Game worked well in the browser

Thanks for trying the game. In fact I was too busy with technical details to give too much thoughts about the game dynamics and playability. I had idea to go for pattern matches which would have made the order of nucleotides/letter  in the sequence more relevant. Also wanted the player to have to buy the letters. But Game Jam means time crunch. Perhaps I will revisit this in the future.

Graphics are just done with ANSI codes, no curses necessary. This post (not mine) gives an overview: https://xn--rpa.cc/irl/term.html

Interesting spin on the Tetris classic. This definitely has potential.

Could not get the game to run. Black screen in Firefox, and in Chrome the keyboard input is not registered. Reading your devlog with great interest, as I have recently implemented an ECS library myself (and used it for this Jam) and your idea of a triple store is interesting. Also props to you for developing the ECS part at the same time as the game.  Just wished I could play and rate.

Lovely game, the graphics are very nice and having both the jump&run and the fishing part was entertaining. Thanks for a joyful time.

thanks for the kind words. I have not yet found a good way to stress test the library. It was designed with ergonomics rather than effeciency in mind.

Challenging puzzle game. I could not solve the last level. Very well executed.

Very fun game, quite challenging. In between I managed to get a negative amount of money ;)

I like the game graphics. Game was a bit slow, and not always clear to me what was going on and what my progress was. Could not build a workshop, it did substract the mana but not the wood. Being bundled as an Appimage made it very easy to run.

Tried to play this with the keyboard at first, until I noticed the button (which I though would refresh the page). I love the technical challenge behind this game. Refresh rates, at least in my browser, made it diffcult to turn the snake at the right moment. Interesting aprpoach!

Very cool. I am also using the jam to test drive my Scheme ECS framework (github.com/sam-d/klecs). So far I find ECS a great way to structure game development. I will try to better understand the cl-fast-ecs library and how it compares to my implementation

Great work. I also try to write a small devlog on my progress for each day of the jam: https://harebrained.itch.io/defend

Sorry to hear this and thank you for trying this hard! I think packaging is for sure a priority for my next jam.

Thank you for playing! Great that you could find a winning strategy. It goes to show just how complex nature is. As to loosing ATP from the start: luck of the draw: sometimes the initial DNA does not have any open-reading frames. I was actually expecting players to need several tries to understand the dynamics. Having a startup screen with instructions is a great idea though.

Yes, I should know better than to use special character which hurt cross-platform porting. Thank you for playing!

Thank you for playing, and in particular for not giving up immediately! It should have been tested more. I am also on i3/sway., in my testing it would open on the floating layer, perhaps that was the issue here.

Great puzzler. Was able to get through all levels pretty quick. Thank you for the game.

Amazing! Though I did cheat by not calculating the responses to most puzzles but just getting myself a constant. Thank you for this puzzler and refreshing my computer science basics.

I liked the pixel artwork. I took me sometime to understand that you cannot place turrets on the strip so I was clicking like crazy. Thanks for the fun!

Very fun game, new dynamic for me. I find it challenging to alternate between remembering the questions and jump&run in the left panel. Good choice of background music. Full marks!

Very fun game, new dynamic for me. I find it challenging to alternate between remembering the questions and jump&run in the left panel. Good choice of background music. Full marks!

Nice presentation, game crashes when boxing/kicking objects. I enjoyed kicking some butt!

Good level design, sprites feel a bit difficult to read. Music is not my taste. Thank you for the good fun.

Story of my life ;) Fun little time waster, hits close to home for people with depression. I was not able to win or loose this game and got into an endless loop after I maxed my depression and minimized Tiredness. Perhaps this was intended?

I had never heard of such game. Very interesting to play and discover tactics and strategy. Well executed.

How scary to become surrounded by OOP fanatics! Game feels a bit unfinished, and I could not complete it. A game over screen would have been nice. I like the graphics and animations.

The look of the game is gorgeous! The different menus were difficult to understand for me. This feels like a sound basis for a great game.

Do I need to wait until I fully completed my game before submitting or can I submit now, so interested parties can follow the devlog and what will be judged is the state of the game after deadline? This is unclear to me, I would appreciate if somebody could explain. My project page is here: https://harebrained.itch.io/metabolize