Really cool game engine, I really like how you explain the documentations😊. Gamesfromscrath made a review on it yesterday
SnaX Game Engine
A downloadable 3D Game Engine for Windows
SnaX is a fast and lightweight development tool for 3D-graphics applications based on a real-time, visual programming concept. Real-time because every update you make to your program can be viewed instantly as you develop - Visual because programming happens in a graphical environment, where writing code is replaced by linking together small, precompiled blocks of functionality called Chips.
SnaX is built for Windows 10, using DirectX 12 for state-of-the-art graphics. It got a bunch of cool features including
- An object-oriented programming design
- Build classes and class hierarchies. Visually!
- Add data members and functions. Visually!
- Override and inherit. Visually!
- Real-time physics simulations using Nvidia PhysX 4
- Open source plugin available on Github!
- Importers for many popular 3D-asset and texture formats
- Including 3ds, fbx, obj, glTF and dae.
- Low-level access to the graphics pipeline:
- Fully user-configurable material and lighting system.
- Program all shader stages using HLSL, including compute shaders.
- Forward or deferred rendering: You decide!
- HDR rendering and tone mapping: Up to you!
- Physically Based Rendering (PBR): Yes, you can!
- Fast and easy debugging
- In-game Break Points.
- View the current stack trace!
- Step into your code, edit and continue!
- Native debugging is also possible for users of the SDK.
- Built-in performance profiling
- Locate the bottlenecks!
- Statistics are available real-time!
- A C++ SDK available on Github!
- Create your own Chips!
- Integrate your favorite libraries!
More information is available on the official web site: snaxgameengine.com.
Note that SnaX is for Windows 10 only.
A DirectX 12 (Feature Level 11) compatible graphics card is required.
Current Version: 1.6.0
Log in with itch.io to leave a comment.
make for mac!
I just discovered your software last night and tried your first tutorial and it doesn't work. I will probably try again. to me a person that knows how to code and understand logic, the program is hard to use due to the fact i still have to relearn your whole system. eventually you need to simplified it even more. for example: lets say i want to display something on the screen. I should be able to drag a block of code just to do that instead of multiple blocks in your case called chips to do it. the block code should contain the parameter for png,position, just for starters and there also should be an option to display animation or not. that's just a quick example how to even simplify it even more for an average user. i've tried/evaluated about 50 game engines. most of it have a steep learning curve because i have to learn their methodology to do certain things and each have their own way of doing things. to decrease the learning curve a user shouldn't have to memorize anything. memorizing things increases the learning curve. you want to decrease that. another example is: lets say i want to display some menus. I should be able to drag a block of code and all i have to do is just fill in the blanks for the menus and the gui is already done for me. another example is player controls I should be able to drag a block of code and just assign key assignments and link that to the player sprite. your engine is what i'm looking for and it still needs a lot of work to make it usable for the average guy. that's the goal you should aim for "the average guy." this way you have mass appeal and grow this into a full time job like blender and godot. godot is still a difficult engine to learn.
Hey some_code_person, thank you very much for your feedback, I appreciate it! Some of the features I believe you are asking for is what's called "Templates" in SnaX, which are pre-built functionality including camera controls, primitives for rendering, shaders and other common functionality. You find them in the upper-left tabs. I will have a look at the tutorials to see what's wrong.
There is a lot more that can be done when it comes to documentation, examples, tutorials, video-tutorials, features to help the developer in-app and so forth, if I only had time to do everything :-/
The tool is quite simple to use when you know how it works, but at the same time it is also quite a low-level tool where you have to build more of the basics yourself. It's not an engine where you can just drag and drop a terrain, some characters, give them a weapon, apply some AI, and then you have a first person shooter! Far from it. It is more of a programming tool where you build things from scratch. This makes it very flexible and versatile, but harder to get started with and probably not for everyone, at least if they expect it to be the high-level engine that it's not! It could make a great tool for learning programming and 3d-graphics for many, I believe!
What would, in your opinion, be the single most helpful thing I could do to make SnaX easier to get started with?
Quick start tutorial:
The basic functions and knowledge required to use your software.
I understand this is your hobby project and your are just a 1 man person coding this software. I found another one similar to yours but I simply don't know how to use it.
I have tried over 50 softwares/game engines and still in the process of trying more game engines/programming languages. These are just the handful of software I evaluated and remembered since I still have it on my computer and trying to learn it further, if i don't find it potentially being useful, I normally delete them: gdevelop, godot, defold. These are the major ones I'm interested in learning further.
It took me about 2 weeks to learn the following game engine and done a prototype with it: arcade game studio. after 2 weeks of learning the program, i'm confident i can make some sort of game out that engine. I didn't have to memorized anything. To my experience the #1 blockage on using a new software is the lack of tutorials and examples to get it started. The second blockage is the software is so complicated to do a simple task.
On some software I tried to evaluate, I don't even know what it does. In some cases I don't even know how to get started.
I've only used your software for a few hours, so i may have more feedback later.
Thanks for great suggestions and thoughts around this! I guess one of the keys to make great, user-friendly software is to strike the balance between functionality and simplicity. Some stuff in SnaX may look a bit daunting at first, like getting your first 3d-model on screen, but at the same time, I'm trying not to oversimplify things and leave out features that advanced users might find useful. I have many times used tools that are nice and simple to start with, but as you get more experienced and want to make more advanced stuff with it, you are stuck because the functionality you need is just not there. For rendering for example, my goal has been to make the layer above the graphics API (d3d12) as thin as possible, which makes things a little complicated, but at the same time gives you great flexibility and a lot of features to play with.
For the next release, I will probably try to focus more on lowering the bar for first time users of the software. Better tutorials as you mentioned, maybe an interactive application walk-through, make the current examples more available as they currently are a bit "hidden" in the application directory. I'm also working on a bigger example (game) that I eventually will put on github, to showcase the potential of SnaX, and make it more interesting.
The pyramid concept. At the top of the pyramid you have advance coders/users but people at the top are less than the people that are at the bottom, so even if your software appeals to them the potential of you getting any kind of support is slim. At the bottom of the pyramid you have novices that's want to create something. There are a lot people at the bottom compared to the people at the top. So if you simplify your software, you will have greater mass appeal. Don't think terms of yourself but think in terms of mass appeal so people will adopt your software.
Here are my suggestions: 1) Demonstrate how easy it is to do common task relating to games or apps or both. It may be through videos or inline via your software.
2) There would be novice examples/tutorials, intermediate examples/tutorials, and advance examples/tutorials.
If i want to make a shooter game, I would just go and get a template of that and modify it. I'm not going to reinvent the wheel. You can easily do a template for games. imagine if people wanted to do a shooter game, all they gotta do is drag the template in and modify the scene, shots, world. If people see that demonstration, people would have their eyes pop out of their eye sockets. I know I would.
Certainly some interesting thoughts, I will keep that in mind for my further work on this project, and for the next releases!
For the tutorial, I had a look at it, and it is slightly outdated. In Step 6, the semantics for the objects should be TEXTURE1 and SAMPLER1, not LOCAL_TEXTURE1 and LOCAL_SAMPLER1. Sorry about that!