main() blog

プログラムやゲーム、旅、愛する家族について綴っていきます。

【Jenkins】Jenkins(2.479.1)のインストール手順(Windows編)

概要

Jenkinsの最新版の2.479.1 (October 2024)からJavaのバージョンの11がサポート外となり、17 or 21がサポート対象となるとのことです。

www.jenkins.io

以前はJDK11でインストールを行ったので、今回は改めてJDK21でインストールを行っていきます。

www.main-function.com

動作環境

Windows11
Jenkins 2.479.1
JDK 21

JDKのインストール

Jenkinsのインストール時にJDKがインストールされている必要があります。
バージョンは17 or 21が必要になるので、今回はJDK21で進めてみます。
MicrosoftやAdoptiumなどからJavaインストーラをダウンロードすることができます。

learn.microsoft.com

adoptium.net

Microsoftの方ではzipでの配布とmsiによるインストーラが用意されています。
zipは解凍後に適宜フォルダに配置し、環境変数のパスを適宜設定する必要があります。

今回はMicrosoftインストーラ版でセットアップを行います。
基本的には”次へ"で問題ありません。

インストール後にコマンドラインからインストールされていることを確認します。

Jenkinsのインストール

Jenkinsのオフィシャルサイトからインストーラをダウンロードします。

www.jenkins.io

ダウンロードしたjenkins.msiを実行してインストールを開始します。

インストール先を選択します。
変更する場合はここでインストール先のフォルダを選択します。

Service logoon Credentialsは非推奨ですがLocalSystemを選択します。
サービスにログインする設定は後でも変更できるので、一旦ここではLocalSystemとしておきます。

ポートは8080のままとします。
チェックでOKが出ることを確認します。

JDKのパスを指定します。
先ほどインストールした環境のパスを指定します。
bin\の一つ上のパスを指定します。

C:\Program Files\Microsoft\jdk-21.0.5.11-hotspot\

インストールを開始します。

完了したらFinishを押して終了します。

初期設定

インストールが完了したらブラウザが起動して初期設定画面が開きます。
インストール後に自動で起動しない場合は http://localhost:8080 に直接アクセスしてください。
C:\ProgramData\Jenkins.jenkins\secretsのフォルダのinitialAdminPasswordファイルに記載されているパスワードを入力します。

プラグインはInstall suggested pluginsで進めます。

プラグインのインストールが行われます。

管理者ユーザーの作成を行います。

初期設定が完了したら Start using Jenkins を押します。

Jnekinsのホーム画面が表示されます。

これでJenkinsのインストールと初期設定は完了です。


【UE5】GitHubでバージョン管理してみよう!

概要

UEのプロジェクトをGitHubでバージョン管理する方法についてです。

動作環境

Windows11
UnrealEngine 5.4.4

事前準備

事前準備として以下の用意をしておく必要があります。

  • Gitのインストール
  • GitHubのアカウント作成
  • GitHub Desktopのインストール

www.main-function.com

www.main-function.com

UnrealEngineとの連携

エディタの右下の"リビジョンコントロール"を選択し、"リビジョンコントロールに接続"を選択します。

プロパティで"Git(β版)"を選択します。

"設定を承認"でGitに接続された状態となります。

GitHub Desktopからリポジトリを作成

ローカルリポジトリを作成します。
GitHub Desktopの"File" → "Add local repository..." を選択します。

UEのプロジェクトのフォルダを選択します。

Publish repositoryでGitHubリポジトリを作成します。

Nameにリポジトリ名を入力します。
Keep this code privateにチェックすることでprivate(非公開)にすることができます。

GitHub側にリポジトリが作成されていることが確認できます。

【Git】GitHub Desktopを使ってみよう!(Windows編)

動作環境

Windows11
Git2.47.1

事前準備

事前準備として以下の用意はしておく必要があります。

  • Gitのインストール
  • GitHubのアカウントを作成

Gitのインストールについては過去の記事を参考にしていただければと思います。

