stregasgate / gateengine Goto Github PK
View Code? Open in Web Editor NEWSwift Game Engine supporting Windows, Linux, macOS, HTML5, and more 🚂
License: Apache License 2.0
Swift Game Engine supporting Windows, Linux, macOS, HTML5, and more 🚂
License: Apache License 2.0
The OBJ importer only supports tries and quads. Add N-Gon support.
Attached model has many different N-Gons.
booth_full.obj.zip
TODO:
New Importers
GateEngine API
Platform Audit
Android Deferred #16
I'm a Fedora user, running swift 5.8.1. The target shows as x86_64-unknown-linux-gnu.
When I run the 2D animation window the window is black with no animation. When I run it from the command line it presents 2 unhandled event warnings (21 and 19) and I don't know if that's significant.
I'm not understanding how resource pathing works. I see the "Earth rotating 32 x 32.png' file, and I see it referenced from a relative path of "Resources/Earth rotating 32 x 32.png", from the Source location, but don't know how the engine uses this information, in relationship to the executable under the target directory for my platform. I get the same result when attempting to do "swift run 2D_01_AnimatedSprite".
I apologize if this is a new user error and would appreciate some direction if this isn't a bug. None of the demos are displaying anything. The multiple windows examples open windows, but they're all blank.
I also have a Win 10 system, so I'm tempted to install swift to work with the demos there to compare the behaviors.
Thanks!
Hi! Did not find any references to a linter and code style guides in the repo. It would be nice to have while the project does not become large and many other contributors joined the repository.
To not go too hard on a code style I would suggest using the existing one https://google.github.io/swift/ and for the linter SwiftLint. These two are battle-tested and used in many projects.
Feel free to close this issue without a response.
Shaders are generated every launch. Speed up loading and reduce lag.
Rework Shader API for public consumption.
MutableXXXXXShader
type variant as these won't be cacheable.Design:
Support standard views and controls. Users should be able to easily build complex apps.
Standard MVC Hierarchy:
Should also have a SwiftUI style API so GateEngine can easily be used for things like companion apps, or custom level editors.
Graphics become glitched sometimes.
Likely an incorrect buffer or buffer access somewhere.
The test executable crashes during tests involving Gravity scripts at WASIPlatform.fetch()
Deferring solving this bug until it gets hit in a GateEngine project where more information might be available in output.
Debugging Discoveries
The crash occurs after JSPromise.value
returns and before the retuned value is stored.
Thoughts:
fetch
does return once, so again probably a threading issueThe crash trace:
<?>.wasm-function[swift_task_asyncMainDrainQueueImpl()]@[wasm code]
<?>.wasm-function[swift_task_asyncMainDrainQueue]@[wasm code]
<?>.wasm-function[XCTMainRunLoopMain]@[wasm code]
<?>.wasm-function[$s6XCTest7XCTMain_9arguments9observersySayAA0A4CaseCm04testE5Class_SaySS_yAFKctG8allTeststG_SaySSGSayAA0A11Observation_pGtF]@[wasm code]
<?>.wasm-function[$s6XCTest7XCTMainyySayAA0A4CaseCm04testC5Class_SaySS_yADKctG8allTeststGF]@[wasm code]
<?>.wasm-function[$s22GateEnginePackageTests6RunnerV4mainyyFZ]@[wasm code]
<?>.wasm-function[$s22GateEnginePackageTests6RunnerV5$mainyyFZ]@[wasm code]
<?>.wasm-function[main]@[wasm code]
wasm-stub@[wasm code]
49869@[native code]
@http://127.0.0.1:8080/test.js:8948:30
Tests involving gravity are disabled on HTML5 using a package define DISABLE_GRAVITY_TESTS
XAudio2 is C++ only. Going to give Windows OpenAL as a fallback while C++ Interop is completed.
Modifiers as actual keys for keyDown/keyUp
Add media keys (play, pause, etc...)
Add number pad
Differentiate key for controls and character for text input
Android Deferred #14
Create a new GeometryImporter for FBX files.
This is a moderate difficulty issue.
If you have no experience working with geometry data there will be a learning curve.
Use the uFBX module which is already a part of GateEngine.
import uFBX
Name this new importer FBXImporter
.
Add your loader to the geometry importers here. This is where built-in importers are located.
Use only GateEngine APIs for data loading, do not use any file APIs included in the uFBX module.
See the OBJ loader as an example of how a geometry importer works.
Use Blender to create an FBX file to test with. It can simply be the default cube or whatever you wish.
Create an executable package to test with. It would be easy to copy the RotatingCube code to your test package and replace the cube with your fbx test file.
Xcode Tip:
In Xcode if your project package and the GateEngine package exist in the same xcworkspace document, then it will build with that local copy of GateEngine as you make changes.
Make a new workspace in Xcode then open your package in Xcode, and drag the package icon into the workspace.
Repeat for your GateEngine fork.
Dragging the Package.swift file does not work, you need to open it then drag the package icon in the project navigator.
Versions:
OS Support:
Skeletal animations and RigSystem are cumbersome and difficult to use. Rework into something more friendly and approachable.
Special DocC Pages
Chrome doesn't appear to finish locking
Safari is reporting delta changes when the cursor doesn't move
FireFox is working correctly
Give Entity
a state and allow users to check if it's completely loaded
Things that need loaded checking:
configure()
blocks
Design a LoadingSystem
and LoadingSystemComponent
with easy access to progress indicator and gracefully handles failure states.
Possibly use a LoadingDescriptionComponent
to handle configuring an entity for loading itself.
Build fails on macOS Sonoma 14.2.1 with Xcode 15.2 building for iOS/iPadOS 17.2 device with many repeated “No such module” many repeated errors looking for modules “DOM”, “ECMAScript”, & “JavaScriptEventLoop”. Issues seem to occur both on main (77889f0) and latest version tag (0.1.2) via both this repo and the GateEngineDemos repo (which pulls down GateEngine 0.1.2). Fresh git clone (I've never used GateEngine before today).
Versions:
OS Support:
GateEngine
Bool
, Int
, UInt
, Double
, String
, etc...)Data
and any Codable
Data.init(contentsOf:)
usagePlatforms
Currently every supported platform supports Foundation, but Bare Metal is coming and probably won't.
Confine Foundation to Platform instances and replace it's functionality with abstractions.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.