Adventure

Advanced game related topics
User avatar
darius676
Enthusiast
Enthusiast
Posts: 310
Joined: Thu Jan 31, 2019 12:59 am
Contact:

Re: Adventure

Post 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
User avatar
idle
Always Here
Always Here
Posts: 6154
Joined: Fri Sep 21, 2007 5:52 am
Location: New Zealand

Re: Adventure

Post by idle »

nice work
threedslider
Enthusiast
Enthusiast
Posts: 521
Joined: Sat Feb 12, 2022 7:15 pm

Re: Adventure

Post by threedslider »

Good job as always !
User avatar
minimy
Addict
Addict
Posts: 821
Joined: Mon Jul 08, 2013 8:43 pm
Location: off world

Re: Adventure

Post by minimy »

Look really nice!
Very good effect when enter in the houses. Nice job!
If translation=Error: reply="Sorry, Im Spanish": Endif
User avatar
darius676
Enthusiast
Enthusiast
Posts: 310
Joined: Thu Jan 31, 2019 12:59 am
Contact:

Re: Adventure

Post 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
User avatar
darius676
Enthusiast
Enthusiast
Posts: 310
Joined: Thu Jan 31, 2019 12:59 am
Contact:

Re: Adventure

Post 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
miso
Enthusiast
Enthusiast
Posts: 636
Joined: Sat Oct 21, 2023 4:06 pm
Location: Hungary

Re: Adventure

Post by miso »

This starts to show some cool things. Great job!
User avatar
MikeHart
User
User
Posts: 19
Joined: Sat Sep 02, 2017 7:29 pm
Location: Germany

Re: Adventure

Post by MikeHart »

Is this all stock PureBasic?
User avatar
NicTheQuick
Addict
Addict
Posts: 1549
Joined: Sun Jun 22, 2003 7:43 pm
Location: Germany, Saarbrücken
Contact:

Re: Adventure

Post 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.
The english grammar is freeware, you can use it freely - But it's not Open Source, i.e. you can not change it or publish it in altered way.
User avatar
darius676
Enthusiast
Enthusiast
Posts: 310
Joined: Thu Jan 31, 2019 12:59 am
Contact:

Re: Adventure

Post 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....
User avatar
darius676
Enthusiast
Enthusiast
Posts: 310
Joined: Thu Jan 31, 2019 12:59 am
Contact:

Re: Adventure

Post by darius676 »

MikeHart wrote: Thu Dec 18, 2025 11:04 am Is this all stock PureBasic?
Yes
User avatar
darius676
Enthusiast
Enthusiast
Posts: 310
Joined: Thu Jan 31, 2019 12:59 am
Contact:

Re: Adventure

Post 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
Post Reply