質問:
ゲーム内オーバーレイを使用せずにSteamスクリーンショットを撮ることは可能ですか?
Llamageddon
2015-09-30 00:23:40 UTC
view on stackexchange narkive permalink

タイトルにあるように。 Steamオーバーレイを使用して実行するのは悪い考えですが、組み込みのゲームスクリーンショット機能では許可されていないスクリーンショットをSteamプロファイルに配置したいと思っています。それを達成する方法はありますか、それはトリックを介して、または実際に何もオーバーレイせずにオーバーレイを実行することですか?

三 答え:
m0nde
2015-09-30 01:05:17 UTC
view on stackexchange narkive permalink

Steamフォーラムのスレッドは、Steamオーバーレイを使用せずにスクリーンショットを撮る非常に回りくどい方法を提供します(Jonathan Drapeauが推奨するように、いくつかの編集でそこで述べられていることを複製しました)。一部のゲームはそれで動作しません。基本的に、特定のゲームのappidの下にリモートフォルダを手動で作成し、そこにスクリーンショットを保存する必要があります。

  1. 最初にゲームのappidを見つけます。これを行う簡単な方法は、store.steampowered.comのSteamストアでゲームを検索し、URLに番号を記録することです。 Teslagradを使用した例です
  2. ALT kbd>- PrtScrn kbd>(ウィンドウ)または PrtScrn を使用してスクリーンショットを撮りますkbd>(フルデスクトップ)またはCamtasia、FRAPSなどを使用します。
  3. Steamを閉じます。
  4. 次のファイルパスにアプリIDフォルダーを作成します: Program Files \ Steam \ userdata \ X(番号は異なる場合があります)\ 760 \ remote
  5. 249590 内に「 screenshots 」フォルダを作成します(これはTeslagradの例は異なります)。 スクリーンショット内に「 thumbnails 」というフォルダを作成します。これで、 Program Files \ Steam \ userdata \ X \ 760 \ remote \ 249590 \ screenshots & Program Files \ Steam \ userdata \ X \ 760 \ remote \ 249590 \ screenshots \ thumbnailsができました。
  6. 各スクリーンショットには、日付と番号が付けられています。構造は年-月-日付: 2015-XX-XX_00001.jpg
  7. 画面のサムネイルを作成します。サムネイルの解像度のサイズは200x150です。最大水平解像度は200、最大垂直解像度は150です。必要に応じて、これらの範囲内でどちらの方法でもスケーリングできます(例:200x94または180x150)。スクリーンショットにはサムネイルが必要です。フルサイズのスクリーンショットと同じファイル名で名前を付ける必要があります。
  8. Steamをもう一度開きます。ファイルを同期してスキャンします。スクリーンショットフォルダを開きます。ボイラ!新しく撮影したスクリーンショットがそこにあり、クラウドにアップロードしてどこにでも持ち運べるようになります!
  9. ol>

    頑張ってください!この手順は、スクリーンショットを撮れない、または問題がある他のゲームにも役立ちます。

リンクは質問に答えることができますが、リンクが切れた場合でもこの答えが役立つように必要な情報を追加する必要があります。
@m0nde素晴らしい情報をありがとう。しかし、私は誰かがこのプロセスをスクリプト化して、多くの手動の手順を回避することを望んでいます。
くそー、これはひどく複雑です。ひどく、これにはユーティリティプログラムが本当に必要です。
@Llamageddon私はそのようなプログラムに取り組んでおり、ほぼ完了しています。いくつかのバグを潰して、すぐにリリースします。うまくいけば来週。
@TranslucentCloudああ、かっこいい:P
Tithen-Firion
2015-10-01 01:56:13 UTC
view on stackexchange narkive permalink

m0ndeで説明されているプロセスを自動化しようとしました。 PowerShellを実行するにはPowerShellが必要ですが、Windows 7以降を使用している場合は、PowerShellがプリインストールされています。

これを run.bat として保存します:

  @powershell -NoProfile -ExecutionPolicy Bypass -File main.ps1  