www.main-function.com

インストール

以下のページからGitHub Desktopをダウンロードします。
GitHubDesktopSetup-x64.exeがダウンロードされます。

github.com

インストーラーをダブルクリックして起動します。

ブラウザからアカウントとの関連付けを求めれます。
関連付けを行うアカウントを選択します。

連携が終了したらポップアップが表示されるので、"GitHubDesktop.exeを開く" をクリックして下さい。

GitHub Desktopのアプリを起動して、GitHubと関連付けられていることを確認します。

リポジトリの作成

ローカルの作業フォルダをGitHubに追加するまでの手順です。
試しに以下のフォルダにテキストファイルを一つ用意します。

E:\test\test_001\test_001.txt

GitHub Desktopからリポジトリの作成を行います。
"File"の”New Repository..."を選択します。

Create a new repositoryのウィンドウが表示されるので、Nameのところに先ほど作成したフォルダ名を入力します。 Local path にフォルダの親の階層のフォルダを指定します。

Create repositoryボタンを押して、リポジトリを作成します。

作成が完了するとDesktopのCurrent repositoryが作成したリポジトリとなります。

先ほどのフォルダ以下に.gitのフォルダや.gitattributes等のフォルダやファイルが作成されていることが確認できます。

これでローカルのリポジトリは完了しました。

GitHubの方にリポジトリを登録するにはPublish repositoryを実行します。

NameでGitHubに登録する際のリポジトリ名を指定します。
今回はとりあえずそのままの名前とします。

"Keep this code private" にチェックを入れることで非公開(private)として登録することができます。

GitHub側のリポジトリの登録が完了すると以下の様にPublish repositoryの項目がなくなります。

GitHubの方にリポジトリが追加されていることが確認できます。

クローンの作成

GitHubに登録したリポジトリをクローンしてみます。
他のPCで作業する場合や、他の人のリポジトリを取得して作業したい場合などに使用します。

"File"の"Clone repository..." を選択します。

Clone a repositoryのウィンドウが開くので、先ほど追加したリポジトリを選択します。

クローンが完了するとCurrent repositoryが変更されます。

【Git】Gitをインストールしてみよう!(Git for Windows)

概要

Gitのインストールと、ファイルサイズの大きいものも扱えるようにGitLFSのインストールも行います。
今回はWindow11の環境でインストールを行います。

動作環境

Windows11
Git2.47.1

インストール

ダウンロード

以下のページからインストーラをダウンロードします。
今回はGit2.47.1(Git-2.47.1-64-bit.exe)をダウンロードします。

gitforwindows.org

インストーラを起動

ダウンロードしたファイルをダブルクリックしてインストーラを起動します。

インストール先を選択

インストール先のディレクトリを選択します。
特に変更がない場合はそのまま進みます。

コンポーネントを選択

今回はデフォルトのままで進めます。

スタートメニューフォルダーの選択

ここもデフォルトのままで進めます。
追加したくない場合は下部のDon't create a Start Menu folderにチェックを入れます。

デフォルトで使用するエディタの選択

新規リポジトリ作成時の初期ブランチ名

従来の"master"のブランチ名としたい場合はLet Git decideを選択します。
GitHubの仕様にあわせて最初のブランチを"main"としたい場合はOverride the default branch name for new repositoriesを選択します。

環境変数設定

SSHの選択

HTTPSライブラリの選択

改行コードの設定

Git Bashを動かすターミナルエミュレーターの選択

git pullコマンド動作の選択

資格情報のヘルパーの選択

追加オプションの設定

インストール

インストール完了

確認

インストールが完了したので、コマンドラインなどから実行できることを確認します。

Git LFS

Git LFSはGit 2.47.1でデフォルトでインストールされているようです。
コマンドラインで以下を実行したところバージョンが表示されました。

git lfs -v

リリースノートにもLFSが付属と書かれているので、デフォルトで使用できるようになっているようです。


【UE5】自作コンソール変数を作ってみよう!(C++編)

