發表文章

目前顯示的是 2018的文章

Create UE4 project and packaged to HTML5

圖片
Create your UE4 project Compress settings for HTML5 -------------------------------------------------- Project Settings -> Platforms - HTML5 ->  tick 'Packaging.Compress files during shipping packaging' Project Settings -> Project - Packaging ->  tick 'Packaging.Create compressed cooked packages'  add your maps to 'Packaging.List of maps to include in a packaged build' // 000webhost limit a file size to 128 MB max -------------------------------------------------- Upload files to '000webhost' -------------------------------------------------- 000webhost https://www.000webhost.com/ follow packaged folder HTML/Readme.txt upload required files  In this case :  index.html (rename)  SideScroller.data.jsgz  SideScroller.datagz  UE4Game-HTML5-Shipping.js.symbolsgz  UE4Game-HTML5-Shipping.jsgz  UE4Game-HTML5-Shipping.wasmgz  Utility.jsgz // UE4.21 update add upload files :  .htaccess  <project>.UE4.jsgz --------

TCP Socket send&recv 範例摘錄 (Server:C++ App, Client:UE4)

[UE4] TCP Socket 傳輸實現

程式碼 需要注意的地方 記得在Build.cs添加Sockets, Networking TcpClient.h virtual bool SocketReceive(); //這裡添加virtual關鍵字是為了未來覆載此方法來實現從封包中拆解出自訂的資料格式 TcpClient.cpp 可在ATcpClient::ATcpClient() {...}建構函式中給予資料成員一個初始值,避免資料異常 若你想同步變數 ATcpClient::ATcpClient() {  bReplicates = true; // 啟用同步  } // Replicate void ATcpClient::GetLifetimeReplicatedProps(TArray< FLifetimeProperty > & OutLifetimeProps) const {   Super::GetLifetimeReplicatedProps(OutLifetimeProps);   DOREPLIFETIME(ATcpClient, Tcp_UpdateRate); // 你想同步的變數 } 在UE4停止運作時,確保有刪除Thread與關閉Socket void ATcpClient::EndPlay(const EEndPlayReason::Type EndPlayReason) {   if (m_RecvThread != nullptr)   {    m_RecvThread->Kill(true);    delete m_RecvThread;   }   if (Socket)   {    Socket->Close();    ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->DestroySocket(Socket);   }   Super::EndPlay(EndPlayReason); } Byte to String & Byte to float // Byte to String FString(ANSI_TO_TCHAR(r

KOSMOS 體感奇點論壇 國際商機趨勢交流會 展後心得

圖片
KOSMOS FB粉絲專頁 補助廠商展示會概要 廠商:南瓜虛擬科技有限公司 內容:虛擬實境多人連線機甲戰鬥遊戲-行動代號:鐵門 廠商:樂陞美術館股份有限公司 內容:夜鷹行動VR 廠商:義大遊樂世界 內容:VR失控地鐵 廠商:聯新亞洲醫學教育有限公司 內容:虛擬臨床診療訓練系統 廠商:勝典科技股份有限公司 內容:815兒童潛能開發中心解決方案、AR擴增實境X二氧化碳的製備與性質、VR虛擬實境X天然酸鹼指示劑實驗 展後心得 義大遊樂世界 義大遊樂世界配合的遊戲開發商-VAR Live(維亞娛樂有限公司),為台灣VAR產業的領頭廠商,是目前台灣VAR相關產業最有影響力的其中一間公司,現今研發部約10人(軟體&硬體工程師),公司全員約50人-60人,職務分明各司其職。 亮點一:VR設備採用Vive pro + 無線模組,vive pro其一體化的設計概念,將頭盔、耳機整合在一起,並棄魔鬼氈改用旋鈕的方式來固定頭盔,簡化了大量將設備穿戴至使用者上的複雜度與時間,二代base station感應器也可支援同時使用4組,將360度空間都包覆感應範圍,降低紅外線遮蔽導致頭盔追蹤失效的機率,而無線模組使用上也很驚豔,個人使用上覺得效能與反應速度與有線傳輸沒有差異,整體來說這樣的穿戴配置對使用者減輕很多負擔。 亮點二:維亞娛樂使用了「行動式機櫃」,將展場所需設備模組化,加速架設&撤櫃的效率 相關連結: 維亞娛樂官方網站 VR Live FB粉絲專頁 104-維亞娛樂 HS Rack機櫃 樂陞美術館 可惜最後沒能玩到夜鷹行動VR,驗證一下樂陞美術館的美術造詣 勝典科技 曾經以Flash為核心發展,Flash沒落後現今轉型拓展VAR事業

