Skip to main content

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

DavideRisaliti

36
Posts
2
Topics
3
Followers
A member registered Sep 01, 2024 · View creator page →

Creator of

Recent community posts

(2 edits)

thanks a lot for the feedbacks!

We loved the comments and felt aligned with everything. Tricking the player into not understanding the plot until very late it’s hard 😂.

Thanks again for playing it and good job for completing it!

(1 edit)

The engine is ExcaliburJS. About the lighting, since the library does not provide anything related, I achieved a similar (yet very, very raw) effect of "lighting" using a PostProcessing Shader. The approach is straightforward:

Let me describe the shader I used (here) using this stripped version:

// As uniforms, you need (at least)
uniform sampler2D u_image; // current image
uniform vec2 u_resolution; // screen resolution
uniform int u_lightCount; // light count
uniform vec2 u_lightPos[16]; // light position
uniform float u_lightIntensity[16]; // light intensity
in vec2 v_texcoord; // text coords 
out vec4 fragColor; // final color
void main() {
    // Here I get the current pixel color
    vec4 tex = texture(u_image, v_texcoord);
    
    // Compute pixel position
    // Since its a post processing effect, its fairly easy
    vec2 px_pos = vec2(v_texcoord.x * u_resolution.x, (1.0 - v_texcoord.y) * u_resolution.y);
    
    // Find intesity of lighting
    float maxIntensity = 0.0; // here you store the maximum
    for (int i = 0; i < u_lightCount; i++) { // iterate over lights
        vec2 lightPos = u_lightPos[i]; // get light pos (in screen coordinates!)
        float lightIntensity = u_lightIntensity[i]; // get light intensity
        vec2 diff = lightPos - px_pos; // compute distance vector
        float dist = length(diff); // get magnitude of the distance vector
    
        // Enter only if in light range
        if (dist < lightIntensity) {
            float dOverI = (dist / lightIntensity); // divide by maximum distance to get value between 0 and 1
            float intensity = (dOverI > 0.75) ? 0.5 : 1.0; // set intesity to half above 75% of distance
            maxIntensity = max(maxIntensity, intensity); // update maximum
        }
    }
    
    // Set final pixel color using intesity
    fragColor.rgb = tex.rgb * maxIntensity;
    fragColor.a = tex.a; // alpha is untouched
}

It's pretty simple and rough but can get the job done in less time than a solid lighting equation.

Let me know! If you need anything more, send me an email and we can share discord handles and chat there!

Comments like this push us through jams and make all the effort worth. We are so happy that you appreciated the game and felt the consistency we put together ❤️.

Thank you so much for taking the time to write the comment, it means a lot to us!

thanks a lot!! We do really appreciate your comments! ❤️

Good job on pushing yourself and let me know if I can help you about anything regarding the code on Git.

thanks for the feedback. That’s a great idea!!

thank you so much. I’m sorry for the unforgiving ghost hitbox, will try to make it bilanced next time, thanks for the feedback!

thank you for playing!

Unfortunately I understood the issues only a bit later and found the gameplay a little harder than expected by reading comments. I added the manual exactly for that.


The idea was to make the player scared of ghosts, thus being unable to enter in line of sight with them. Turned out to be a bit confusing, hope you liked it any case.


Thanks for the feedback!

(1 edit)

Oh, thank you very much! We do really appreciate your words! These comments are a bless.

About the key, yes, I forgot that we had another key available to bind as an action…. Kinda messed up a couple of levels.

Thank you nonetheless for playing it! We are very happy ❤️

Thanks! We added it to make everyone able to reach the end and explore the narrative. Thanks for appreciating it 

thanks for playing it! We are very happy that you appreciated the story! Good job on grasping the details ❤️

I've added some info to help anyone stuck somewhere since we've spent many hours on the ending and would appreciate some feedbacks. Thanks!

I've added some info to help anyone stuck somewhere since we've spent many hours on the ending and would appreciate some feedbacks. Thanks!

Thanks for the feedback!
As a suggestion, the jump can be used even mid-fall.

Thanks for the feedback!
To ease it up, we built always an "alternative" path and keep in mind that the jump can be used even mid-fall.

For the 4-color limitation, I coded a dumb post processing shader that converts everything to a 4-color palette :)
Its useful to make sure to stick to the rules, here's the core section:

uniform sampler2D u_image; // final image as tex
uniform vec3 u_palette[4]; // color palette
in vec2 v_texcoord; // text coords
out vec4 fragColor; // final color
void main() {
    // Since its a PostProcessing shader, I have access to the final image as texture
    vec4 tex = texture(u_image, v_texcoord);
    // Than I compute the lumimance (color => grey-scale conversion)
    // This is optional, you can even do normal weighted average
    // by adding each channel and dividing by 3.
    float avg = 0.2126 * tex.r + 0.7152 * tex.g + 0.0722 * tex.b;
    // Than I divide the color spectrum in 4 sections (0.25, 0.50, 0.75, 1.0)
    // and assign an index for each of them, going from black-ish to white-ish
    //         x <  0.25   => #0
    // 0.25 <= x <  0.50   => #1
    // 0.50 <= x <  0.75   => #2
    // 0.75 <= x           => #3
    int index = (avg < 0.25) ? 0 : (avg < 0.5) ? 1 : (avg < 0.75) ? 2 : 3;
    // Than the index access a palette (uniform of 4 vec3)
    fragColor = vec4(u_palette[index], 1.0);
}

For palettes, you can access sites like this:
https://lospec.com/palette-list

For Godot, PostProcessing shaders can be integrated easily, try following this guide:
https://docs.godotengine.org/en/stable/tutorials/shaders/custom_postprocessing.h...

Hi Ilias! Nice to meet you :)
Sorry to hear about your space bar, next time I will think about adding more than one binding per action.
About game freezing, as I answered to the others mentioning it, It was related to a bug in my code :sad:, now its gone.

About your questions:

Is Excalibur a game engine? Is it user-friendly and easy to master?
Yes, its a 2D game engine made with ts. You can check it here. It's my second time using it so I'm fairly new but it has a lot of things that comes with it and its documentation its friendly enough to start developing. I do not recommend using it if you're new to game dev, since many things do not come with doc and you will need to "find your way" (as I did in my last jam for the main rotation, you can check the game here).

What tools or technologies were essential to the development of your game?
An IDE for editing ts files (vscode is good enough for starting), npm installed locally (you can check it here) and thats it.

How did you approach balancing productivity and time constraints within the game jam timeframe?
This time I did manage poorly :(. I started working on the game without a good design and having only 6hrs left. It was my first time using Animations, Spritesheets and Tilemaps so it took a big chunk of my time understanding these new APIs. However, in the average scenario, I think giving yourself enough time to design the game (with pen & paper) will make the biggest difference! Developing towards a specific destination is 10x better than going at random directions.

What inspired the core idea behind your game?
Brainstorming ideas quickly, thinking about what was I able to achieve with this little time, made the difference and let me focus on a simple design with few resources to protect  and a fighting character, using sprites and animations to learn the most :)

Could you tell me more about your creative process and the motivations behind your project?
Nothing much to say, just use pen & paper and focus on a smaller achievable objective that you can improve on (if time left). Starting with the "scarse resource" concept and the environment being "desert" (my take on the theme), narrowed my thinking and drove me towards an idea of "defending" few resources, thus the plants in the middle.

Thanks again for the comment!

Thanks! Character's sprites are from this pack: https://beyonderboy.itch.io/desert-map-tileset-16x16 and environments' are from this one: https://beyonderboy.itch.io/desert-map-tileset-16x16.

Thanks! Character's sprites are from this pack: https://beyonderboy.itch.io/desert-map-tileset-16x16 and environments' are from this one: https://beyonderboy.itch.io/desert-map-tileset-16x16.

Thanks! Character's sprites are from this pack: https://beyonderboy.itch.io/desert-map-tileset-16x16

Thanks for the feedback!. Sadly it was related to an event being emitted from a dead entity and was hard to replicate :(. Now its gone!

Thanks for the feedback!. About the issue, didnt have time to test it properly during the jam but the issue now is gone :). It was related to an event being emitted from a dead entity.

Can i submit? From the description seems that we should be able to submit even after, am I wrong?

https://daviderisaliti.itch.io/desertsurvivor

Hi everyone. I worked on improving my game , focusing on the graphics and would love to have some feedback!

https://daviderisaliti.itch.io/quadrush

New one

Old one

Damn! Thats a pretty solid score!
I'm actively working on the graphics to give a little bit of dignity to this primitive hell :)

thanks! I did try to deliver a challenging game 

I code it manually and took 20% of the time I had. I’m glad you liked it!

thanks!

Thanks!

Thanks!

Thanks, appreciate it! I have a graphics style in mind and will work on it in the next days

Thanks! worked on it like 20% of the entire jam :)

Thanks a lot. Glad you liked it. Already rated yours, its a hit, good job and wonderful art, I loved it.

(1 edit)

Understandable. Thanks for the feedback!

I really appreciate the comment, thanks a lot!

Initially the difficulty scaled with more levels but I found it to be more interesting when scaling faster aahahaha.

Thanks! Worked a lot on the smoothness while didnt have time to work on looks :(. Had lots in mind but no time.
The game scales with time and by completing level but you get more points while completing harder levels. Ill take a look at yours

Thanks man!