概要

コンソール変数の使用方法についてです。
コンソールコマンドから定義したコマンドで変数の値を変更することができます。
コンソール変数で使用できる型としてはint、float、bool、FStringを使用することができます。

グラフィックの設定やデバッグ用の変数などとして使用することができます。
あくまでも変数の値の変更のみを行うことができますが、
以下の様な用途として使用することができるので有効活用していただければと思います。

  • 各種デバッグ機能の切り替え
  • ゲームを起動したままで描画設定のパラメータの調整
  • ゲームを起動したまま敵の攻撃力を変更など、プランナーで調整が可能にできる

呼び出し時や変更時にコマンドして処理を行いたい場合はコンソールコマンドの実装方法で行う必要があります。
こちらについては過去記事を参考にしていただければと思います。

www.main-function.com

※本記事はC++での開発を前提としています。

動作環境

UnrealEngine 5.4.4

実装

変数定義

コンソール変数を実装するにはいくつか方法があります。

変数を定義する方法、ランタイムで追加する方法があります。
変数を定義する方法はstatic変数で定義することでエンジンの生成前に変数の生成を行うことができます。
TAutoConsoleVariable<>を使用してテンプレートで型を指定する方法と、FAutoConsoleVariableRef を使用して既存の変数を登録することも可能です。
UEのドキュメントではFAutoConsoleVariableRefは使用しないことを推奨とのことです。

以下がTAutoConsoleVariable<>での宣言のサンプルです。
参照時に変数をexternなどで参照できるようにもできますが、ヘッダーなどをインクルードする、もしくはexternをcppに記述してく必要が出てきます。
今回はstaticで宣言もしくは無名のnamespaceでローカルスコープで宣言して定義してみたいと思います。

namespace
{

TAutoConsoleVariable<int> CVarTestIntValue(
    TEXT("TestIntValue"),
    0,
    TEXT("Test int value."),
    ECVF_Default
);

TAutoConsoleVariable<float> CVarTestFloatValue(
    TEXT("TestFloatValue"),
    0.0f,
    TEXT("Test float value."),
    ECVF_Default
);

TAutoConsoleVariable<bool> CVarTestBoolValue(
    TEXT("TestBoolValue"),
    false,
    TEXT("Test bool value."),
    ECVF_Default
);

TAutoConsoleVariable<FString> CVarTestStringValue(
    TEXT("TestStringValue"),
    TEXT(""),
    TEXT("Test string value."),
    ECVF_Default
);

}

ちなみにFAutoConsoleVariableRefで宣言する場合は以下の様になります。
それぞれの変数を用意して、引数で渡すことでその変数をコマンドで変更できるようになります。

namespace
{
int32 TestIntValue = 0;
FAutoConsoleVariableRef CVarTestIntValue(
    TEXT("TestIntValue"),
    TestIntValue,
    TEXT("Test int value."),
    ECVF_Default);

float TestFloatValue = 0.0f;
FAutoConsoleVariableRef CVarTestFloatValue(
    TEXT("TestFloatValue"),
    TestFloatValue,
    TEXT("Test float value."),
    ECVF_Default);

bool TestBoolValue = false;
FAutoConsoleVariableRef CVarTestBoolValue(
    TEXT("TestBoolValue"),
    TestBoolValue,
    TEXT("Test bool value."),
    ECVF_Default);

FString TestStringValue = TEXT("");
FAutoConsoleVariableRef CVarTestStringValue(
    TEXT("TestStringValue"),
    TestStringValue,
    TEXT("Test string value."),
    ECVF_Default);
}

実行

コンソールコマンドからコマンド名が認識されていることが確認できます。

引数無しで実行した場合、現在設定されている値と変更の履歴が確認できます。
ログにはコンストラクタで設定されたことが確認できます。

引数で値を渡すことで変更することができます。

引数無しで再度確認すると値が変更されたことが確認できます。
変更履歴としてコンソールからの変更ということも確認できます。

