From ec25525838a79a2419501beb52049444208ccf78 Mon Sep 17 00:00:00 2001 From: Youmu Liu <105042599+Nitload-NSI@users.noreply.github.com> Date: Mon, 15 Sep 2025 14:07:49 +0800 Subject: [PATCH] better readme --- LICENSE | 155 +++++++++++++++++++++++++++++++++++ ReadMe.md | 225 +++++++++++++++++++++++++++++++++++++++++++++++++-- STG#LOGO.png | Bin 0 -> 69629 bytes 3 files changed, 373 insertions(+), 7 deletions(-) create mode 100644 LICENSE create mode 100644 STG#LOGO.png diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..6ca16d5a --- /dev/null +++ b/LICENSE @@ -0,0 +1,155 @@ +MIT License + +Copyright (c) 2024 Nitload StgSharp Team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +StgSharp program uses the following open source projects, +I'd like to refer to them here and show my sincere appreciation, +while the names are sorted in no particular order + +1. GLFW + + Remote repository on: https://www.glfw.org/ + + License of GLFW: + + Copyright (c) 2002-2006 Marcus Geelnard + + Copyright (c) 2006-2019 Camilla Löwy + + This software is provided 'as-is', + without any express or implied warranty. + In no event will the authors be held liable for + any damages arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it freely, + subject to the following restrictions: + + The origin of this software must not be misrepresented; + you must not claim that you wrote the original software. + If you use this software in a product, an acknowledgment + in the product documentation would be appreciated but is not required. + + Altered source versions must be plainly marked as such, + and must not be misrepresented as being the original software. + + This notice may not be removed or altered from any source distribution. + +2. GLAD, Khronos Specifications and other Specification headers + + Web service available on https://gen.glad.sh/ + + The glad source code: + + The MIT License (MIT) + + Copyright (c) 2013-2022 David Herberth + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + The Khronos Specifications: + + Copyright (c) 2013-2020 The Khronos Group Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +3. docs.gl + +4. Terminal.GUI + + Remote repository on: https://github.com/gui-cs/Terminal.Gui + + License of Terminal.GUI: + + Copyright 2007-2011 Novell Inc + Copyright 2017 Microsoft Corp + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +5. IxMilia.Step + + License of IxMilia.Step: + + The MIT License (MIT) + + Copyright (c) IxMilia. + All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff --git a/ReadMe.md b/ReadMe.md index 9e967b47..2b269877 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,11 +1,222 @@ -# Stg# # +# StgSharp -Stg# is the new generation STG game engine. STG# is written in C# and runs on .NET platform. +![StgSharp Logo](STG%23LOGO.png) -The Stg# engine contains three parts: +StgSharp is a modern C# framework that combines game engine capabilities with high-performance computing features. Originally designed as a next-generation STG (Shoot 'em Up) game engine, it has evolved to include advanced mathematical libraries, parallel computing capabilities, and comprehensive graphics APIs. -1. A high efficiency math library -2. A timeline manager -3. A game resource manager +## Overview -Timeline of Stg# is controlled by a new type of scipt language called SGSL(Shooting Game Script Language). SGSL allows developers to manage files and debug in an reletively easy mod. Developers edit games in different "Organizations", which can be devided into "Generatings" and "Processings", which defines how bollet creats and move. \ No newline at end of file +StgSharp provides both low-level and high-level bindings to OpenGL, multimedia control, and device management, offering everything needed to create STG games and high-performance applications. The framework is built on .NET 8 and supports Windows and Linux platforms. + +## Core Modules + +### StgSharp.Common +The main library containing core functionality: + +- **Mathematics**: High-performance linear algebra, matrix operations, and mathematical utilities +- **Graphics**: OpenGL bindings, rendering pipeline, and graphics framework +- **High Performance**: SIMD operations, memory management, and parallel computing +- **Collections**: Specialized data structures and containers +- **MVVM**: Model-View-ViewModel framework for UI applications +- **Entities**: Game entity system and behavior management +- **Environment**: Platform abstraction and system integration + +### StgSharp.Script +General-purpose syntax analysis framework: + +- **Syntax Analysis Framework**: Provides a flexible framework for parsing and analyzing various programming languages +- **EXPRESS Language Support**: Specialized support for ISO 10303-11 EXPRESS language syntax parsing +- **Abstract Syntax Trees**: Language parsing and analysis infrastructure +- **Token Processing**: Lexical analysis and token management +- **Grammar Parsing**: Extensible grammar parsing and validation system + +### StgSharp.Model +Geometric model loading and interpretation: + +- **Geometric Model Loading**: Responsible for loading and interpreting geometric models from various formats +- **STEP Format Support**: Limited support for ISO 10303 STEP file format processing +- **Entity Management**: Model entity parsing and geometric data interpretation +- **Data Pipeline**: Efficient geometric data processing and transformation +- **Schema Validation**: Model structure validation and verification + +### StgSharp.Native +Native library integration: + +- **GLFW Integration**: Cross-platform window and input management +- **SIMD Operations**: Hardware-accelerated vector operations +- **Matrix Kernels**: Optimized matrix computation routines +- **Context Management**: Graphics context and resource management + +### StgSharp.TerminalDialogue +Terminal-based user interface: + +- **Interactive Terminal**: Command-line interface components +- **Dialogue System**: User interaction and input handling +- **Terminal Graphics**: Text-based UI rendering + +## Key Features + +### High-Performance Computing +- **Parallel Matrix Operations**: Multi-threaded matrix computations with optimized scheduling +- **SIMD Acceleration**: Hardware-optimized vector operations +- **Memory Management**: Custom allocators including HLSF (Hybrid Layer Segregated Fit) +- **Thread Pool Management**: Efficient task scheduling and execution + +### Graphics and Rendering +- **OpenGL Integration**: Complete OpenGL API coverage +- **Cross-Platform Support**: Windows and Linux compatibility +- **Rendering Pipeline**: Flexible and extensible graphics framework +- **Shader Management**: Dynamic shader compilation and management + +### Game Engine Capabilities +- **Entity System**: Flexible game object management +- **State Machine**: Game state and behavior management +- **Input Handling**: Comprehensive input and control systems +- **Resource Management**: Efficient asset loading and management + +### Data Processing +- **STEP File Support**: Industrial data format processing +- **EXPRESS Language**: Domain-specific language compilation +- **Pipeline Processing**: Efficient data transformation workflows + +## Documentation + +### Technical Documentation +- [HLSF Allocator](StgSharp.Common/HighPerformance/Memory/InroductionToHLSF.md) - High-performance memory allocator documentation +- [Native Library Naming](StgSharp.Native/naming.md) - Native library file naming conventions + +### Module-Specific Documentation +- **Mathematics**: Linear algebra, matrix operations, and mathematical utilities +- **Graphics**: OpenGL bindings, rendering, and graphics pipeline +- **High Performance**: SIMD operations, parallel computing, and memory management +- **Scripting**: General syntax analysis framework with EXPRESS language support +- **Modeling**: Geometric model loading and interpretation with STEP format support + +## Requirements + +- .NET 8.0 or later +- Windows 10/11 or Linux +- x64 or ARM64 architecture +- OpenGL 3.3+ support + +## Installation + +StgSharp is currently in development and requires compilation from source. **NuGet packages are not yet available** - you must build the project from source code. + +### Prerequisites + +- **Windows**: Visual Studio 2022 or later with C++ development tools +- **Linux**: CMake and compatible C++ compiler (planned support) +- .NET 8.0 SDK or later +- Git for source code retrieval + +### Building from Source + +1. **Clone the repository**: + ```bash + git clone https://github.com/Nitload-NSI/StgSharp.git + cd StgSharp + ``` + +2. **Windows (Recommended)**: + - Open `StgSharp.sln` in Visual Studio + - Build the solution (Debug or Release configuration) + - The native components will be automatically compiled + +3. **Linux (Experimental)**: + ```bash + # Build .NET components only + # Note: Native components are not yet supported on Linux + dotnet build + ``` + +### Build Configuration + +- **Debug**: Full debugging symbols, unoptimized +- **Release**: Optimized for performance + +### Notes + +- Windows compilation with Visual Studio is fully supported and tested +- Linux support is experimental and limited to .NET components only +- Native components (StgSharp.Native) are currently Windows-only and require MSVC +- CMake support for native components is not yet implemented +- Some features may not be available on all platforms + +## Quick Start + +### Basic Graphics Application + +```csharp + +/*To be implemented*/ + +``` + +### Matrix Operations + +```csharp +using StgSharp.Mathematics; + +// Create matrices +var matrixA = Matrix.Create(4, 4); +var matrixB = Matrix.Create(4, 4); + +// Perform parallel matrix multiplication +var result = matrixA * matrixB; +``` + +### Memory Management + +```csharp +using StgSharp.HighPerformance.Memory; + +// Create high-performance allocator +using var allocator = new HybridLayerSegregatedFitAllocator(64 * 1024 * 1024); + +// Allocate memory +var handle = allocator.Alloc(1024); +// Use allocated memory +allocator.Free(handle); +``` + +## Architecture + +StgSharp follows a modular architecture where each component can be used independently or in combination: + +- **Core Layer**: Fundamental data structures and utilities +- **Graphics Layer**: Rendering and graphics APIs +- **Performance Layer**: High-performance computing and optimization +- **Application Layer**: Game engine and application frameworks +- **Data Layer**: File processing and data modeling + +## Performance Characteristics + +- **Matrix Operations**: Optimized for large-scale computations +- **Memory Allocation**: O(1) allocation and deallocation with HLSF +- **Parallel Processing**: Multi-threaded execution with intelligent scheduling +- **SIMD Utilization**: Hardware-accelerated vector operations + +## Contributing + +StgSharp is developed by Nitload Space. Contributions are welcome, particularly in: + +- Performance optimizations +- Cross-platform compatibility +- Documentation improvements +- New feature implementations + +## License + +StgSharp is licensed under the MIT License. See [LICENSE](LICENSE) for details. + +## Future Plans + +- **Vulkan Support**: Planned for version 2.0 +- **Enhanced Cross-Platform**: Improved Linux and mobile support +- **Performance Optimizations**: Further SIMD and parallel processing improvements +- **Extended Language Support**: Additional domain-specific languages + +## Support + +For questions, issues, or contributions, please refer to the project repository or contact the development team. \ No newline at end of file diff --git a/STG#LOGO.png b/STG#LOGO.png new file mode 100644 index 0000000000000000000000000000000000000000..8b9dc8a2818e5b200dbf14034fc65cdac347bad9 GIT binary patch literal 69629 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

MXx+m~R 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 U?w!5LKy#pMH`tc4m3r#`0ahzoRR910 literal 0 HcmV?d00001