Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadmap #1

Closed
56 of 67 tasks
halx99 opened this issue Nov 24, 2019 · 13 comments
Closed
56 of 67 tasks

Roadmap #1

halx99 opened this issue Nov 24, 2019 · 13 comments
Labels
enhancement New feature or request
Milestone

Comments

@halx99
Copy link
Collaborator

halx99 commented Nov 24, 2019

Notes

ProgramState* ProgramStateRegistry::getProgramState(ProgramType programType, Texture2D* texture)
{
 auto textureFormatEXT = texture ? texture->getTextureFormatEXT() : 0;
 
 char hashMe[sizeof(programType) + sizeof(texture)];
 memcpy(hashMe, &programType, sizeof(programType));
 memcpy(hashMe + sizeof(programType), &texture, sizeof(texture));
 auto key = XXH32((const void*)&hashMe, sizeof(hashMe), 0);

 auto iter = _programStateCache.find(key);
 if (iter != _programStateCache.end())
     return iter->second;

 auto programState = newProgramState(programType, textureFormatEXT);
 if (programState) {
     _programStateCache.emplace(key, programState);
 }
 return programState;
}

Engine core

  • RenderTarget abstract
  • Refactor enums map method, use table instead many much switch case
  • Cache depthstencil state, tsl::robin_map
  • Remove FileUtils::getFileDataFromZip, recommend use ZipFile instead
  • ASTC 4x4/8x8 support
  • ETC2 RGB/RGBA support
  • Improve Image, fast forward compression texels data to GPU
  • Refactor audio engine, OpenAL for all platforms
  • Remove SimpleAudio
  • Remove offthread file operation
  • Explicit convert utf-8 file path to wide-string and call wide win32 file operation APIs
  • Refactor Downloader, curl for all platforms, don't use scheduler to retrieve progress info, make it more reusable
  • minizip-1.2.0
  • ccMessageBox
  • BMP support with stb_image
  • Remove unused libuv
  • Reorder child support
  • Remove tinyxml2 dep, use pugixml instead
  • Use xsxml for SAX parser only
  • Multi meta textures v1.0
  • ProgramStateRegistry
  • ANGLE support.
  • Use curl for HttpClient all platforms
  • Remove xxtea
  • Remove rapidxml dep
  • Fix etc1 alpha test case, content size incorrect
  • Remove fmod for linux
  • Use stat to check regular file exist for android platform
  • Use int64_t as return type for getFileSize
  • ios .ogg support
  • ZipUtils streaming API, support streaming play audio file in android obb
  • Add & Improve play .wav audio at all platforms
  • Remove unnecessary workaround to process audio tail frame at non-apple platforms.
  • Cache ProgramState
  • Remove socket.io websockets, use yasio for socket connection solution
  • Fully streaming play for all media file: .mp4, .mp3, .ogg, .wav
  • Streaming load for .ttf with freetype2
  • Remove CCB(already removed in v4)
  • Purely offthread load texture, use shared gl context
  • Refactor UserDefault with file mapping io with encrypt support
  • msaa
  • Refactor VideoPlayer
  • GPU texture array support
  • OpenGL RenderBuffer for depth stencil buffer D24S8

Thirdparty

  • Use git submodules to manage 3rd libs or marge 3rd repo to main repo
  • Update zlib to 1.2.11

Extensions:

  • move spine, ccs, dragonBones to extensions
  • All extensions should be optional and can disable relax
  • ImGuiEXT
  • FairyGUI
  • spine-3.8
  • cocostudio
  • dragonBones
  • Also move lua binding to extension
  • Also move spine-cpp to extension
  • EncryptSystem
  • particle system: https://github.com/effekseer

Toolsets And build env

  • Use system env for cmake to avoid copy engine sources when create new project
  • lua-template and lua-empty-test needs fix
  • New command line tool
  • GUI Peoject Creator
  • Sence Editor with ImGui

Lua Binding

  • Lua53 compat
  • Use plainlua instead luajit
  • make lua test works well
  • Remvoe luasocket, use yasio for socket connection solution
  • Use sol2 for binding framework instead tolua++

poors of LuaJIT

  • Lack of maintain
  • High crash from game developer
  • Performance(jit==on) slow than planlua without restricts programing (luajit have to many programing restricts)

benefit of lua5.4

  • compat bytecode 32,64bit app without any changes
@halx99 halx99 changed the title Goal of engine-v5 (en) The Goals of engine-v5 (en) Nov 24, 2019
@halx99 halx99 added this to the 1.0 milestone Nov 24, 2019
@halx99 halx99 added the enhancement New feature or request label Nov 24, 2019
@halx99 halx99 pinned this issue Nov 24, 2019
@imtrobin
Copy link

