Page 2 of 2
Re: Adventure
Posted: Fri Oct 03, 2025 8:32 pm
by darius676
Here we go!
https://youtu.be/8qewVO43Y_w
going on with extended/new feature set for sound playback and many changes in presentation and effects

#indiedev #indiegame #indiegames #itchio #Windows #retro #gamedev #gamedevelopement #purebasic #developer #game #gameplay #gameengine #coding #RPG #adventure #Windows11 #windows10
Re: Adventure
Posted: Fri Oct 03, 2025 9:22 pm
by idle
nice work
Re: Adventure
Posted: Mon Oct 06, 2025 2:11 pm
by threedslider
Good job as always !
Re: Adventure
Posted: Tue Oct 07, 2025 10:06 pm
by minimy
Look really nice!
Very good effect when enter in the houses. Nice job!
Re: Adventure
Posted: Sat Nov 22, 2025 10:02 am
by darius676
While working on content, features are add and tons of bug fixing
Now different kinds of GUI supported,
(Mutable) Sound effects like retro disk drive Sound (testing out if it will make mad...)
https://youtu.be/yHz76383AVg?si=9BKO0BOpISECqrzZ
Re: Adventure
Posted: Sat Dec 13, 2025 6:57 pm
by darius676
Procedural system (work in progress)
Endless worlds, endless dungeons, all connected , created on demand, connected and pinned to the story world.
Totaly flexible, random, every game/every new game start, not story based location generated on random basis.
https://youtu.be/W534m_0SpdA?si=7mnsADv5QJ9hDWcG
Re: Adventure
Posted: Sat Dec 13, 2025 7:32 pm
by miso
This starts to show some cool things. Great job!
Re: Adventure
Posted: Thu Dec 18, 2025 11:04 am
by MikeHart
Is this all stock PureBasic?
Re: Adventure
Posted: Thu Dec 18, 2025 12:21 pm
by NicTheQuick
You should have a look at your shadow rendering. In the real world overlapping shadows from a single light source do not show different shadings. It's always one shading for the whole overlap. So you may have to use a dedicated shadow layer where all shadows are being merged together with everything having the same dark color and then it can be applied to the map with one transparency value at once.
Re: Adventure
Posted: Mon Dec 22, 2025 12:36 pm
by darius676
Thank you for your support and input. Yes the problem with the shadows is because of the object based rendering, I will have to find a method for the shadow system....
Re: Adventure
Posted: Mon Dec 22, 2025 12:36 pm
by darius676
MikeHart wrote: Thu Dec 18, 2025 11:04 am
Is this all stock PureBasic?
Yes
Re: Adventure
Posted: Tue Dec 23, 2025 11:37 pm
by darius676
NicTheQuick wrote: Thu Dec 18, 2025 12:21 pm
You should have a look at your shadow rendering. In the real world overlapping shadows from a single light source do not show different shadings. It's always one shading for the whole overlap. So you may have to use a dedicated shadow layer where all shadows are being merged together with everything having the same dark color and then it can be applied to the map with one transparency value at once.
Thank you for your input

could not stopp thinking about it, and so, "SHADOW BROKER SHADOW BAKERY" is new part of my gameengine,
this is still an early "plug in", it does some flickering if area is streamed for the first time, the shadow layer is created in realtime (engine is based on map/object streaming) so I had to find a way to get and "inject" the shadow data. (modular code is king...)
Clip:
https://youtu.be/a2XSJXrbzPQ
"Shadow Bakery" Source Code
Code: Select all
;here we go for the advenced shadow system
;try to realtime "bake" shadows as one screen wide cake/cookie :)
Structure shadow_broker
shadow_position_x.f ;pos on_screen
shadow_position_y.f ;pos on screen
shadow_cake_table_color_HEX_RGB.i ;cake table color e.g.: $000000
shadow_cake_serve.i ;show cake (use this as value if you want to switch between different shadow systems/or switch shadows on/off
shadow_cake_blue_print_id.i ;the cake
shadow_cake_calories_serving.f ;complete cake intensity
shadow_cake_calories_baking.f ; shadow intensity per object
shadow_cake_start_serving.i
shadow_cake_darkness_HEX_RGB.i ;e.g.: $000001
EndStructure
Global shadow_broker.shadow_broker
Procedure E_SHADOW_BROKER_SERVE_CAKE()
;CALL TO DELIVER THE CAKE
If IsSprite(shadow_broker\shadow_cake_blue_print_id)=0
ProcedureReturn #False
EndIf
If shadow_broker\shadow_cake_serve=#False
ProcedureReturn #False
EndIf
DisplayTransparentSprite(shadow_broker\shadow_cake_blue_print_id,0,0,shadow_broker\shadow_cake_calories_serving,shadow_broker\shadow_cake_darkness_HEX_RGB)
shadow_broker\shadow_cake_start_serving=#True
EndProcedure
Procedure E_SHADOW_BROKER_INIT_CAKE_RECIEP_HARDCODED()
;CALL FIRST!
;get all you need for the cake!
;some values are hardcoded for now (debugging, testing, experimental), will be set from script in future:
shadow_broker\shadow_position_x=0
shadow_broker\shadow_position_y=0
shadow_broker\shadow_cake_table_color_HEX_RGB=$000000
shadow_broker\shadow_cake_darkness_HEX_RGB=$000001
shadow_broker\shadow_cake_calories_serving=150
shadow_broker\shadow_cake_calories_baking=255
shadow_broker\shadow_cake_serve=#True ;we use the shadowbroker!
EndProcedure
Procedure E_SHADOW_BROKER_BAKERY()
;CALL FOR NEW CAKE
If shadow_broker\shadow_cake_serve=#False ;no bakery!
ProcedureReturn #False
EndIf
If IsSprite(shadow_broker\shadow_cake_blue_print_id)
FreeSprite(shadow_broker\shadow_cake_blue_print_id)
EndIf
;go for the cake
If ListSize(object_manager())<1
ProcedureReturn #False
EndIf
ClearScreen(shadow_broker\shadow_cake_table_color_HEX_RGB)
ResetList(object_manager()) ;only object in screen !!!!
ForEach object_manager()
;go for the cake piece (only go for objects in screen, pick them out from the complete/streamed map data)
ChangeCurrentElement(world_object(),object_manager()\object_in_screen_id)
If world_object()\object_shadow_use_perspective=#True And world_object()\object_use_isometric=#True And world_object()\object_shadow_intense>0 And world_object()\object_do_not_show=#False ;check if picked object uses shadow
If IsSprite(world_object()\object_shadow_gfx_id)
DisplayTransparentSprite(world_object()\object_shadow_gfx_id,world_object()\object_x+e_engine\e_world_offset_x+world_object()\object_loop_move_actual_x+(0-world_object()\object_shadow_offset_x),world_object()\object_y+e_engine\e_world_offset_y+world_object()\object_loop_move_actual_y+(0-world_object()\object_shadow_offset_y),shadow_broker\shadow_cake_calories_baking, shadow_broker\shadow_cake_darkness_HEX_RGB)
EndIf
EndIf
Next
;get the cake!
shadow_broker\shadow_cake_blue_print_id=GrabSprite(#PB_Any ,0,0,e_engine\e_engine_internal_screen_w,e_engine\e_engine_internal_screen_h,#PB_Sprite_AlphaBlending)
EndProcedure