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