そしてこれは main.ps1 として:

  Function Get- VDFContent([string] $ path){$ fileContent = Get-Content $ path $ obj = @ {} $ stack = New-Object System.Collections.Stack $ group = [regex] '^ \ s * "([^" ] +) "\ s * $ '$ keyVal = [regex]' ^ \ s *"([^ "] +)" \ s * "([^"] +) "\ s * $ '$ブラケット= $ False ForEach($ fileContentの$ line){If($ bracket){If($ line -Like "* {*"){$ bracket = $ False}} ElseIf(($ match = $ group.Match($ line) )-そして$ match.Success){$ obj。($ match.Groups [1] .Value)= @ {} $ stack.Push($ obj)$ obj = $ obj。($ match.Groups [1]。値)$ bracket = $ True} ElseIf(($ match = $ keyVal.Match($ line))-And $ match.Success){$ obj。($ match.Groups [1] .Value)= $ match.Groups [2] .Value} ElseIf($ line -Li ke "*} *"){$ obj = $ stack.Pop()} Else {Throw}} Return $ obj} Function Create-ScreenshotPath([string] $ screenshots、[string] $ date、[string] $ i) {Return Join-Path $ screenshots($ date +($ i.PadLeft(5、 "0"))+ ".jpg")} $ SteamPath = "" If(Test-Path "HKCU:\ Software \ Valve \ Steam "){$ SteamPath =(Get-ItemProperty" HKCU:\ Software \ Valve \ Steam ")。SteamPath} If(-Not $ SteamPath){$ SteamPath = Read-Host'Steamインストールフォルダーパスを入力します(例:" c: / program files(x86)/ Steam ") '} $ loginUsers = Join-Path $ SteamPath" config / loginusers.vdf "$ users =(Get-VDFContent $ loginUsers).users $ lastUser =($ users.GetEnumerator()| Sort-Object {[int] $ _。Value.Timestamp} -Descending)[0] .Name $ lastUserShort = $ lastUser-0x110000100000000 $ userPath = Join-Path $ SteamPath( "userdata /" + $ lastUserShort)$ localConfig = Join -パス$ userPath "/config/localconfig.vdf"
$ apps =(Get-VDFContent $ localConfig).UserLocalConfigStore.Software.Valve.Steam.apps $ lastPlayed =($ apps.GetEnumerator()| Sort-Object {[int] $_。Value.LastPlayed} -Descending)[0 ] .Name $ screenshots = Join-Path $ userPath( "760 / remote /" + $ lastPlayed + "/ screenshots")$ thumbnails = Join-Path $ screenshots "thumbnails" New-Item -Force -ItemType directory -Path $ thumbnails > $ null $ scriptPath = Split-Path -parent $ MyInvocation.MyCommand.Definition $ date = Get-Date -Format yyyy-MM-dd_ $ i = 1While(Test-Path(Create-ScreenshotPath $ screenshots $ date $ i)) {$ i ++} $ filesToMove = Get-ChildItem $ scriptPath -Filter "* .jpg" | %{$ _。FullName} ForEach($ filein $ filesToMove){Move-Item $ file(Create-ScreenshotPath $ screenshots $ date $ i)$ i ++}  

これらのファイルを配置します run.bat をアップロードして起動するスクリーンショットのある1つのディレクトリにあります。このスクリプトは、最後にログインしたユーザーと最後にプレイしたゲームを見つけるので、実行する前に覚えておいてください。

それがどのように使用されるのか正確にわかっているかどうかはわかりません-PrintScrnを押して画面の内容をクリップボードにコピーした後に実行されるのですか?また、現在実行中のゲームで100%自動的に機能するように試みたが、成功しなかったとしましょう。そうですね、Steamがゲームを実行しているかどうかを検出する方法があるとは思いません。
@Llamageddonこの投稿のスクリプトは、m0ndeの回答のステップ4、5、および6のみを自動化します。手順2で作成したスクリーンショットを保存したのと同じフォルダに配置する必要があります。残念ながら、手順7で説明したようにサムネイルを作成し、手動でサムネイルディレクトリに移動する必要があります。
痛い。それはそれをはるかに実用的ではないと思いますが、それでも、努力への賛成です。
@RossRidge m0ndeの方法を試しましたか?サムネイルを作成したり、Steamを閉じたりする必要はないので(ゲームを実行したままにすることもできます)、手順3、7、8は必要ありません。ステップ1を忘れましたが、私のスクリプトでもそれをカバーしています。
@Llamageddon任意のツールを使用してスクリーンショットを撮り( `PrtScrn`を使用する場合はファイルに保存します)、上記のスクリプトと同じフォルダーに移動して、` run.bat`を起動します。
@PiotrKowalskiはい、あります。
@RossRidge私はそれに固執するのではなく、少し実験していくつかの手順をスキップすることを意味しました。
繰り返しますが、はい、あります。
今日はこれを使ってUltimaIVをプレイし、Steamアカウントにスクリーンショットを投稿しました。だから私はそれを明確にするために編集しました。Photoshopを開いたまま、Photoshopで `PrtScrn`と` ctrl-v`を使用し、適切なフォルダーにフル解像度を保存してから、適切なフォルダーに同じ名前の最大幅200pxのサムネイルを作成しました。 これは非Steamゲームだったので、唯一難しい部分はAppIDを見つけることでした。デスクトップショートカットを作成したところ、次のようにAppIDが表示されることがわかりました: `steam:// rungameid / 18270144037962907648`
Artem M
2018-06-10 17:34:05 UTC
view on stackexchange narkive permalink

PiotrKowalskiの回答の小さな変更。 これで、スクリーンショットのサムネイルも作成されます。

この要点からファイルを取得するか、コードを main.ps1

に貼り付けます。

ファイル:

 #@ piotr-kowalskiのスクリプトの修正バージョン
