Skip to content

Commit 7755f64

Browse files
committed
26.6
[Engine] • Allow 16-bit and 8-bit's per sample .CAF formats and harden CAF file loading. • Calculate OpenAL format when building a 'Sample' class and no longer store it in the 'Pcm' class. • Use 'std::transform' in memory byte swap functions. • Move PCM data filtering system to 'Pcm' loading class like we did with the 'Image' loading class. • Fix misaligned read in 'FileMapReadVarFrom'. • Fix missing 'else' on spawning a new 'Source' from a 'Sample'. • Set a 'Pcm' class purpose. • Return correct number of arguments when using 'Sample:Spawn()'. • Use 'unsigned' instead of 'unsigned int' and also strip obsolete use of 'signed' and 'long int'. • Change 'ui' prefixed variables to 'u' and some others. • Move volume control into a separate 'Mixer' class from the 'Source' class. • Optimise triangle angle transformation speed by 10%. • Optimise automatic texture tile generation. • Resolve remaining Memory class raw pointer use. • Win32 DLL header version reader improvements. • Remove raw access to Theora plane data and protect its pointers with a span class. • Add cvar 'con_enablebreak' and handle Ctrl+C in NCurses. • Extract classes from 'SysCore.hpp' into separate files. • Tweak filename for 'PixPip' and 'WinPip' and suffix an 'e'. • Put system classes in namespaces. • Fix all CppCheck issues. • Git ignore file tweak. • Comment tweaks. • Sprinkle 'constexpr' on some thin wrappers. • Don't use raw pointers in UUID class. • Start converting Memory class functions to not use raw pointers. • Fix raw pointers and incorrect end iterators on Joystick classes.a • Improve byte swapping memory functions. • Improve OpenAL startup logging including enumerating context extensions and check the version via CVars since it doesn't need a context. • Expose byte swapping length functions to Lua (SX8/16/32/64). • Optimise calls to operating system C functions. • Modify readme to change some links. • Add tile logging on debug version. • Remove 'explicit' where it isn't needed. • Console command 'textures' now accepts a argument to see the stored tiles data of any loaded 'Font' or 'Texture' class. • Add functions 'Stat:Flush()' and 'Stat:FlushData()'. • Rename 'stdpost' to 'stdlib' and give it its own namespace. • Rename 'stdpre' to 'std'. • Some 'CppCheck' fixes and bypasses for false positives. • Fix use of raw pointers in 'CmdLine' class. • Assign ASAN safe environment list on MacOS. • Trim pointless 'const' (non-reference) return types. • Fix StdResized/StdReserved on Windows. • Add UtfDecoder::UtfSize(). • Make more templated string function arguments to prevent casting/copying/duplications. • Clean up 'Name' class. • Try to create thin wrappers for templated Crypt and String namespace functions. • Swap use of '.length()' to '.size()' methods. • Rename 'Timer' class and functions to 'Frame'. • Remove string time related functions and move them to 'time.hpp'. • Some more attempts to de-duplicate string classes. • Add 'Util.LineCheck' function. • Move a lot of code around to increase readability. • Might as well use string literals in 'cvarlib.hpp' since there's no point referencing common strings. • Mark saved variables that couldn't be overridden to be purged at database closure. • Optimise 'Token' classes with better type safety. • Optimise 'Parser' classes with better type safety. • Modernise typedefs to using & update build scripts. Replace many legacy typedefs with C++ using-aliases across numerous headers for clearer, modern type aliases and consistency (e.g. StdVector/StdMap/StdArray usages). Update various code sites to safer APIs: use StdString::empty() checks instead of pointer dereference, switch Token delimiter to StdStringView, use StdAddressOf, and adjust DoClean/type constructions. Revise build scripts and libjpeg helper: scripts/libjpeg.sh now copies headers into an INCLUDE path and adjusts macOS/linux build labels; build.cpp path and NASM/source flags updated to reference src/ paths, library/object handling tweaked, and other build-command string formatting improved. These changes are primarily code modernization, safety fixes, and build-system/path corrections. • Modernise Error API, string utilities and fixes • Refactor several APIs for safer types, perfect forwarding and unified handling: • Reworked Error to accept generic message types and unified Param into a single constexpr-heavy template that handles integral, float, pointer, array and class types via StdStringView parameter names. Consolidates many platform-specific overloads and reduces duplication. • Switched many APIs from raw const char* names to StdStringView and updated Float/Str helpers accordingly. • String formatting utilities updated to use forwarding and decay for exception handling and to avoid unnecessary copies. • Replaced manual accumulation with StdAccumulate for Lua static count, and made small functions (e.g. PrintSanityCheck) static where appropriate. • Bumped version defines and adjusted logging punctuation, plus small fixes to flags/FlagGet usage in OAL and CAF codec checks. • These changes improve type-safety, reduce code duplication, and enable compile-time dispatching for richer, more consistent error messages. • Refactor formatting, CVar validation, utilities. Modernize and centralize formatting and string utilities, enhance CVar validation, and apply related API updates across headers. • Reworked StrFormat/StrFormatParam to use string-view based formatting and added a literal overload; updated many call sites (Console, Log, Name, Shader, OAL, OGL, Socket, Statistic, etc.) to accept constexpr char-array formats for safer compile-time handling. • Added StrTrimRef and improved StrTrim overloads to operate on generic string types (with in-place variants and shrink_to_fit where appropriate). • Introduced CVar::VerifyString and new MUPPER/MLOWER flags (and MMASK) to centralize string validation/modification (trim/upcase/lowercase) and simplified SetValue to reuse verification logic. • Various utility and API updates: UtfDecoder/Wide conversion fixes, simplified Archive/file-iterator lookups using string_view, StdMap now uses transparent comparator (std::less<>), SysRedirect made final and moved to a member of SysBase, and multiple small memory/perf fixes (shrink_to_fit, remove needless copies). • Version bump and build metadata update. • These changes improve type-safety for formatted strings, reduce unnecessary allocations/copies, and consolidate validation logic for configuration variables. • Introduce TMASK, refactor flag ops & cvar checks • Add an explicit TMASK in cvardef.hpp to separate type bits from manipulation bits, and reorder mask definitions for clarity. Introduce FlagAnd and FlagAndInverted helpers in flags.hpp and simplify several FlagsConst methods to use those helpers (removing the variadic FlagIsAnyOfSetAndClear helper), improving readability and correctness of bit tests. Replace complex mixed-type checks in luavar.hpp with a switch on cvfcFlags.FlagAnd(TMASK) to reject none-or-mixed type combinations. Improve CVars logging/messages and fix a typo in cvars.hpp. Also bump VER_REV/VER_STR/VER_DATE in engine.hpp for a new build. • Use string_view params, tweak Lua init, bump version • Replace many temporary StdString constructions with StdStringView usages to avoid copies and modernize interfaces (cmdline, console, cvar(s), luavar). Change CVarItem::SetDefValue and CVars::RegisterVar signatures to accept StdStringView and update callers accordingly; adjust insertions to construct StdString only when storing in maps. Update Lua bindings: expand llvar.Register to extract args/flags and validate, and change luavar Init to accept name/default/flags (plus related registration logic updates). Also adjust command existence check to use the view overload. Bump version/revision and compilation date in engine.hpp to rev 179. • Refactor std utilities into stdcore; bump version. • Consolidate and rename stdtypes.hpp -> stdcore.hpp and move common STL utility wrappers (StdForward, StdDistance, StdIsXDigit, StdReserved, StdResized, StdToNonConstCast, etc.) into the new header. Update includes in build.cpp and engine.cpp to use stdcore.hpp, remove duplicate implementations from std.hpp and utf.hpp, and add a ssize_t alias for Windows in setup.hpp. Also bump engine version/build/revision and update VER_STR/VER_DATE in engine.hpp. • Replace StdString with StdStringView for APIs. • Refactor public/internal APIs to accept StdStringView (and templated string types where appropriate) instead of StdString to reduce unnecessary allocations and copies. Updates include: Archive, Asset, Async, Args, Clip, CmdLine, Console, Crypt, ConGfx and many other headers/source sites to use StdStringView parameters or template constraints; added StdString conversions where map lookups or ownership are required. Also added common string views svPipe and svColon, adjusted UtfWordWrap call sites to use StrList, and minor call-site fixes (StrAppend/StdString construction). This is a broad API surface change to prefer non-owning string references while preserving behavior where owning strings are needed. • Add indexed entries for key/value pairs in static Lua enum tables. We can then remove the 'MAX' entries as we can use '#Array' length instead. • Use std::span/size_t for Lua API. • Modernise Lua API types and counters, replace raw C arrays/ints with safer STL types, and bump engine version. • Bumped version in src/engine.hpp to 26.5.20.130 with updated build/rev/date. • Introduced StdSpan (std::span) typedef and added <span> include (src/setup.hpp, src/stdtypes.hpp). • Converted Lua constant/key/table arrays to use StdSpan and StdStringView (src/luadef.hpp) and updated LuaLibStatic fields to size_t/st-prefixed names. • Updated code in src/lua.hpp to use size_t/st-prefixed counters, StdSpan-based loops, and adjusted variable/macro names accordingly. • Adjusted lualib macros to construct LuaTable/LuaKeyInt spans and added an empty llrLast sentinel; updated related macros (src/lualib.hpp). • Normalized default parameter formatting and minor function signature cleanups in src/luautil.hpp. • Replace manual ASN.1 time parsing with ASN1_TIME_to_tm and StdMkTime conversions; add CertGetExpiry helper and use it in CertIsExpired. • Update console table to include expiry timestamps and time-to-expiry display. • Harden GLFW callbacks by renaming parameters to clearer names, consistently passing the GLFWwindow pointer, copying dropped file paths safely via span/for-each, and normalizing framebuffer/getters parameter names. • Improve CryptURLDecode to use iterators instead of raw pointers. • Fix time parsing variable names/format in StrParseTime2 and optimize string replace/search logic. • Switch token generator to return std::string substrings. • Introduce a 'StdIsString' concept and 'StdDistance' helper, tighten template constraints across string utilities, and refactor hostname validation into a reusable templated helper with callback handlers. • Update 'StrDuration' and pluralisation helpers to accept generic string types, add requires clauses to several templates (StrPluralise*, StrToGrouped*, StrFromRatio, etc.). • Fix Lua wrapper calls in 'llutil.hpp'. • Also update Lua util functions to use templated string conversions and improve error reporting in LuaUtilGetCppHostname. • Misc. small API and formatting adjustments across src/{engine,llutil,luautil,stat,std,string}. • Don't log every Socket class read and write to prevent log spam but instead log the transfer of the data to Lua. • Change a few other Socket log messages. • Add 'Util.PluraliseGrouped'. • Fix graphical console drawing when it is hidden triggering a full redraw. • Fix drawing flag not clearing when frame limiter is disabled. • Fixed graphical console processing key presses when terminal console is open which is also sending pointless console redraw events. • Other tweaks. • Fix a great deal of minor Win32 compilation warnings which has never been checked for many years *g*. • Optimise some UTF-8 functions to not use raw pointers. • Fix missing 'StdForward()' on 'StdSwap()'. • Tidying up. • Wrap NSGIF functions in error checking wrappers. • Overhaul the LUA garbage collector configuration system. The original system was wrong and didn't allow to configure all the parameters. • Improve Crypt::Sanitise so it changes lookalike homoglyphs to their proper normal ASCII values. • Move the codex for the homoglyphs and the html entities into separate files. • Other tidying up in places. • Add 'creset' command to redraw terminal UI. • Give all the templated declarations the once over and add checks for them. Which also fixes some typecasting issues. • Create 'syspix.hpp' to provide common functions for both Mac and Linux versions instead of needing to duplicating them. • Move 'SysBase::Redirect' to 'pixstdrd.hpp'. • Remove #includes in 'syspix.hpp' and 'sysnix.hpp' to deduplicate them and put them in 'syscore.hpp' instead. • Move endianness conversion macros to 'endian.hpp' and promote them to functions. Also juggle some related functions around. • Fix 'cast-function-type-strict' warnings and remove it from compilation flags. • Commonise control character handling. • Remove log entry for pipe read/write's. • DER formatted X509 files use .DER extension which the engine uses (not .CER). • Only backup the colour on actual colour change and not on every call. • Allow most cvars that can only be set by manifest be overriden by command-line. • Resolve incorrect Stream manager un-queue/re-queue OpenAL buffers behaviour. • Rename 'Ident' to 'Name' and rename to 'name.hpp'. • Rename 'IdList' to 'LookupArray' and put in 'lukarray.hpp'. ' Rename 'IdMap' to 'LookupMap' and put in 'lukmap.hpp'. • Underscore is allowed in a host name. • Add creation, modified and access time to 'dir' output. • Optimise the 'StrPluralise*' suite of functions. • Add 'Util:DurationS' and 'Util:DurationSEx' and rename 'Util:LDuration*' to 'Util:DurationL*'. • Wrap the 'std::swap' function with 'StdSwap'. • Don't allow setting inline font colour intensity if already set. • Store unique ID in directory record in the order of enumeration and update the 'dir' console command and 'File.Enumerate(Ex)' API functions to reflect that. • Add 'Source:IsPlaying()', 'Source:IsStopped()', 'Source:IsValid()' and 'Source:PlayTwo()'. The two 'Play()' functions now return if the 'Source' started playing or not. • A lot more readability fixes. • Break out 'IdentC*' classes from 'ident.hpp' into a new 'serial.hpp' file rename it to the 'Serial*' class. • Fix video FBO drawing lists not being cleared when rendered. [Assets] • Update API documentation. • Add 'macos' directory with readme and XCode project file. • Add '.gitignore'.
1 parent a9765d2 commit 7755f64