Can you provide the dependencies source too, so we can also compile them.

@halx99
Copy link
Collaborator Author

halx99 commented Nov 25, 2019

I will provide later

@halx99 halx99 changed the title The Goals of engine-v5 (en) The goals of engine-v5 (en) Nov 25, 2019
@halx99
Copy link
Collaborator Author

halx99 commented Nov 25, 2019

@imtrobin ok done deps for win32, now you can do follow steps to run cpp-tests on win32

python download-deps.py
mkdir build
cd build
cmake -A Win32 ..

After vsproject generated, just open Cocos2d-x.sln to build cpp-tests and run it.

@weiwest
Copy link
Contributor

weiwest commented Nov 25, 2019

Auto choice best renderer from multi backends.

halx99 added a commit that referenced this issue Feb 4, 2020
Fix .so auto link when folder not exists
@halx99
Copy link
Collaborator Author

halx99 commented Feb 16, 2020

android {
    aaptOptions {
       noCompress 'mp3','ogg','wav','mp4','ttf'
    }
}

@halx99 halx99 changed the title The goals of engine-v5 (en) The goals of engine-x Feb 23, 2020
@halx99 halx99 changed the title The goals of engine-x Roadmap Aug 4, 2020
@stevetranby
Copy link

Note: OpenAL is deprecated on macOS 10.15.6 and 11 (10.16).
"The OpenAL framework is deprecated and remains present for compatibility purposes. Transition to AVAudioEngine for spatial audio functionality."

@halx99
Copy link
Collaborator Author

halx99 commented Aug 9, 2020

engine-x already adapte openal-soft on ios

@halx99
Copy link
Collaborator Author

halx99 commented Aug 9, 2020

Refactor AudioEngine, OpenAL for all platforms, and on iOS, can switch to openal-soft through -DBUILD_EXT_ALSOFT since Apple mark OpenAL framework deprecated on iOS12

@halx99
Copy link
Collaborator Author

halx99 commented Sep 1, 2020

TODO: manually
add line spacing support for system font on iOS and Android
cocos2d/cocos2d-x@89e75ee

TODO: manullay
[iOS]Screen Time would makes App stuck sometimes
cocos2d/cocos2d-x@ef16d4f

TODO: manually
Bug?, use fastest_csv_parser/fast_split instead
cocos2d/cocos2d-x#20483

manually
Added tmx animated tile support, with test case [done]

checked
don't set glview transparent, it many cause afterimage (#20298) [yes]

V4 Good PR: cocos2d/cocos2d-x#20506

@halx99
Copy link
Collaborator Author

halx99 commented Sep 3, 2020

Imgui hdpi support:

Simple on windows

    /*
    * config high dpi scaling
    */
#define IMGUI_SCALE_FACTOR 1.2f
#define IMGUI_DEFAULT_FONT_SIZE 13.0f

    HDC hdc = GetWindowDC(nullptr);
    int xpixels = GetDeviceCaps(hdc, LOGPIXELSX);
    ReleaseDC(nullptr, hdc);

    float dpiScale = (float)xpixels / (float)USER_DEFAULT_SCREEN_DPI;
    auto finalScale = IMGUI_SCALE_FACTOR * dpiScale;

    auto imFonts = ImGui::GetIO().Fonts;
    auto imChars = imFonts->GetGlyphRangesChineseSimplifiedCommon();
    // auto imAllChars = imFonts->GetGlyphRangesChineseFull();
    imFonts->AddFontFromFileTTF(R"(C:\Windows\Fonts\msyh.ttc)", IMGUI_DEFAULT_FONT_SIZE * finalScale, nullptr, imChars);
    
    ImGui::GetStyle().ScaleAllSizes(finalScale);

Other references:

ocornut/imgui#2826
https://doc.magnum.graphics/magnum/classMagnum_1_1ImGuiIntegration_1_1Context.html

@halx99 halx99 removed this from the 1.0 milestone Oct 22, 2020
@halx99 halx99 unpinned this issue Mar 9, 2021
halx99 pushed a commit that referenced this issue Apr 24, 2021
@halx99 halx99 added this to the 1.0 milestone Apr 27, 2021
@halx99 halx99 closed this as completed in a491997 Jun 16, 2021
@aismann
Copy link
Contributor

aismann commented Aug 27, 2021

Can the link to this page removed from readme?

@halx99
Copy link
Collaborator Author

halx99 commented Aug 27, 2021

Yes, link to project page or milestone may be better

@Cybertwip
Copy link

Cybertwip commented Apr 17, 2022

I've opened a pull request for multi textured FastTMXLayer's, can be a very high arbitrary number of textures with opengl but metal is in the middle of the problem

This was referenced May 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

6 participants