boolの変数の場合はtrue/falseで設定できます。
True/Flaseでも設定することができるようです。
数値の場合は0だとfalse、それ以外ですとtrueが設定されるようです。

FStringの変数の場合は文字列がそのまま設定されます。

C++での値の取得と設定

少し煩雑ではありますが、コマンド名で参照して使用する方法で説明します。

コマンド名からコンソール変数を取得して操作することができます。
毎回参照するケースなどではstatic constなどで保持して参照するなどの対応を検討してください。

void hoge()
{
    IConsoleVariable* variable = IConsoleManager::Get().FindConsoleVariable(TEXT("TestIntValue"));
    if (variable)
    {
        UE_LOG(LogTemp, Log, TEXT("TestIntValue: %d"), variable->GetInt());
    }
}

ログに取得した値が出力されていることが確認できます。

同様に値の設定、変更もできます。

void hoge()
{
    IConsoleVariable* variable = IConsoleManager::Get().FindConsoleVariable(TEXT("TestIntValue"));
    if (variable)
    {
        variable->Set(1000);

        UE_LOG(LogTemp, Log, TEXT("TestIntValue: %d"), variable->GetInt());
    }
}

コンソールコマンドで変更を確認します。
履歴を確認するとコードから変更されたことも確認できます。

ReadOnly

変数の宣言時の引数のフラグでReadOnlyを指定するとコンソールコマンドからランタイムでは変更できなくなります。
C++からの設定か、iniファイルでの設定で変更することができるようです。

TAutoConsoleVariable<int> CVarTestIntValue(
    TEXT("TestIntValue"),
    0,
    TEXT("Test int value."),
    ECVF_ReadOnly
);

コンソールコマンドから変更しようとするとread onlyのメッセージが表示され、変更されていないことが確認できます。

iniファイルでの設定

DefaultEngine.iniでコンソール変数の初期値を変更してみたいと思います。
ReadOnlyの属性でも変更することが可能とのことです。

[ConsoleVariables]
TestIntValue=100

ReadOnltyの属性でも実行後にコンソールコマンドで初期値が100に変更されていることが確認できます。

参考

Unreal Engine の C++ のコンソール変数 | Unreal Engine 5.5 ドキュメンテーション | Epic Developer Community


【UE5】自動テストツールを使ってみよう!(Gauntlet準備編)

概要

UEでは自動テストのフレームワークがいくつか用意されています。
今回はGauntletと呼ばれるフレームワークについて説明したいと思います。

基本的な自動テスト環境のセットアップはこちらの記事を参照してください。
この中でもプラグインの設定でGauntletを有効にしておく必要があるので注意が必要です。

www.main-function.com

動作環境

UnrealEngine 5.4.4

プロジェクトに追加

エンジン側のGauntletのサンプルは実行はできましたが、プロジェクト側に新規で追加する方法が分かりませんでした。
プロジェクト側で新規にGauntletを追加する方法でEpicのページを参考に進めてみますが、分かりづらいのと、そのままでは対応できない部分があったのでそのあたりも含めて説明していきたいと思います。

基本的にはGauntlet用のC#のプロジェクトを追加する必要があります。

プロジェクトのGames側のフォルダで右クリックし、追加を選択します。

新しいプロジェクトの追加でクラスライブラリを選択します。
※クラスライブラリ(.NET framework)ではないので注意

以下の設定でプロジェクトを作成します。
プロジェクト名:{project}.Automation
場所:{project}\Build\Scripts\
※プロジェクト名は推奨の命名規則
※これで作成すると\Build\Scripts\以下に{project}.Automationのフォルダも作成されますが、今回はこのままでいきます

追加情報でフレームワークは.NET 6.0を選択します。
これで作成を行います。

作成を行うとClass1.csというC#のファイルが追加されているので{project}.csに変更します。

追加したプロジェクトを右クリックしてプロパティを選択します。
出力の項目の基本出力パスがbin\になっていることを確認します。