[UE 4.18] UnrealPak 加密應用

前言:  一般使用UE4打包(Package Project)的時候,為了避免整個Game Content資料夾嶄露無遺,有被輕易盜走資源的疑慮,我們通常都會習慣在Packging設定裡勾選"Use Pak File"這個選項,讓整個專案資源打包成一個.pak檔,那其實只做這個動作是不夠的,仍有被抽取資源的風險,因此我們需要對pak檔再加密多一層保護。  在UE4.19版本,官方已經很好的把功能都整合到Project Settings裡,但若想在之前的版本處理,其實UE已經有提供了方法,只是要利用命令列參數的方式來實現,本文將介紹最入門的加密方式,僅需要修改專案設定與新增一份用於加密的ini檔。 詳見 Project - Crypto [UE 4.19] https://trello.com/c/qeZ6H8eJ/234-encryption-signing-key-generator 實作:  要實現Pak加密我們需要使用UnrealPak這支官方程式,在編輯器裡做打包的時候,他其實會默默的幫我們執行這支程式來將資源封裝成pak檔,UnrealPak主要可實現三大功能,打包、簽名與加密,本文只聚焦探討加密的部分。 // UnrealPak.exe位置 [EngineDIR]\Engine\Binaries\Win64\UnrealPak.exe // 若欲了解邏輯與查看完整函數應用,原碼位置 (需下載source code,從Epic Games Launcher下載引擎沒有這檔案) [EngineDIR]\Engine\Source\Programs\UnrealPak\Private\UnrealPak.cpp // Package Project 歷經階段 BUILD COMMAND --- 建置階段,如果有編譯錯誤會在這階段報錯 COOK COMMAND --- 烘焙階段,把專案中使用到的資源整理起來 STAGE COMMAND --- 舞台階段,UnrealPak在此階段處理 PACKAGE COMMAND --- 封裝階段,Log未記載內容,尚未得知處理細節 ARCHIVE COMMAND --- 歸檔階段,Log未記載內容,尚未得

[UE4] TortoiseSVN properties setting for UE4 project

圖片
Make  UE4Project.svnprops .../UnrealProjects/[ProjectName], right-click ->TortoiseSVN->Properties->New->Other add svn:global-ignores and svn:ignore follow the list below UE4Project.svnprops   svn:global-ignores   Binaries   Intermediate     Collections   Developers   svn:ignore   .vs   Build   DerivedDataCache   ipch   Saved   *.db   *.opendb   *.sln Load  UE4Project.svnprops (for new project) .../UnrealProjects/[ProjectName], right-click ->TortoiseSVN->Properties->Import->UE4Project.svnprops // For reference only, increase or decrease depending on the situation.

[UE4] Solve : Use 'Create Session' BP node but return false

Logs : LogScriptCore: Warning: Script Msg: CreateSession - Invalid or uninitialized OnlineSubsystem LogScriptCore: Warning: Script Msg: CreateSession - Invalid player state Solve : In the DefaultEngine.ini, add the following [OnlineSubsystem] DefaultPlatformService=Null

[UE4] 製作UDP Plugin

圖片
產生一個UE4 Plugin 開啟UE4專案 Edit -> Plugins -> New Plugin 選擇 "Blank",建立一個plugin空殼 編輯 [PluginName].Build.cs,新增UDP所需Module // 新增Json是因為提供了一個可以外部載入檔案來初始化UDP Sender的方法 (StartUDPSenderViaJson) 以下是插件原始碼 參考資料 UDP Socket Sender Receiver From One UE4 Instance To Another UE4修改自Rama的UDP通信蓝图插件 JSON Parsed JSON Editor Online