#スクリーンショットのサムネイルも作成するようになりました
#https://gaming.stackexchange.com/a/238288/212957
#
# 注意:
#このスクリプトは、最後にログインしたユーザーと最後にプレイしたゲームを見つけるので、実行する前に覚えておいてください。
#
# 使用法:
#1)これをrun.batとして保存します:
#@ powershell -NoProfile -ExecutionPolicy Bypass -File main.ps1
#2)このファイルをダウンロードする
#3)アップロードするスクリーンショットを含む1つのディレクトリに両方のファイルを配置し、run.batを起動します。

関数Get-VDFContent([string] $ path)
{{
  $ fileContent = Get-Content $ path
  $ obj = @ {}
  $ stack = New-Object System.Collections.Stack

  $ group = [regex] '^ \ s * "([^"] +) "\ s * $'
  $ keyVal = [regex] '^ \ s * "([^"] +) "\ s *"([^ "] +)" \ s * $'
  $ bracket = $ False

  ForEach($ fileContentの$ line)
  {{
    If($ bracket)
    {{
      If($ line -Like "* {*")
      {{
        $ bracket = $ False
      }
    }
    ElseIf(($ match = $ group.Match($ line))-そして$ match.Success)
    {{
      $ obj。($ match.Groups [1] .Value)= @ {}
      $ stack.Push($ obj)
      $ obj = $ obj。($ match.Groups [1] .Value)
      $ bracket = $ True
    }
    ElseIf(($ match = $ keyVal.Match($ line))-そして$ match.Success)
    {{
      $ obj。($ match.Groups [1] .Value)= $ match.Groups [2] .Value
    }
    ElseIf($ line -Like "*} *")
    {{
      $ obj = $ stack.Pop()
    }
    そうしないと
    {{
      スロー
    }
  }

  $ objを返す
}

関数Create-ScreenshotPath([string] $ screenshots、[string] $ date、[string] $ i)
{{
  参加パスを返す$ screenshots($ date +($ i.PadLeft(5、 "0"))+ ".jpg")
}

関数Save-Thumbnail([string] $ imagePath、[string] $ pathToSave)
{{
  $ wia = New-Object -com wia.imagefile
  $ wia.LoadFile($ imagePath)
  $ wip = New-Object -ComObject wia.imageprocess
  $ scale = $ wip.FilterInfos.Item( "Scale")。FilterId
  $ wip.Filters.Add($ scale)
  $ wip.Filters [1] .Properties( "MaximumWidth")= 200
$ wip.Filters [1] .Properties( "MaximumHeight")= 150
  写真を正確なサイズにする場合は、#アスペクト比をfalseに設定する必要があります
  $ wip.Filters [1] .Properties( "PreserveAspectRatio")= $ true
  $ wip.Apply($ wia)
  $ newimg = $ wip.Apply($ wia)
  $ newimg.SaveFile($ pathToSave)
}

$ SteamPath = ""
If(Test-Path "HKCU:\ Software \ Valve \ Steam")
{{
  $ SteamPath =(Get-ItemProperty "HKCU:\ Software \ Valve \ Steam")。SteamPath
}
If(-$ SteamPathではない)
{{
  $ SteamPath = Read-Host'Steamインストールフォルダーのパスを入力します(例: "c:/ program files(x86)/ Steam") '
}

$ loginUsers =参加パス$ steamPath "config / loginusers.vdf"
$ users =(Get-VDFContent $ loginUsers).users
$ lastUser =($ users.GetEnumerator()| Sort-Object {[int] $_。Value.Timestamp} -Descending)[0] .Name
$ lastUserShort = $ lastUser-0x110000100000000

$ userPath = Join-Path $ SteamPath( "userdata /" + $ lastUserShort)
$ localConfig = Join-Path $ userPath "/config/localconfig.vdf"
$ apps =(Get-VDFContent $ localConfig).UserLocalConfigStore.Software.Valve.Steam.apps
$ lastPlayed =($ apps.GetEnumerator()| Sort-Object {[int] $_。Value.LastPlayed} -Descending)[0] .Name

$ screenshots = Join-Path $ userPath( "760 / remote /" + $ lastPlayed + "/ screenshots")
$ thumbnails = Join-Path $ screenshots "thumbnails"
New-Item -Force -ItemType directory -Path $ thumbnails > $ null

$ scriptPath = Split-Path -parent $ MyInvocation.MyCommand.Definition
$ date = Get-Date -Format yyyy-MM-dd_
$ i = 1

While(Test-Path(Create-ScreenshotPath $ screenshots $ date $ i)){$ i ++}

$ filesToMove = Get-ChildItem $ scriptPath -Filter "* .jpg" | %{$ _。FullName}

ForEach($ filesToMove内の$ file)
{{
  $ thumbnailPath =(Create-ScreenshotPath $ thumbnails $ date $ i)
  (保存-サムネイル$ file $ thumbnailPath)

  Move-Item $ file(Create-ScreenshotPath $ screenshots $ date $ i)
  $ i ++
}
 


このQ&Aは英語から自動的に翻訳されました。オリジナルのコンテンツはstackexchangeで入手できます。これは、配布されているcc by-sa 3.0ライセンスに感謝します。
Loading...