ビルドの構成マネージャーを選択します。
追加したプロジェクトの構成のドロップダウンから<編集>を選択します。

Releaseを選択して名前の変更でDevelopmentに変更します。

プロジェクトのコンテキストをDevelopmentに変更しておきます。

  • AutomationScripts.Automation
  • AutomationUtils.Automation
  • EpicGames.Build
  • EpicGames.Core
  • Gauntlet.Automation

Gauntletの自動テストのソースを追加してみます。
Epicのページを元に最小限の呼び出しを記述してみます。

using AutomationTool;

namespace TestProject.Automation
{
    // BuildCommand はすべてのコマンドの基本クラスです。
    public class SampleCommand : BuildCommand
    {
        public override void ExecuteBuild()
        {
            LogInformation("Gauntlet TestProject.Automation : SampleCommand.ExecuteBuild()");
        }
    }
}

LogInformationが非推奨となっているので、これを解消する必要があります。

右クリックのNuGetの管理を開きます。

Microsoft.CSharpをインストールします。

using AutomationTool;
using Microsoft.Extensions.Logging;

namespace TestProject.Automation
{
    // BuildCommand はすべてのコマンドの基本クラスです。
    public class SampleCommand : BuildCommand
    {
        public override void ExecuteBuild()
        {
            Logger.LogInformation("Gauntlet TestProject.Automation : SampleCommand.ExecuteBuild()");
        }
    }
}

コマンドラインから実行します。
この際、-scriptdirでプロジェクトのディレクトリを指定する必要があるので注意が必要です。

RunUAT.bat SampleCommand -scriptdir=d:\project\TestProject\Build\Scripts\

追加したログが出力されていることが確認できます。

Running AutomationTool...
Using bundled DotNet SDK version: 6.0.302
Starting AutomationTool...
Parsing command line: SampleCommand -scriptdir=d:\project\TestProject\Build\Scripts\
Initializing script modules...
Building 32 projects (see Log 'Engine/Programs/AutomationTool/Saved/Logs/Log.txt' for more details)
 Restore...
 Build...
Build projects time: 38.07 s
Total script module initialization time: 42.14 s.
Executing commands...
Gauntlet TestProject.Automation : SampleCommand.ExecuteBuild()
BUILD SUCCESSFUL
AutomationTool executed for 0h 0m 44s
AutomationTool exiting with ExitCode=0 (Success)

これでGautletの自動テストの処理が呼び出せるようになりました。
後はテストの処理などを実装して呼び出しを行うことでGauntletの環境でも自動テストが行えるようになると思います。

参考

dev.epicgames.com


【UE5】ソフトウェアカーソルでマウスカーソルを差し替えてみよう!

概要

UEで表示されるマウスカーソルを別の画像に差し替えてみたいと思います。
タイトルによってはWindowsの標準のマウスカーソルではなく、ゲーム側のデザインに差し替えたり、他のプラットフォームなどでマウス表示が必要な場合などに使用できます。

動作環境

UnrealEngine 5.4.4

画像の用意

今回はフリーの素材をトリミングしてマウスカーソルを用意します。
読み込ませてテクスチャアセットを作成しておきます。

ウィジットの作成

マウスカーソルのウィジットの作成を行います。
追加からユーザーインタフェイス → ウィジットブループリントを選択します。

親クラスにユーザーウィジットを選択して作成します。

パレットからキャンパスパネルを選択して追加します。

次に画像を選択して、先ほど追加したキャンパスパネルの子として追加します。

画像のプロパティのアピアランスのBrushのImageにカーソルの画像を追加します。

位置とサイズを調整します。

WBP_Cursorとして保存しておきます。

プロジェクト設定

プロジェクト設定のエンジン ユーザーインターフェイスのソフトウェアカーソルの項目で先ほど作成したWBP_Cursorを指定します。

マウスカーソルが差し替わっていることが確認できます。

参考

unreal-engine-tech.arsdiary.com