Shared Memory

摘要 因工作需求用上了「Shared Memory」這個方法,因此特別整理一篇文章備忘,包含了Shard Memory運作原理,各語言的實作範例(C#, C++, Boost C++),以及如何在UE4中應用。 何謂Shared Memory (截錄自 黑暗執行緒 ) 跨 Process溝通有個術語,Interprocess Communictaion(IPC),在 Windows 平台有以下選擇: 參考 Clipboard  程式 A 將内容貼進剪貼簿,程式 B 自剪貼簿取出内容。 COM OLE複合文件(Compound Document)讓Word文件可以內嵌Excel工作表,點兩下還能叫出 Excel進行編輯, OLE的基礎為 COM元件技術。 Data Copy 程序 A向程式 B依約定的格式内容傳送WM_COPYDATA訊息 DDE DDE是一種允許不同應用程式交換不同格式資料的通訊協定,可視為剪貼簿的沿伸,除了一次性抛轉,還能持續傳輸資料。(效能相對差,已不建議使用) File Mapping File Mapping意指將檔案模擬成 Process中的一塊記憶體,當多個應用程式間透過共用 File Mapping交換資料,稱之為Named Shared Memory,在各種IPC方法中效能最佳,但必須透過Mutex等同步機制防止讀寫衝突。 Mailslots 單向溝通,Mailslot Client送訊息給Mailslot Server,訊息在Server讀取後删除,支援跨機器傳送,還可一對多廣播。(廣播訊息長度限制 400bytes,一對一傳輸時訊息長度則由 Mailslot Server建立時決定) Pipes 雙向傳輸,分為Anonymous Pipe及Named Pipe。Anonymous Pipe一般用於父程序與子程序間的標準輸入/輸出導向,雙向溝通要建兩條Pipe,不能跨網路且限於有從屬關係的 Process;Named Pipe則可用於任意Process間交換資料,並支援跨網路Process間傳輸。 RPC Remote Procedure Call(RPC)允許應用程式呼叫其他應用程式提供的函式功能,並可跨網路呼叫。Windows RPC符合 ISO DCE標準,支援跨作業系統系統整合。 Window

Line Robot (LineageM_Assistant)

圖片
Abstract This is a line robot app for mobile game - LineageM . The main features developed with node.js, through the Line Messaging API to achieve automatic reply and push notification and deployment to Heroku , the database uses MySQL. Line Messaging API https://developers.line.me/en/docs/messaging-api/overview/ The Messaging API allows for data to be passed between the server of your bot application and the LINE Platform. When a user sends your bot a message, a webhook is triggered and the LINE Platform sends a request to your webhook URL. Your server then sends a request to the LINE Platform to respond to the user. Requests are sent over HTTPS in JSON format. Follow Getting started to complete the following steps Step 1: Log in to the console Step 2: Register as a developer (only on first login) Step 3: Create a new provider Step 4: Create a channel GitHub https://github.com/cjo4m06/eatBoss Step 1: Fork a repository (GitHub Help - Fork A Repo ) Ste

Acer AH100 (Windows Mixed Reality) in UE4

Ref : Using SteamVR with Windows Mixed Reality

Acer Windows Mixed Reality (Acer AH100) test

Getting Started > Step01. Install Developer mode in Win10 RS2 (Windows 10 Redstone2, Version 1703) > Step02. Connect controller, HMD and headset > Step03. Next, step by step, finished other settings 程式入口 : 開始 -> 混合實境入口 Other references : Windows Mixed Reality Controller Use Speech in Windows Mixed Reality 心得: Windows內建的混合實境入口裡的展示內容沉浸感不錯,串接的應用程式很多,包含音樂、電影、瀏覽器等,畫質清晰;缺點是必須持續用手壓著面罩才能取得最清晰的畫面,穿戴舒適度不足,耳機插入口位置不方便。

[UE4] Use Swarm to distribute Lighting build on Local Network

ref: Use Swarm to distribute Lighting build on Local Network

[UE4] Create plugin and call dll function

ref: Integrating OpenCV Into Unreal Engine 4