Jump to content
The Dark Mod Forums

MirceaKitsune

Member
  • Posts

    1929
  • Joined

  • Last visited

  • Days Won

    22

Posts posted by MirceaKitsune

  1. 2 hours ago, JackFarmer said:

    I am not sure if I understand correctly, the camera has been developed by grayman and Obsttorte (I think, not sure about the modeller though) and  it is included with 2.07.

    Anyway, thank you for playing and glad that you liked it. HH: TLC will definitely not include spiders, that should give you a much easier ride then. :)

    Sweet! I didn't know that, was sure it's a custom asset as I never saw it elsewhere. I love how TDM and those FM's are evolving, great work everyone ?

  2. Not a problem: I was able to finish it and find many areas without running into them! Thank goodness for that :)

    Spoiler

    This was a very unique FM that I wasn't expecting: From the underground tomb to the monkey people characters, it definitely set itself apart from most missions! It almost felt like playing a slightly different game. I think this is the sort of thing TDM needs more of.

    As is usual when I see such unique assets, I wish the team could include those characters into vanilla TDM. IIRC we actually had a lycan character which was later removed... this could be a very good replacement. I actually have an old plan for a campaign in mind where I could use them myself... would that be okay with the person who created them?

     

  3. Pretty good FM overall. I especially appreciated the more modern elements to it, you used a nice mixture of themes and styles here.

    The only thing that was a personal annoyance is the presence of a mandatory objective involving killing the spiders: I have a script that removes them from all maps by default, due to having arachnophobia which makes missions with giant spiders very hard to play. I had to temporarily disable it to be able to complete the mission. Due to that I only shot them from a distance, then had to noclip through the basement area instead of doing the area normally. Still loved the FM... it's just a personal thing that made it harder to play.

    Spoiler

    The presence of security cameras was a very pleasant surprise! It brought me back to the DeusEx games: That's when I had to sneak around the room to dodge their field of vision as they were rotating. First time I could experience that in The Dark Mod and it brought a very nice feeling! I really wish they could be included in vanilla TDM so more mission creators could use them... sadly the majority will likely feel they're too modern for the steampunk atmosphere, even though I never felt they broke the theme for me.

     

  4. Took me a few days until I figured out what was causing the crash by random chance: I'm using a custom pk4 which overrides def/tdm_ai_monster_spider.def and sets all spider entities to target_null. The reason being that I have arachnophobia and literally couldn't play missions that have giant spiders in them. Had that mod for years and it didn't break any other FM's, but for this one it's throwing that error instead. So yeah, not a bug... it was all on my end. As this is a good FM I'll make the effort to temporarily remove my patch and play it with the spiders enabled... if it's that bad I'm prolly going to noclip through the area they're in ?

  5. 35 minutes ago, peter_spy said:

    It's not a 2.07 problem, it was tested on it and it works fine. Trying downloading the whole clean 2.07 installation, or at least delete your cfg file so the game recreates it from scratch.

    Weird. I'll try a fresh config if nothing else works, also re-download the FM from the installer. No other mission crashes on startup, I've played dozens over the past month... including part 1 of this one; It must be something specific to this.

  6. 2 hours ago, stgatilov said:

    r_fboResolution is called "Render Scale" in graphics menu. Players can set its value lower than 1 on low-end machines in order to make graphics faster by sacrificing precision/resolution (image will be blurry). You have value 1.7, which is above 1, so in your case it works like supersampling --- which is a bruteforce approach for antialiasing. Most likely you got this value during 2.06: at that time things were pretty weird and some hard-to-follow settings were enabled automatically depending on other options. Antialiasing was fixed in 2.07, but you did not reset your config, hence the non-default value persisted up to this day.

    When you reset r_fboResolution from 1.69 to its default value 1, your GPU will have almost three times less pixels to process. So this change will definitely improve your performance (in theory, up to 3 times). But you will notice aliasing on hard almost vertical edges. In order to fix it, set Antialiasing in game menu to 2x or 4x. You can also experiment with other settings like soft shadows: it is very likely that settings which you could not run before will run normally now.

    Oh wow... thanks again. Yeah I didn't change it manually, but my config is old like from the days of TDM 2.03 so it likely got set back then. Who knows how much FPS I was losing without even knowing, can't wait to see the difference later today.

  7. 5 hours ago, kingsal said:

    Hmm. When was the last time you update you TDM? This mission was tested in 2.07 and should be working fine. 

    Ill look into this.

    I ran the updater script again, but as expected it tells me my installation is already up to date. I looked in the mission downloader too just in case, there doesn't seem to be any update to the FM marked with a * (I install them all from that menu).

  8. 9 hours ago, stgatilov said:

    I managed to reproduce the problem: it is caused by r_fboResolution.

    As a workaround, execute "r_fboResolution 1" in console, and the problem will go away.

    Aha... thank you! I shall try that next time I play. Does it have any undesired side effects, like decreasing the quality of any effects or breaking other shaders?

  9. 1 hour ago, stgatilov said:

    According to good issue-reporting policy, please, attach your darkmod.cfg and condump when this happens to the issue.

    I'm not currently playing to generate an useful condump, but here's my darkmod.cfg in the meantime:

    unbindall
    bind "TAB" "_impulse19"
    bind "ENTER" "_impulse51"
    bind "ESCAPE" "togglemenu"
    bind "SPACE" "_moveup"
    bind "-" "_impulse50"
    bind "0" "_impulse10"
    bind "1" "_impulse1"
    bind "2" "_impulse2"
    bind "3" "_impulse3"
    bind "4" "_impulse4"
    bind "5" "_impulse5"
    bind "6" "_impulse6"
    bind "7" "_impulse7"
    bind "8" "_impulse8"
    bind "9" "_impulse9"
    bind "=" "_impulse49"
    bind "[" "_impulse47"
    bind "\" "inventory_hotkey ''"
    bind "]" "_impulse48"
    bind "^" "_impulse0"
    bind "a" "_moveleft"
    bind "b" "_impulse27"
    bind "c" "_impulse23"
    bind "d" "_moveright"
    bind "e" "_impulse46"
    bind "f" "_impulse44"
    bind "g" "inventory_use '#str_02396'"
    bind "i" "inventory_cycle_group '#str_02391'"
    bind "k" "inventory_cycle_group '#str_02392'"
    bind "l" "inventory_use '#str_02395'"
    bind "m" "inventory_cycle_maps"
    bind "n" "toggle r_showportals"
    bind "o" "_impulse30"
    bind "p" "inventory_cycle_group '#str_02389'"
    bind "q" "_impulse45"
    bind "r" "_impulse52"
    bind "s" "_back"
    bind "u" "_impulse51"
    bind "v" "inventory_hotkey '#str_02397'"
    bind "w" "_forward"
    bind "y" "clientMessageMode 1"
    bind "z" "_zoom"
    bind "BACKSPACE" "_impulse0"
    bind "PAUSE" "pause"
    bind "UPARROW" "_forward"
    bind "DOWNARROW" "_back"
    bind "LEFTARROW" "_left"
    bind "RIGHTARROW" "_right"
    bind "ALT" "_impulse23"
    bind "CTRL" "_button5"
    bind "SHIFT" "_speed"
    bind "DEL" "_lookdown"
    bind "PGDN" "_lookup"
    bind "END" "_impulse18"
    bind "F3" "_impulse17"
    bind "F4" "savegame quick"
    bind "F5" "loadgame quick"
    bind "F6" "_impulse20"
    bind "F7" "_impulse22"
    bind "F12" "screenshot"
    bind "KP_MINUS" "loadgame quick"
    bind "KP_PLUS" "savegame quick"
    bind "MOUSE1" "_attack"
    bind "MOUSE2" "_zoom"
    bind "MOUSE3" "_impulse41"
    bind "MWHEELDOWN" "_impulse14"
    bind "MWHEELUP" "_impulse15"
    seta com_automation_port "3879"
    seta net_serverDlTable ""
    seta net_serverDlBaseURL ""
    seta net_serverDownload "0"
    seta mod_validSkins "skins/characters/player/marine_mp;skins/characters/player/marine_mp_green;skins/characters/player/marine_mp_blue;skins/characters/player/marine_mp_red;skins/characters/player/marine_mp_yellow"
    seta g_mapCycle "mapcycle"
    seta g_voteFlags "0"
    seta g_gameReviewPause "10"
    seta g_countDown "10"
    seta g_password ""
    seta g_rotoscope "0"
    seta g_testModelHeadJoint "Spine2"
    seta g_testModelHead "atdm:ai_head_citywatch"
    seta g_skipViewEffects "0"
    seta g_fov "90"
    seta g_showBrass "1"
    seta g_showProjectilePct "0"
    seta g_showHud "1"
    seta g_showPlayerShadow "1"
    seta pm_air_regainingSpeed "4"
    seta pm_air "1800"
    seta pm_modelView "0"
    seta pm_thirdPersonDeath "0"
    seta pm_thirdPerson "0"
    seta pm_thirdPersonClip "1"
    seta pm_thirdPersonAngle "0"
    seta pm_thirdPersonHeight "0"
    seta pm_thirdPersonRange "80"
    seta pm_bobroll "0.0015"
    seta pm_bobpitch "0.001"
    seta pm_bobup "0.03"
    seta pm_runroll "0.003"
    seta pm_runpitch "0.001"
    seta pm_runbob "0.35"
    seta pm_walkbob "0.3"
    seta pm_crouchbob "0.2"
    seta pm_bboxwidth "32"
    seta pm_crouchrate "0.87"
    seta pm_deadviewheight "10"
    seta pm_deadheight "20"
    seta pm_normalviewheight "68"
    seta pm_normalheight "74"
    seta pm_crouchviewheight "34"
    seta pm_crouchheight "38"
    seta pm_maxviewpitch "89"
    seta pm_minviewpitch "-89"
    seta pm_noclipspeed "200"
    seta pm_walkspeed "70"
    seta pm_stepsize "16"
    seta pm_jumpheight "48"
    seta g_enablePortalSky "2"
    seta g_showcamerainfo "0"
    seta g_damageScale "1"
    seta g_decals "1"
    seta g_doubleVision "1"
    seta g_bloodEffects "1"
    seta g_projectileLights "1"
    seta g_muzzleFlash "1"
    seta gui_CenterY "0.5"
    seta gui_CenterX "0.5"
    seta gui_Height "1.0"
    seta gui_Width "1.0"
    seta r_fovRatio "0"
    seta r_aspectRatio "1"
    seta ui_showGun "1"
    seta ui_autoSwitch "1"
    seta ui_team "Red"
    seta ui_skin "skins/characters/player/marine_mp"
    seta ui_name "Player"
    seta si_serverURL ""
    seta si_spectators "1"
    seta si_usePass "0"
    seta si_warmup "0"
    seta si_teamDamage "0"
    seta si_timeLimit "10"
    seta si_maxPlayers "4"
    seta si_map "game/mp/d3dm1"
    seta si_gameType "singleplayer"
    seta si_name "DOOM Server"
    seta tdm_lod_bias "3.0"
    seta tdm_voice_from_off_volume "0"
    seta tdm_voice_player_volume "0"
    seta tdm_music_volume "-19.682539"
    seta tdm_ambient_method "0"
    seta tdm_door_auto_open_on_unlock "0"
    seta tdm_bow_aimer "1"
    seta tdm_lp_debug_hud "0"
    seta tdm_lp_pawlow "0"
    seta tdm_lp_randomize "1"
    seta tdm_lp_auto_pick "0"
    seta tdm_lp_autopick_attempts "3"
    seta tdm_lp_pick_timeout "750"
    seta tdm_lp_sample_delay "10"
    seta tdm_lp_base_count "5"
    seta tdm_empty_model "models/darkmod/misc/system/empty.lwo"
    seta tdm_lg_model "models/darkmod/misc/system/lightgem.lwo"
    seta tdm_lg_weak "0"
    seta tdm_lg_interleave_min "40"
    seta tdm_lg_interleave "1"
    seta pm_rope_snd_rep_dist "32"
    seta pm_min_stepsound_interval "200"
    seta pm_stepvol_crouch_creep "-7"
    seta pm_stepvol_crouch_run "4"
    seta pm_stepvol_crouch_walk "-2"
    seta pm_stepvol_creep "-5"
    seta pm_stepvol_run "8"
    seta pm_stepvol_walk "0"
    seta tdm_underwater_blur "3"
    seta tdm_rope_pull_force_factor "140"
    seta gui_objectiveTextSize "1"
    seta gui_barSize "1"
    seta gui_lightgemSize "1"
    seta gui_bigTextSize "1"
    seta gui_smallTextSize "1"
    seta gui_iconSize "1"
    seta tdm_inv_use_visual_feedback "1"
    seta tdm_door_control "0"
    seta tdm_inv_use_on_frob "1"
    seta tdm_inv_loot_sound "frob_loot"
    seta tdm_inv_hud_pickupmessages "1"
    seta tdm_hud_hide_lightgem "0"
    seta tdm_hud_opacity "1"
    seta tdm_grabber_reverse_control "0"
    seta tdm_bounce_sound_min_vel "80"
    seta tdm_bounce_sound_max_vel "400"
    seta tdm_throw_max_vel "900"
    seta tdm_throw_time "1200"
    seta tdm_throw_max "3500"
    seta tdm_throw_min "600"
    seta tdm_phys_show_momentum "0"
    seta tdm_ai_hearing_hardcore "1.5"
    seta tdm_ai_hearing_challenging "1.0"
    seta tdm_ai_hearing_forgiving "0.6"
    seta tdm_ai_hearing_nearly_deaf "0.2"
    seta tdm_ai_hearing "0"
    seta tdm_ai_vision_hardcore "1.5"
    seta tdm_ai_vision_challenging "1.2"
    seta tdm_ai_vision_forgiving "0.6"
    seta tdm_ai_vision_nearly_blind "0.2"
    seta tdm_ai_vision "0"
    seta tdm_melee_difficulty "normal"
    seta tdm_melee_max_particles "10"
    seta tdm_melee_forbid_auto_parry "0"
    seta tdm_melee_auto_parry "1"
    seta tdm_melee_invert_parry "0"
    seta tdm_melee_invert_attack "0"
    seta tdm_melee_mouse_thresh_ "0"
    seta tdm_dragged_item_highlight "1"
    seta tdm_drag_encumber_max "0.4"
    seta tdm_drag_encumber_maxmass "55"
    seta tdm_drag_encumber_minmass "10"
    seta tdm_drag_jump_masslimit "20"
    seta tdm_drag_af_free "0"
    seta tdm_drag_af_ground_timer "800"
    seta tdm_drag_damping_af "0.4"
    seta tdm_drag_damping "0.0"
    seta tdm_drag_stuck_dist "38.0"
    seta tdm_drag_force_max "100000"
    seta tdm_drag_limit_force "1"
    seta tdm_collision_damage_scale_horiz "0.5"
    seta tdm_collision_damage_scale_vert "1"
    seta tdm_frobhelper_ignore_size "40.0"
    seta tdm_frobhelper_fadeout_duration "500"
    seta tdm_frobhelper_fadein_duration "1500"
    seta tdm_frobhelper_fadein_delay "500"
    seta tdm_frobhelper_alpha "1.0"
    seta tdm_frobhelper_active "1"
    seta tdm_frob_fadetime "100"
    seta tdm_frob_width "10.0"
    seta tdm_frob_distance_default "63"
    seta pm_lean_toggle "0"
    seta pm_lean_door_bounds_exp "8.0"
    seta pm_lean_door_max "40"
    seta pm_lean_door_increments "10"
    seta pm_lean_to_valid_increments "25"
    seta pm_lean_forward_stretch "15"
    seta pm_lean_forward_height "0.4"
    seta pm_lean_forward_time "400.0"
    seta pm_lean_forward_angle "2"
    seta pm_lean_stretch "2"
    seta pm_lean_height "0.4"
    seta pm_lean_time "400.0"
    seta pm_lean_angle "15.0"
    seta tdm_reattach_delay "100"
    seta tdm_crouch_toggle_hold_time "400"
    seta tdm_toggle_crouch "1"
    seta tdm_footfall_sounds_movetype_specific "1"
    seta pm_mantle_pullFast_msecs "450"
    seta pm_mantle_maxLowObstacleHeight "36.0"
    seta pm_mantle_minflatness "0.707"
    seta pm_mantle_height "0.2"
    seta pm_mantle_reach "0.5"
    seta pm_weightmod "1"
    seta pm_push_max_mass "200"
    seta pm_push_heavy_threshold "0.15"
    seta pm_push_accel_time "1000"
    seta pm_push_start_delay "1000"
    seta pm_push_maximpulse "300"
    seta pm_pushmod "0.15"
    seta pm_max_swimspeed_mod "1.4"
    seta pm_crouchmod "0.54"
    seta pm_creepmod "0.44"
    seta pm_runmod "2.12"
    seta tdm_savegame_compress "1"
    seta tdm_force_savegame_load "0"
    seta tdm_mainmenu_confirmquit "1"
    seta tdm_debug_aastype "aas32"
    seta tdm_allow_http_access "1"
    seta tdm_proxy_pass ""
    seta tdm_proxy_user ""
    seta tdm_proxy ""
    seta tdm_fm_restart_delay "0"
    seta tdm_default_relations_def "atdm:team_relations_default"
    seta tdm_show_trainer_messages "1"
    seta tdm_menu_music "1"
    seta tdm_wideScreenMode "7"
    seta tdm_ai_show_aasfuncobstacle_state "0"
    seta tdm_show_health "0"
    seta tdm_ai_debug_greetings "0"
    seta tdm_ai_debug_transition_barks "0"
    seta tdm_ai_opt_nolipsync "0"
    seta tdm_ai_opt_update_enemypos_interleave "48"
    seta tdm_ai_opt_interleavethinkframes "0"
    seta tdm_ai_opt_interleavethinkskipPVS "0"
    seta tdm_ai_opt_interleavethinkmaxdist "0"
    seta tdm_ai_opt_interleavethinkmindist "0"
    seta tdm_ai_search_type "4"
    seta tdm_ai_visdist_show "0.0"
    seta tdm_ai_search_show "0.0"
    seta tdm_showko "0"
    seta tdm_showsprop_radius "0"
    seta tdm_showsprop "0"
    seta tdm_spr_debug "0"
    seta tdm_sndprop_disable "0"
    seta tdm_ai_acuity_susp "1.2"
    seta tdm_ai_acuity_L5 "1.5"
    seta tdm_ai_acuity_L4 "1.3"
    seta tdm_ai_acuity_L3 "1.1"
    seta tdm_ai_show_conversationstate "0"
    seta tdm_ai_show_enemy_visibility "0"
    seta tdm_ai_sight_scale "1000.0"
    seta tdm_ai_sight_thresh "1.0"
    seta tdm_ai_showelevator "0"
    seta tdm_ai_showdoor "0"
    seta tdm_ai_debug_blocked "0"
    seta tdm_ai_showAASarea "0"
    seta tdm_ai_showgoalpos "0"
    seta tdm_ai_showdest "0"
    seta tdm_ai_showalert "0"
    seta tdm_ai_showtasks "0"
    seta tdm_ai_showanimstate "0"
    seta tdm_ai_showko "0"
    seta tdm_ai_showfov "0"
    seta tdm_ai_debug "0"
    seta tdm_ai_bumpobject_impulse "250"
    seta tdm_ai_tact "20.0"
    seta tdm_ai_sight_combat_cutoff "20.0"
    seta tdm_ai_sightmin "15.0"
    seta tdm_ai_sightmax "40.0"
    seta tdm_ai_sight_mag "1.0"
    seta tdm_ai_sight_prob "0.7"
    seta tdm_ai_showname "0"
    seta tdm_ai_showbark "0"
    seta tdm_ai_sndvol "0.0"
    seta tdm_player_wait_until_ready "1"
    seta in_grabmouse "0"
    seta in_grabkeyboard "0"
    seta in_nowarp "0"
    seta in_nograb "0"
    seta in_dgamouse "0"
    seta in_mouse "1"
    seta v_nowmfullscreen "0"
    seta sys_videoRam "512"
    seta sys_lang "english"
    seta s_decompressionLimit "6"
    seta s_useEAXReverb "1"
    seta s_numberOfSpeakers "2"
    seta s_doorDistanceAdd "450"
    seta s_globalFraction "0.8"
    seta s_subFraction "0.75"
    seta s_playDefaultSound "1"
    seta s_volume_dB "0"
    seta s_meterTopTime "2000"
    seta s_reverse "0"
    seta s_spatializationDecay "2"
    seta s_maxSoundsPerShader "0"
    seta s_device "default"
    seta s_diffractionMax "10"
    seta gui_mediumFontLimit "0.30"
    seta gui_smallFontLimit "0.15"
    seta r_maxShadowMapLight "1000"
    seta r_shadowMapSinglePass "0"
    seta r_useFenceSync "1"
    seta r_frameIndexMemory "16384"
    seta r_frameVertexMemory "16384"
    seta r_cinematic_legacyRoq "0"
    seta r_fboSeparateStencil "0"
    seta r_fboResolution "1.69"
    seta r_shadowMapSize "1024"
    seta r_fboSharedDepth "0"
    seta r_fboDepthBits "24"
    seta r_fboColorBits "32"
    seta r_nVidiaOverride "1"
    seta r_useFBO "1"
    seta r_useGLSL "1"
    seta r_useBfgPortalCulling "0"
    seta r_postprocess_bloomKernelSize "2"
    seta r_postprocess_bloomIntensity "2"
    seta r_postprocess "1"
    seta r_screenshot_format "jpg"
    seta r_debugArrowStep "120"
    seta r_debugLineWidth "1"
    seta r_debugLineDepthTest "0"
    seta com_smp "1"
    seta r_forceLoadImages "0"
    seta r_testARBProgram "1"
    seta r_shadows "2"
    seta r_shadowPolygonFactor "0"
    seta r_shadowPolygonOffset "-1"
    seta r_offsetunits "-0.1"
    seta r_offsetfactor "-2"
    seta r_clear "2"
    seta r_useSoftParticles "1"
    seta r_skipDepthCapture "0"
    seta r_skipBump "0"
    seta r_skipSpecular "0"
    seta r_skipNewAmbient "0"
    seta r_ambientGamma "1"
    seta r_ambientMinLevel "0"
    seta r_brightness "1.25"
    seta r_gamma "1.25"
    seta r_swapInterval "1"
    seta r_softShadowsRadius "1.047616"
    seta r_softShadowsQuality "0"
    seta r_customHeight "1080"
    seta r_customWidth "1920"
    seta r_fullscreen "1"
    seta r_multiSamples "4"
    seta image_mipmapMode "2"
    seta image_blockChecksum "0"
    seta image_downSizeLimit "256"
    seta image_ignoreHighQuality "0"
    seta image_downSizeBumpLimit "128"
    seta image_downSizeSpecularLimit "64"
    seta image_downSizeBump "0"
    seta image_downSizeSpecular "0"
    seta image_usePrecompressedTextures "1"
    seta image_useNormalCompression "1"
    seta image_useAllFormats "1"
    seta image_useCompression "1"
    seta image_preload "1"
    seta image_roundDown "1"
    seta image_forceDownSize "0"
    seta image_downSize "0"
    seta image_lodbias "0"
    seta image_anisotropy "16"
    seta image_filter "GL_LINEAR_MIPMAP_LINEAR"
    seta r_cinematic_checkImmediately "0"
    seta r_cinematic_log_flush "0"
    seta r_cinematic_log_ffmpeg "0"
    seta r_cinematic_log "0"
    seta com_maxFPS "166"
    seta com_savegame_preview_format "jpg"
    seta com_numQuickSaves "2"
    seta com_guid ""
    seta com_fixedTic "0"
    seta gui_configServerRate "0"
    seta m_strafeSmooth "4"
    seta m_smooth "2"
    seta m_strafeScale "6.25"
    seta m_yaw "0.022"
    seta m_pitch "0.022"
    seta sensitivityMenuOverride "0"
    seta sensitivityMenu "1.0"
    seta sensitivity "5"
    seta in_toggleZoom "0"
    seta in_toggleCrouch "0"
    seta in_toggleRun "0"
    seta in_alwaysRun "1"
    seta in_freeLook "1"
    seta in_anglespeedkey "1.5"
    seta in_pitchspeed "140"
    seta in_yawspeed "140"
    seta com_preloadDemos "0"
    seta com_compressDemos "1"
    seta com_product_lang_ext "1"
    seta logFile "0"
    seta com_showFPSavg "4"
    seta com_showFPS "0"
    seta com_purgeAll "0"
    seta r_skipDynamicShadows "0"

     

  10. https://bugs.thedarkmod.com/view.php?id=5068

    Sometimes, when going underwater, the shader responsible for blurring the view will shrink the image to roughly 1/4 of the screen (1/2 both horizontally and vertically) and position it in the lower-left corner, while leaving a jumble of textures to display in the background. This only seems to happen on rare occasions; My latest test suggest it occurs if the player has taken any damage and the health bar is showing up on the HUD. I'm running TDM 2.07 x64 on Linux (openSUSE Tumbleweed) with the free video drivers (amdgpu).

    penny2_1_2019-11-26_02.58.29.jpg

  11. Another very good FM. The mapping and atmosphere was rather unique compared to the vast majority of missions, I loved the design you went for! I only noticed a few minor issues, such as missing menu music (I hear a series of beeps when I start it up) and there's a space across the hinges of doors through which you can see the skybox when a door is closed.

    If licensing permits and the authors are okay with this, I'd encourage including this lovely skybox into vanilla TDM, as it's very high quality and sets a beautiful theme. Also the high quality textures for the objectives page, IMO they look far better than the current default ones.

  12. Been trying to get back into finishing a FM I started years ago. I noticed one of the things that's taking me the most is adding and positioning entities and models on the map. This would be a good time for two useful newbie questions:

    1. Is there a way to tell DR to add an entity on the surface of the last selected brush? It tends to add it at the origin point, so I always need to drag it vertically to align it.
    2. Is there a shortcut to center all viewports to the currently selected item? A lot of time is wasted trying to find my selection in the 2D views. I'm hoping for something like the numpad "." in Blender, which focuses the view to the thing you currently have selected.
  13. 4 minutes ago, wesp5 said:

    Even so, they never show an overall awareness that something weird is going on if they see doors being open that shouldn't be. In that regard I agree with Destined, how should they assume a shadow belongs to an intruder and not another guard?

    I was actually thinking to suggest that as well; I always found it funny that if the player opens and closes a door, an AI looking at that door will never question "why does the door seem to be moving on its own"? But like others said, it needs to be thought out whether this would negatively impact the gameplay.

    In this case though it doesn't necessarily need to trigger an alert: If all voice actors are still around, I'd rather just see a voice added instead! Something like the AI saying "is someone at the door" or "why is that moving on its own", similarly to how they complain about lights seemingly going out on their own ?

  14. Those are all good points I admit. I mainly thought of this from the perspective of "hey, I thought of an easy way that we could finally make this work... maybe it's something we could play around with, for the sake of making everything even more complete and realistic". When I work on a project I tend to want to implement cool things that might be useful, often times just to see that I could code them and get it working efficiently. Perhaps I got a bit carried away, though I'm still glad I shared this idea just in case it inspires something of use.

  15. 2 minutes ago, Abusimplea said:

    Indirect player detection through AI seeing the player's shadow or the player obstructing a direct or indirect (lit surface) light source has been discussed before.

    Such features where generally seen as too frustrating for the average player. There are probably only a few who would like the added realism even if it would come without visualization for the player.
    In general, in-world visualizations (apart from the frob highlight) seems to be a taboo in the TDM community (looks like it instantly converts TDM to a modern Deus Ex cover shooter).
    So hinting players about the possibility of AI seeing their shadow or that they cover a light source is a hard problem - if you want to have the slightest chance of the feature making it into the base mod.
    And even if solved, it would probably still be a feature only enabled by  a minority of the TDM player base - wich itself is a minority of the stealth game player base already...

    And as usual: Developer time is scarce. No member of the group that would like to have more indirect detection (wich includes me) has the skill and/or time to do it.

    I've seen discussion on the matter before. This time I wanted to provide an actual algorithm idea, since IIRC finding a good implementation approach was one problem.

    It would make sense for this to be a separate option in the difficulty panel and disabled by default. Honestly even I might not use it if it proved too annoying! Still I think it would be a fun thing to have... even just to see how ingeniously it can be implemented, how well one could code accurate shadow detection with minimal performance impact.

  16. 1 minute ago, Springheel said:

    Setting aside any questions about how difficult this would be to do (or whether the end result would even be desirable), how is it you think this system of additional traces, scans, and collision checks won't decrease performance?

    I don't know the exact performance cost of tracing a line from point A toward point B and checking if it hits a solid surface. Typically those operations are simple, a modern CPU should be able to handle them acceptably... but it depends on the projection algorithm used for surface detection.

    If it proves too much we could add a delay to how often the projection is updated. 0.1 seconds would be ideal, though even 0.5 should be acceptable.

  17. Note that there's an even better and more accurate way of doing this, though the alternative technique would be a bit more costly in terms of processing power: Instead of tracing just one line from the light source to the center of the player's collision box, we can divide the player's box and create a virtual volume of points at a given resolution (eg: 4 x 4 x 6) then trace a line from the light source to each of those points. Every line that hits a solid within the light's radius will spawn a single tiny cube at the point of impact, each of those entities acting as additional visual alerts to the AI for the player.

    As the player is taller, a good default resolution would be 4 x 4 x 6 (slightly higher vertically). Still this means tracing 96 lines in total, for every AI / player located in every light, and doing it each frame; Depending on how cheap the trace procedure is, this could put quite a bit of load on the CPU. We could reduce the amount of useless points by instead creating a flat 2D grid of points in the center of the player's box which faces the light source... this would give a far more significant result (less pointless duplicates) with less overall points.

    In fact we can do it even better! Just trace lines from the light source to specific bones on the player's armature. By default we can use the following body parts: L + R lower leg, L + R upper leg, L + R lower arm, L + R upper arm, pelvis, spine, torso, head. Only 12 traces and the shape of the model would also be represented as accurately as possible ?

    An additional benefit to using multiple traces is that each alert point can be adjusted based on how washed out the shadow is: If it's located in an area that's strongly lit, the shadow is harder to see thus the AI is less interested. And the more such triggers the AI is seeing at once, the faster their alert level will rise... this would make it so that smaller shadows are also of less interest, but if the AI is seeing a lot of shadowing at once it gets their attention even more.

  18. I remember that a few years ago, someone pointed out a rather obvious limitation in the AI: A foe will only become alert if it sees the player directly, but not if it sees the shadow cast by the player. This means that if you're hiding behind a wall through which an enemy can't see you, however a light in front of you casts a shadow on the wall behind you which the foe would be able to see, that foe won't be alerted by your shadow. For the sake of having an intelligent and even more realistic AI, this always seemed a nice idea to consider.

    It was mentioned that it's difficult to find a good implementation for this mechanic. Earlier today I was thinking about TDM and remembered this subject. I thought about how such a system could be implemented in a way that doesn't decrease performance, and at the same time is accurate enough to be considered usable. Although I don't code any TDM scripts, I wanted to contribute the solution I came up with; It's an estimation so it won't give the most accurate results, but should be cheap and provide just enough realism for this purpose. This is how it would work step by step:

    1. We begin by looping through all lights that cast shadows on the map.
    2. For each light, we scan whether there's any entity that is a player or AI within the radius / box of that light. If the light is touching a player or AI, we proceed with the following points for each one.
    3. If a valid entity was detected at point 2, we trace a line from the origin of the light toward the center of the player / AI bounding box.
    4. At this stage we do some boundary and collision checks: If the line reaches a solid surface before it reaches the player's center, that means a wall is likely in the way and we proceed no further. Also if the line passes the player's center but exceeds the radius of the light without hitting anything, the shadow is likely not going to reach the surface behind them so we stop.
    5. If the line does pass the player's center then touches a solid surface without existing the light's radius, we take note of the origin at which this line touched this surface. A solid surface should be considered any shader who's alpha >= 0.5, as shadows are typically not visible on materials like glass or water.
    6. Next we spawn a virtual box at the origin of this point, which will usually be a floor or wall or ceiling. The size of this box depends on the distance between the light, the player's center, and the point in which the box is spawned: The closer the player is to the light source the bigger it should be, and the further the player is from the traced point the bigger it should once more get... this is to better estimate how large the shadow should be thus how likely to attract attention.
    7. At this stage we have a problem: If the cube is passing through a solid wall, it will cause AI in other rooms to inexplicably become alert. So before proceeding, our invisible cube must be cropped (scaled and positioned) so that it aligns with the surface of all walls it touches from the direction in which the line was cast. This might be a little tricky for diagonal walls.
    8. Now the cube entity can act as a visual alert for AI: If an enemy is seeing it, it's as if they are seeing the player. The alert should have a watered down effect, so that the AI's alert level rises much slower compared to seeing a foe directly: The AI should be surprised at the shadow but not immediately figure out that it's a person who shouldn't be there.

    That should be it from a technical standpoint! This method might fail to produce accurate results at times, namely if the path to the center of the player's box is obstructed by a solid although parts of the player are still visible to it... for a simple AI alert it should do however. It would be nice to see someone playing with this idea, maybe record a demo of how such a box projects to see if it's accurate enough. I attached a little schematic exemplifying how this would look like in 2D for easy visualization.

    Trace.png.94b31f40424595053b65bb414ae1bbb5.png

    • Like 1
    • Haha 1
  19. 100% behind this! We already have (most of) the assets: It mainly seems that no one had the initiative of making such a FM yet. I'm sorry that I haven't been helping either: I'm busy with many other projects, and due to the non-commercial nature of TDM it's difficult to make even a FM a project for my Patreon which would have made it a lot easier to work on one.

    • Like 2
  20. 1 hour ago, Bienie said:

    The Moor works fine, the problem is it's singular, I.E. one head and one voice. That doesn't really make for a whole mission unless there's only a single AI in it. Would be nice to have a female version too.

    Idea: Try mixing the moor head + voice with different types of bodies, such as the guards and gang members. There are some combinations that might work well!

  21. 3 hours ago, Bienie said:

    If it's any consolation my next mission (CoS 3) is set in the "deep empire" basically renaissance Tuscany, and should see a release in the spring. But it's only using already existing textures and such.

    I would love to make an egyptian pyramid mission or similar, but it really does require adding some more assets to make it believable I think. Maybe I can learn how to make and import textures at some point.

    That does sound very good! Maybe drop a link here as well please, so those of us who subscribed can see it right away.

    As for assets, TDM kind of has them? There's the greatly underused moor characters, which can replace many guards and civilians there. The rest is about how we design the architecture... textures should be fine though I admit we could use more static meshes for decorating the world that match other cultures. It's a shame the weapon models aren't as straightforward to customize either, so for instance the shortsword can be made to look like an Arab sword for these levels.

    • Like 1
  22. 13 minutes ago, Jedi_Wannabe said:

    This is an idea I’m putting on the back burner for between missions in my campaign. Side missions that could take place before or after my story. An ancient tomb on another continent would be dope indeed. Why don’t you learn DR? It’s not that hard, just a bit of a learning curve.

    Oh, I have worked with Radiant for years and have a few WIP FM's in the making. Problem is I just didn't have time and energy to work on that as well.

    • Like 1
×
×
  • Create New...