blog

ゲーム開発のパフォーマンス最適化のためのオブジェクトプール

前置きが長くなりましたが、私が遭遇した問題は次のとおりです。ゲームパッケージが4M以上、8M以下は、リモートリソースサーバーを必要としない、サブパッケージの使用ができます。 Creatorは、すべての...

Nov 4, 2020 · 2 min. read
シェア

序文

  1. 私がここで抱えている問題は、4M以上8M以下のゲームパッケージはリモートリソースサーバーを必要とせず、サブパッケージを使用するだけだということです。

出版ステップ

  1. Creatorを終了し、すべてのバンドルディレクトリと変更したメタファイルをリソースディレクトリに移動し、すべてのバンドルディレクトリとメタファイルを削除します。
  2. Close Creator 別のスクリプトを実行して、リソース下のすべてのバンドルディレクトリと変更されたメタファイルをリソースの外に再度コピーし、リソース内のすべてのバンドルディレクトリとメタファイルを削除します。
  3. 他のチャンネルを公開するためにCreatorを開きます。

キースクリプト

var fs = require('fs');
var path = require('path');
var file_util = require('./file_util')
//リソース下に移動が必要なバンドル
var folderList = ['lobby','decoration','outdoor']
// 
var asset_path = process.argv[2];
//対象ディレクトリ
var export_dir = process.argv[3];
//バンドル1と0
var opt = process.argv[4];
function getBundleName(name){
 for(var i = 0; i < folderList.length; i ++){
 let s = folderList[i]
 if(name.indexOf(s) >= 0){
 return s;
 }
 }
 return null;
}
function setBundle(meta_name,opt){
 console.log(' meta_name',meta_name,' opt ',opt)
 var flag = opt == '1' ? true : false;
 console.log(' flag ',flag)
 let fileData = file_util.readFile(meta_name)
 if(fileData){
 var obj = JSON.parse(fileData);
 obj['isBundle'] = flag
 console.log('fileData 2222 ',JSON.stringify(obj))
 file_util.writeFile(meta_name,JSON.stringify(obj))
 }
}
function exchangeFiles(asset_path,export_dir,opt) {
 var stat = fs.statSync(asset_path);
 if (!stat.isDirectory()) {
 return;
 }
 var subpaths = fs.readdirSync(asset_path),
 subpath;
 for (var i = 0; i < subpaths.length; ++i) {
 if (subpaths[i][0] === '.') {
 continue;
 }
 subpath = path.join(asset_path, subpaths[i]);
 console.log(" subpath ", subpath);
 var fname = getBundleName(subpath)
 if(fname){
 stat = fs.statSync(subpath);
 if (stat.isDirectory()) {
 let dest_path = path.join(export_dir,fname) 
 file_util.mkdir(dest_path)
 file_util.copyDir(subpath,dest_path)
 file_util.delDir(subpath) 
 }else{
 var meta_name = subpath
 var exportMeta_name = path.join(export_dir,fname)+'.meta'
 setBundle(meta_name,opt)
 file_util.copyFile(meta_name,exportMeta_name)
 file_util.deleteFile(meta_name)
 }
 }
 }
}
exchangeFiles(asset_path,export_dir,opt)

結語

より多くのコンテンツを閲覧するには、パブリック番号 "スマイルゲーム "に従うようにコードをスキャンすることを歓迎します。あなたが記事が大丈夫だと思う場合は、時計のように、共有し、スポンサーが私に最大の励みである、私は感謝されます。

Read next

Egg Middleware: ログを生成する

ユーザーの追加、削除、変更、取得操作をリストとして表示する必要があります。 ユーザー名、操作の種類、操作モジュール、メモを含めます。 まず、ユーザーが追加、削除、変更、確認操作を行った際に、対応する情報をデータベースに実装する必要があります。必要なフィールド情報は、リクエストから取得できます: 操作モジュール: 経路から傍受、/web/{{モジュール名...のルーティングルール

Nov 4, 2020 · 2 min read