202 files changed

Lines changed: 17832 additions & 13407 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
*
2+
!.gitignore
3+
!*.md
4+
!docs/
5+
!docs/*.html
6+
!docs/*.md
7+
!docs/*.ico
8+
!licenses/
9+
!licenses/*.md
10+
!licenses/*.txt
11+
!macos/
12+
!macos/engine.xcodeproj/
13+
!macos/engine.xcodeproj/project.pbxproj
14+
!macos/engine.xcodeproj/project.xcworkspace/
15+
!macos/engine.xcodeproj/project.xcworkspace/*.xcworkspacedata
16+
!macos/engine.xcodeproj/project.xcworkspace/xcshareddata/
17+
!macos/engine.xcodeproj/project.xcworkspace/xcshareddata/*.plist
18+
!macos/engine.xcodeproj/xcshareddata/
19+
!macos/engine.xcodeproj/xcshareddata/xcschemes/
20+
!macos/engine.xcodeproj/xcshareddata/xcschemes/*.xcscheme
21+
!macos/*.md
22+
!scripts/
23+
!scripts/*.bat
24+
!scripts/*.md
25+
!scripts/*.sh
26+
!src/
27+
!src/*.cpp
28+
!src/*.hpp
29+
!src/*.md
30+
!win32/
31+
!win32/*.ico
32+
!win32/*.md
33+
!win32/*.rc
34+
!win32/*.xml

docs/index.html

Lines changed: 286 additions & 84 deletions
Large diffs are not rendered by default.

license.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# License & Disclaimer…
2-
This **engine** software is designed **only** for legitimate and lawful multimedia solutions and is provided **as is** with **zero** warranty. It also contains very strong cryptographic technologies which [might not be allowed](https://en.wikipedia.org/wiki/Cryptography_law) to be imported in your country. By using this software, whether you are the **guest** author or the **end** user, you accept that the [engine author](https://github.com/mhatxotic) and **all** the authors of **all** the [engine components](https://github.com/mhatxotic/engine?tab=readme-ov-file#credits) disclaim **all** liability for how the **guest author** or the **end user** chooses to use this software.
2+
This **engine** software is designed **only** for legitimate and lawful multimedia solutions and is provided **as is** with **zero** warranty.
33

4-
The **engine** source code was supplied for **reference only** so people can confidently trust the projects I make with it and try to help me improve it if necessary. However, it is also public as a result so I cannot stop anyone from doing what they want with it. My hope is that if you **only** do good things with this software, then it would be greatly appreciated if you could be as so kind as to credit me and help improve the source code farther.
4+
The **engine** also contains very strong cryptographic technologies which [might not be allowed](https://en.wikipedia.org/wiki/Cryptography_law) to be imported in your country. By using this software, whether you are the **guest** author or the **end** user, you accept that the [engine author](https://github.com/mhatxotic) and **all** the authors of **all** the [engine components](https://github.com/mhatxotic/engine?tab=readme-ov-file#credits) disclaim **all** liability for how the **guest author** or the **end user** chooses to use this software.
5+
6+
The **engine** *source code* and *repository* are supplied for **reference only** so people (**guest** authors and **end** users) can confidently trust the projects that are made with it and try to help us improve the engine if necessary. However, it is also now public as a result so we cannot stop anyone from doing what they want with it. Our hope is that if you **only** do good things with this engine, then it would be greatly appreciated if you could be as so kind as to credit us and help improve the engine source code farther or send any positive form of gratitude as you see fit.
57

68
## Copyright © 2006-2026 Mhatxotic Design. All Rights Reserved.

macos/engine.xcodeproj/project.pbxproj

Lines changed: 1920 additions & 0 deletions
Large diffs are not rendered by default.

macos/engine.xcodeproj/project.xcworkspace/contents.xcworkspacedata

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>IDEDidComputeMac32BitWarning</key>
6+
<true/>
7+
</dict>
8+
</plist>
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "2650"
4+
version = "1.7">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES"
8+
buildArchitectures = "Automatic">
9+
<BuildActionEntries>
10+
<BuildActionEntry
11+
buildForTesting = "YES"
12+
buildForRunning = "YES"
13+
buildForProfiling = "YES"
14+
buildForArchiving = "YES"
15+
buildForAnalyzing = "YES">
16+
<BuildableReference
17+
BuildableIdentifier = "primary"
18+
BlueprintIdentifier = "0C1168CA29E33FE90066C0D0"
19+
BuildableName = "engine"
20+
BlueprintName = "engine"
21+
ReferencedContainer = "container:engine.xcodeproj">
22+
</BuildableReference>
23+
</BuildActionEntry>
24+
</BuildActionEntries>
25+
</BuildAction>
26+
<TestAction
27+
buildConfiguration = "Release"
28+
selectedDebuggerIdentifier = ""
29+
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
30+
shouldUseLaunchSchemeArgsEnv = "YES"
31+
shouldAutocreateTestPlan = "YES">
32+
</TestAction>
33+
<LaunchAction
34+
buildConfiguration = "Debug"
35+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37+
customLLDBInitFile = "engine.xcodeproj/lldbinit"
38+
enableAddressSanitizer = "YES"
39+
enableASanStackUseAfterReturn = "YES"
40+
enableUBSanitizer = "YES"
41+
launchStyle = "0"
42+
useCustomWorkingDirectory = "YES"
43+
customWorkingDirectory = "$(PROJECT_DIR)/.."
44+
ignoresPersistentStateOnLaunch = "YES"
45+
debugDocumentVersioning = "YES"
46+
debugServiceExtension = "internal"
47+
enableGPUShaderValidationMode = "2"
48+
showGraphicsOverview = "Yes"
49+
logGraphicsOverview = "Yes"
50+
allowLocationSimulation = "NO"
51+
viewDebuggingEnabled = "No">
52+
<BuildableProductRunnable
53+
runnableDebuggingMode = "0">
54+
<BuildableReference
55+
BuildableIdentifier = "primary"
56+
BlueprintIdentifier = "0C1168CA29E33FE90066C0D0"
57+
BuildableName = "engine"
58+
BlueprintName = "engine"
59+
ReferencedContainer = "container:engine.xcodeproj">
60+
</BuildableReference>
61+
</BuildableProductRunnable>
62+
<CommandLineArguments>
63+
<CommandLineArgument
64+
argument = "ast_basedir=diggers"
65+
isEnabled = "NO">
66+
</CommandLineArgument>
67+
<CommandLineArgument
68+
argument = "sql_db=diggers/diggers"
69+
isEnabled = "NO">
70+
</CommandLineArgument>
71+
<CommandLineArgument
72+
argument = "gam_test=-1"
73+
isEnabled = "NO">
74+
</CommandLineArgument>
75+
<CommandLineArgument
76+
argument = "-"
77+
isEnabled = "NO">
78+
</CommandLineArgument>
79+
<CommandLineArgument
80+
argument = "log_file=-"
81+
isEnabled = "YES">
82+
</CommandLineArgument>
83+
<CommandLineArgument
84+
argument = "ast_basedir=test"
85+
isEnabled = "YES">
86+
</CommandLineArgument>
87+
<CommandLineArgument
88+
argument = "sql_db=test/test"
89+
isEnabled = "YES">
90+
</CommandLineArgument>
91+
<CommandLineArgument
92+
argument = "lua_script=x/0-http1.lua"
93+
isEnabled = "NO">
94+
</CommandLineArgument>
95+
<CommandLineArgument
96+
argument = "-"
97+
isEnabled = "NO">
98+
</CommandLineArgument>
99+
<CommandLineArgument
100+
argument = "ast_basedir=sm"
101+
isEnabled = "NO">
102+
</CommandLineArgument>
103+
<CommandLineArgument
104+
argument = "sql_db=sm/sm"
105+
isEnabled = "NO">
106+
</CommandLineArgument>
107+
</CommandLineArguments>
108+
<AdditionalOptions>
109+
<AdditionalOption
110+
key = "MallocScribble"
111+
value = ""
112+
isEnabled = "YES">
113+
</AdditionalOption>
114+
<AdditionalOption
115+
key = "NSZombieEnabled"
116+
value = "YES"
117+
isEnabled = "YES">
118+
</AdditionalOption>
119+
</AdditionalOptions>
120+
</LaunchAction>
121+
<ProfileAction
122+
buildConfiguration = "Debug"
123+
shouldUseLaunchSchemeArgsEnv = "YES"
124+
savedToolIdentifier = "Leaks"
125+
useCustomWorkingDirectory = "YES"
126+
customWorkingDirectory = "$(PROJECT_DIR)/.."
127+
ignoresPersistentStateOnLaunch = "YES"
128+
debugDocumentVersioning = "NO"
129+
enableTestabilityWhenProfilingTests = "No">
130+
<BuildableProductRunnable
131+
runnableDebuggingMode = "0">
132+
<BuildableReference
133+
BuildableIdentifier = "primary"
134+
BlueprintIdentifier = "0C1168CA29E33FE90066C0D0"
135+
BuildableName = "engine"
136+
BlueprintName = "engine"
137+
ReferencedContainer = "container:engine.xcodeproj">
138+
</BuildableReference>
139+
</BuildableProductRunnable>
140+
</ProfileAction>
141+
<AnalyzeAction
142+
buildConfiguration = "Debug">
143+
</AnalyzeAction>
144+
<ArchiveAction
145+
buildConfiguration = "Release"
146+
revealArchiveInOrganizer = "YES">
147+
</ArchiveAction>
148+
</Scheme>

macos/readme.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# MacOS resources
2+
3+
## Copyright © 2006-2026 Mhatxotic Design. All Rights Reserved.

readme.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
## About…
1313
Mhatxotic Engine attempts to be a safe, simple and fast [cross-platform](https://en.wikipedia.org/wiki/Cross-platform_software) [2-D](https://en.wikipedia.org/wiki/2D_computer_graphics) [multimedia](https://en.wikipedia.org/wiki/Multimedia) [engine](https://en.wikipedia.org/wiki/Game_engine) written in [C++20](https://en.wikipedia.org/wiki/C%2B%2B20) for [Visual C++](https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B), [Clang](https://en.wikipedia.org/wiki/Clang) and [GNU C++](https://en.wikipedia.org/wiki/GNU_Compiler_Collection) Compilers. This engine brings together many [open-source](https://en.wikipedia.org/wiki/Open_source) [libraries](https://en.wikipedia.org/wiki/Library_(computing)) into one easy-to-use environment controlled by the [LUA interpreter](https://en.wikipedia.org/wiki/Lua_(programming_language)). Right now the engine aims to operate on [Windows XP](https://en.wikipedia.org/wiki/Windows_XP) and [better](https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions) (x86 plus [x86-64](https://en.wikipedia.org/wiki/Windows_XP_Professional_x64_Edition)), [MacOS](https://en.wikipedia.org/wiki/MacOS) ([x86-64](https://en.wikipedia.org/wiki/OS_X_Mountain_Lion) plus [Arm64](https://en.wikipedia.org/wiki/MacOS_Big_Sur)) and [Linux](https://en.wikipedia.org/wiki/Linux) ([Ubuntu](https://en.wikipedia.org/wiki/Ubuntu) and [Mint](https://en.wikipedia.org/wiki/Linux_Mint) [x86-64](https://en.wikipedia.org/wiki/X86-64)).
1414

15-
Development is mainly focused by myself on the [MacOS](https://en.wikipedia.org/wiki/MacOS) version using an [M1 Ultra](https://en.wikipedia.org/wiki/Apple_M1) machine with the latest version [operating system](https://en.wikipedia.org/wiki/Operating_system) between 2020 to present. Infrequent development is on the [Linux](https://en.wikipedia.org/wiki/Linux) port with an old [i7 Mid-2011 iMac](https://en.wikipedia.org/wiki/IMac_(Intel-based)) and [AMD Radeon 6970](https://en.wikipedia.org/wiki/Radeon_HD_6000_series) [graphics](https://en.wikipedia.org/wiki/Graphics_card) running the latest [Ubuntu](https://en.wikipedia.org/wiki/Ubuntu) and uses [GcEnx's CrossOver port](https://github.com/Sikarugir-App/Sikarugir) to maintain both [Windows](https://en.wikipedia.org/wiki/Microsoft_Windows) versions since 2020 and was the main development environment between 2006 and 2020 on various high-end [gaming](https://en.wikipedia.org/wiki/Gaming_computer) and [workstations](https://en.wikipedia.org/wiki/Workstation). The engine is also tested successfully on a very old Dell [XPS M1330](https://en.wikipedia.org/wiki/Dell_XPS) Laptop from 2007 with [NVidia GeForce 8400GS](https://en.wikipedia.org/wiki/GeForce_8_series) graphics running the latest [Mint](https://en.wikipedia.org/wiki/Linux_Mint).
15+
Development is mainly focused by myself on the [MacOS](https://en.wikipedia.org/wiki/MacOS) version using an [M1 Ultra](https://en.wikipedia.org/wiki/Apple_M1) machine with the latest version [operating system](https://en.wikipedia.org/wiki/Operating_system) between 2020 to present. Infrequent development is on the [Linux](https://en.wikipedia.org/wiki/Linux) port with an old [i7 Mid-2011 iMac](https://en.wikipedia.org/wiki/IMac_(Intel-based)) and [AMD Radeon 6970](https://en.wikipedia.org/wiki/Radeon_HD_6000_series) [graphics](https://en.wikipedia.org/wiki/Graphics_card) running the latest [Ubuntu](https://en.wikipedia.org/wiki/Ubuntu) and uses the [Homebrew](https://brew.sh/) [port](https://homebrew.pkgs.org/apps/homebrew-cask/wine@devel-11.9.cask.html) of [Wine](https://www.winehq.org/) to maintain the [Windows](https://en.wikipedia.org/wiki/Microsoft_Windows) version since 2020 and was the main development environment between 2006 and 2020 on various high-end [gaming](https://en.wikipedia.org/wiki/Gaming_computer) and [workstations](https://en.wikipedia.org/wiki/Workstation). The engine is also tested successfully on a very old [Dell](https://www.dell.com) [XPS M1330](https://en.wikipedia.org/wiki/Dell_XPS) Laptop from 2007 with [NVidia GeForce 8400GS](https://en.wikipedia.org/wiki/GeForce_8_series) graphics running the latest [Mint](https://en.wikipedia.org/wiki/Linux_Mint).
1616

1717
<sup><sub><sup><sub>[↑ Top](#contents)</sub></sup></sub></sup>
1818
## Features…
@@ -71,7 +71,7 @@ See this [automatically generated document](https://Mhatxotic.github.io/Engine)
7171

7272
<sup><sub>[↑ Top](#contents)</sub></sup>
7373
## Examples…
74-
A remake of the classic [Amiga](https://en.wikipedia.org/wiki/Amiga) and [DOS](https://en.wikipedia.org/wiki/DOS) game [Diggers](https://github.com/Mhatxotic/Diggers) was made with this engine and available to play. The contents of the self-contained and portable executable are available in the [diggers](diggers) sub-directory.
74+
A remake of the classic [Amiga](https://en.wikipedia.org/wiki/Amiga) and [DOS](https://en.wikipedia.org/wiki/DOS) game [Diggers](https://github.com/Mhatxotic/Diggers) was made with this engine and available to play.
7575

7676
[This YouTube video](https://youtu.be/pWGotbWYcv4) is a preview of a private (quick and messy) script I made that dynamically builds a carousel which takes advantage of framebuffer-objects, True-type fonts, triangle rotations, dynamic texture coordinate manipulations, Vorbis audio and Theora video streams, and Lua's incredibly versatile ability to build event and animation systems.
7777

scripts/build-linux.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ cd ~/Assets/Engine
1414
# do -v to see command line or -### to print it and not compile
1515

1616
# debug add -g and -rdynamic
17-
g++ -v -O3 -fmax-errors=1 -I./include -I./include/ft -std=c++20 -DBETA -o ./bin/build.elf ./src/build.cpp ./lib/lua64.la ./lib/lzma64.la ./lib/ssl64.la -lglfw -lz -lrt -lncurses -ldl -lX11 -lpthread
17+
g++ -v -O3 -fmax-errors=1 -I./include -I./include/ft -std=c++20 -DBETA -o ./bin/build.elf ./src/build.cpp ./lib/lua64.la ./lib/lzma64.la ./lib/ssl64.la -lglfw -lz -lrt -lncurses -ldl -lX11 -lpthread -g -rdynamic
1818

0 commit comments

Comments
 (0)