Skip to content

Project-Frogman/Frogman-Engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License Platform

Frogman-Engine

Copyright © from 2022-present, UNKNOWN STRYKER. All Rights Reserved.
Frogman Engine is licensed under the Apache License, version 2.0.
This project is under development and may contain some bugs and issues.

Frogman Engine Website (incomplete)

Currently, programming convention is only available.
SDK guide, API documentation, etc are unavailable yet.
https://savory-moth-a00.notion.site/Frogman-Engine-1735fa4fb82e800e8fccc8df394eec5b

Prerequisites:

  1. CMake 3.25.0 or the latest.
  2. The latest Visual Studio 2022.
  3. Git and Git LFS.
  4. Boost Libraries 1.87.0
  5. Microsoft Parallel Patterns Library.

C++ standard version:

C++ 20 or the latest.
All project settings can be adjusted by modifying CMakeLists.txt.

The current development status.

Platform Architecture Status
Windows 11 X86-64 In Development
Ubuntu-Linux X86-64 Discontinued

This project leverages:

Help:

Issues with Frogman Engine Header Tool:

  • It is highly probable that the file or path string encoding issue is causing the problem.
  • The header tool requires header files and the copy of a license text file to be encoded with UTF8 with BOM(Byte Order Mark) signature.

To run the header tool with CMake, call this CMake function:

# The first argument is the header files paths, and the later ones the options to the tool. 
# The tool will not properly work without wrapping " " around the header files paths argument.  
# The each header file path must be seperated with a semi-colon ';'.  
RUN_FROGMAN_HEADER_TOOL("${FE_LOG_HEADERS};${FE_POOL_HEADERS};${FE_CORE_HEADERS};${FE_MISC_HEADERS}" -max-concurrency=8 -path-to-copyright-notice=${FE_CORE_CMAKE_CURRENT_LIST_DIR}/../../LICENSE.txt )  
  • The CMake function 'RUN_FROGMAN_HEADER_TOOL()' will generate the reflection helper code within the generated.cpp.

This lets Frogman Engine dynamically instantiate objects without hard-coded object construction statements when reading a game configuration file to instantiate the necessary objects.

// generated.cpp
// Copyright ⓒ from 2024 to present, UNKNOWN STRYKER. All Rights Reserved. 
#include <FE/framework/reflection/private/load_reflection_data.h> 
#include <FE/framework/reflection.hpp> 
#include <FE/framework/framework.hpp> 
#include <C:/Users/leeho/OneDrive/문서/GitHub/Frogman-Engine/SDK/Tests/FE-HT-Test/HeaderWithoutCopyright.hpp>

void load_reflection_data()
{
    ::FE::framework::framework_base::get_engine().get_method_reflection().register_task< ::FE::c_style_task<void(void*), typename ::FE::function<void(void*)>::arguments_type> >("FHT Gen ::FrogmanEngine::Physics::Vector2()", &::FE::framework::reflection::construct_object<::FrogmanEngine::Physics::Vector2>); 
    ::FE::framework::framework_base::get_engine().get_method_reflection().register_task< ::FE::c_style_task<void(void*), typename ::FE::function<void(void*)>::arguments_type> >("FHT Gen ::FrogmanEngine::Rendering::Renderer()", &::FE::framework::reflection::construct_object<::FrogmanEngine::Rendering::Renderer>); 
}

How to build an application with Frogman Engine using CMake?

ADD_FROGMAN_EXECUTABLE(${CMAKE_PROJECT_NAME} ${SOURCE_FILES})

# To use ADD_EXECUTABLE() instead of the function above, generated.cpp has to be added to the source files list.
ADD_EXECUTABLE(${CMAKE_PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/generated.cpp)

Microsoft Visual Studio C++ Runtime Library:

  • The default settings use /MTd (Static C++ Standard Library Debug Build) for debug configuration and /MT (Static C++ Standard Library Release Build) for release.

To run Google Benchmarks on Windows:

LINK_LIBRARIES(advapi32.lib shlwapi.lib) # to use Google Benchmark on Windows.  

In order to build boost libraries using Microsoft Visual Studio 2022 Clang CL (this does not work with Windows SDK version 10.0.26100.0):

  1. Download the LLVM Clang CL from Visual Studio Installer.
  2. Download Boost libraries from https://www.boost.org/
  3. Build b2.exe by running bootstrap.bat(.sh)
  4. Run the commands:
./b2 toolset=clang-win architecture=x86 address-model=64 link=static runtime-link=static threading=multi variant=debug  
./b2 toolset=clang-win architecture=x86 address-model=64 link=static runtime-link=static threading=multi variant=release  

Packages

No packages published