Thread overview
Hipreme Engine v1.0.0 Announcement + iOS port
Dec 21
Hipreme
Dec 21
aberba
Dec 21
Hipreme
Dec 21
Hipreme
Dec 22
M.M.
December 21

Hipreme Engine v1.0.0 Announcement

Today, I'm glad to announce that Hipreme Engine is finally releasing its version 1.0. The 1000th commit marks the first release of this engine. There is a lot of work already done and a lot of work to be done. Some systems may find unstable support, such as Linux, which of course I'm willing to help, since it is not my development platform, it may not even work on the first run. But, even though this may happen, there is still a lot of work already done to be shown. It is the first D library with that quantity of abstraction done for making your work fully cross platform. But, with a lot of missing functionality, why announce right now?

iOS Porting is Done

Hipreme Engine on iOS

Battle Testing

It is high time to start battle testing Hipreme Engine. The engine is not gonna suffer any more power refactor for some time now, since all the platforms are supported, the abstraction is good enough for doing much.

Make It Better

By releasing this to public, it is possible to identify common pitfalls that could be easily solved with a little time. Build selector born from the need of making it easier to users setup the engine.

Be Patient

Expecting the engine to work with the same behavior on every OS and API is quite a hard task. It may take some time until the engine is stable for everyone, although I guarantee I've done the best I could to provide a high quality experience.

Your Issue Is My Priority

If you find any kind of issue, don't be afraid to submit the issue, don't try to circumvent it unless you're really planning to release anything soon. By submitting the issue you make me aware of it and I'm certain that if it is doable, it is definitely priority.

Platforms Supported:

  • Windows
  • Linux
  • MacOS
  • iOS
  • Android
  • PS Vita
  • WebAssembly
  • Xbox Series

Current Compiler:

  • DMD 2.106
  • LDC 1.36

Warning:

You won't be able to use your PC's D version. This was made because the existence of the custom runtime I'm supporting right now and to guarantee the best experience of any user. The language understands which version you're using on build_selector, and queries your permission for downloading it. Since this is a one person project, this is the best way I found for guaranteeing more stability.

Supporting APIs:

Rendering

  • OpenGL 3
  • OpenGL ES 1/2
  • WebGL
  • Direct3D 11
  • Metal 2.4

Audio

  • OpenAL
  • OpenSL ES
  • XAudio 2
  • AVAudioEngine

Features

  • Basic Windowing Support (Meant to open your window and execute your game)
  • Basic Filesystem (Read/Write) on supported platforms with async API
  • Game assets recognition + preloading
  • Primitives Rendering
  • Sprites+Animations rendering
  • Tween
  • Scripting API (Hot reload without reopening game window) + null dereference check on Windows + Linux
  • Easy build system that should not require knowledge in specific domains
  • Tilemap rendering

What you can do with the current state

  • Easily create a single screen game
  • Generate builds to every platform mentioned
  • 2D games

Common functionalities it is lacking

  • GUI
  • 2D Physics Engine
  • Particle System (needs more testing and serialization)
  • Post Processing shaders
  • User threading (means that the API user should not use core.thread as it is not guaranteed to work)

Planned Features

The features here planned are in order of importance:

  1. Tutorials
    1. Particle System
    2. Basic GUI
  2. Documentations
  3. Small refactors on audio engine
  4. Shader Transpiler - Write in D, output shaders for every API
    1. Frame buffer abstraction
    2. Post processing shaders
  5. Make the renderer message based

Warnings

Starting Point

  • Means that the API finally reached a lot more of stability, it is entirely possible to create games.

You may find dumb bugs

  • As of now, I'm releasing this to make it easily available to dub users. So, this project is still lacking some battle testing.

Lack of tutorials and documentation

  • The lack of tutorials and documentation are a real problem right now. This is the next step after the creation of some games

Build Selector CI

  • The build selector CI is still requiring some updates to not let it get changes from separate branches, it may break on the release section.

Getting Started

Run dub run hipreme_engine:build_selector. The actual recommended would be simply cloning the engine on your own since it may reach some path requirements problems on Windows.

December 21

On Thursday, 21 December 2023 at 00:32:00 UTC, Hipreme wrote:

>

Hipreme Engine v1.0.0 Announcement

Today, I'm glad to announce that Hipreme Engine is finally releasing its version 1.0. The 1000th commit marks the first release of this engine. There is a lot of work already done and a lot of work to be done. Some systems may find unstable support, such as Linux, which of course I'm willing to help, since it is not my development platform, it may not even work on the first run. But, even though this may happen, there is still a lot of work already done to be shown. It is the first D library with that quantity of abstraction done for making your work fully cross platform. But, with a lot of missing functionality, why announce right now?

[...]

Man I'm so happy to see this!

December 21
[Moving this out of the announce forum, because this may become high-traffic]

On Thu, Dec 21, 2023 at 12:32:00AM +0000, Hipreme via Digitalmars-d-announce wrote:
> # Hipreme Engine v1.0.0 Announcement
> 
> Today, I'm glad to announce that Hipreme Engine is finally releasing its version 1.0. The 1000th commit marks the first release of this engine. There is a lot of work already done and a lot of work to be done. Some systems may find unstable support, such as Linux, which of course I'm willing to help, since it is not my development platform, it may not even work on the first run.
[...]

I've been meaning to try this out, and now seems as good a time as any other.  Plus I'm also on Linux, if I find that this engine suits my needs I'd be happy to help with fixing any Linux-related issues.

Anyway, I decided to go the hardcore route and clone the git repo. (After all, I plan to be contributing if I find that I like the workflow.) Unfortunately, I can't get it to build afterwards:

	$ dub run hipreme_engine:build_selector
	Error No package file found in /home/hsteoh/prog/d/lab/hipreme/HipremeEngine/dependencies/avaudioengine/, expected one of dub.json/dub.sdl/package.json

What should I do next?

For reference, the output of `dub --version` is:

	DUB version 1.35.0, built on Dec 21 2023

(This is git master. Do I need a specific version of dub too?)


T

-- 
Being forced to write comments actually improves code, because it is easier to fix a crock than to explain it. -- G. Steele
December 21
On Thu, Dec 21, 2023 at 12:03:54PM -0800, H. S. Teoh via Digitalmars-d wrote: [...]
> 	$ dub run hipreme_engine:build_selector
> 	Error No package file found in /home/hsteoh/prog/d/lab/hipreme/HipremeEngine/dependencies/avaudioengine/, expected one of dub.json/dub.sdl/package.json
[...]

Now I feel like an idiot, I'd cloned the git repo but didn't realize I had to clone the submodules too. After running:

	git submodule init
	git submodule update

the above error went away.

Now it's complaining about curl, but that's a known issue. Installing now and let's hope it works this time...


T

-- 
Why do conspiracy theories always come from the same people??
December 21

On Thursday, 21 December 2023 at 20:03:54 UTC, H. S. Teoh wrote:

>

[Moving this out of the announce forum, because this may become high-traffic]

On Thu, Dec 21, 2023 at 12:32:00AM +0000, Hipreme via Digitalmars-d-announce wrote:

>

Hipreme Engine v1.0.0 Announcement

Today, I'm glad to announce that Hipreme Engine is finally releasing its version 1.0. The 1000th commit marks the first release of this engine. There is a lot of work already done and a lot of work to be done. Some systems may find unstable support, such as Linux, which of course I'm willing to help, since it is not my development platform, it may not even work on the first run.
[...]

I've been meaning to try this out, and now seems as good a time as any other. Plus I'm also on Linux, if I find that this engine suits my needs I'd be happy to help with fixing any Linux-related issues.

Anyway, I decided to go the hardcore route and clone the git repo. (After all, I plan to be contributing if I find that I like the workflow.) Unfortunately, I can't get it to build afterwards:

$ dub run hipreme_engine:build_selector
Error No package file found in /home/hsteoh/prog/d/lab/hipreme/HipremeEngine/dependencies/avaudioengine/, expected one of dub.json/dub.sdl/package.json

What should I do next?

For reference, the output of dub --version is:

DUB version 1.35.0, built on Dec 21 2023

(This is git master. Do I need a specific version of dub too?)

T

Reposting iOS port showcase since it is hidden now.

iOS Port Showcase

Dependency resolution bug

Unfortunately, this is a bug that is yet to be solved in dub (Super dumb for me. If a dependency is missing in a configuration that is not even used, it gives a compilation error (As you can see, this is a dependency for iOS).

Fixing the bug

git submodule update --init --recursive.

Since I tend to update a lot the tags, I may also recommend you executing dub run hipreme_engine:build_selector@1.0.8 and alike, since unfortunately, dub package manager can't detect changes in ~master or branches (you need to remove and update).

December 21
On Thu, Dec 21, 2023 at 09:08:00PM +0000, Hipreme via Digitalmars-d wrote: [...]
> `git submodule update --init --recursive`.

Yeah, I figured as much after a little further investigation. Probably this should be documented somewhere, maybe the README?  "Note: if you git clone'd, make sure you run this afterwards: ...".  This is obvious once you've done it before, but could prove a stumbling block for the unaware.


> Since I tend to update a lot the tags, I may also recommend you executing `dub run hipreme_engine:build_selector@1.0.8` and alike, since unfortunately, `dub` package manager can't detect changes in ~master or branches (you need to remove and update).
[...]

Yeah dub has issues... :-/

Now it's asking me whether I want to download LDC because ldcVersion isn't set.  Where can I set it?  I'd like it to use the LDC I already installed as opposed to downloading its own, if possible.


T

-- 
Your inconsistency is the only consistent thing about you! -- KD
December 21
On Thursday, 21 December 2023 at 21:26:54 UTC, H. S. Teoh wrote:
> On Thu, Dec 21, 2023 at 09:08:00PM +0000, Hipreme via Digitalmars-d wrote: [...]
>> `git submodule update --init --recursive`.
>
> Yeah, I figured as much after a little further investigation. Probably this should be documented somewhere, maybe the README?  "Note: if you git clone'd, make sure you run this afterwards: ...".  This is obvious once you've done it before, but could prove a stumbling block for the unaware.
>
>
>> Since I tend to update a lot the tags, I may also recommend you executing `dub run hipreme_engine:build_selector@1.0.8` and alike, since unfortunately, `dub` package manager can't detect changes in ~master or branches (you need to remove and update).
> [...]
>
> Yeah dub has issues... :-/
>
> Now it's asking me whether I want to download LDC because ldcVersion isn't set.  Where can I set it?  I'd like it to use the LDC I already installed as opposed to downloading its own, if possible.
>
>
> T

My engine has version locked the LDC version. This is required since maintaining support to every OS in multiple language versions, specially while keeping support for a custom runtime is quite a hard and unfulfilling task. This requirement may die if in the future D has an official minimal runtime (or not since I also provide runtime for PS Vita).
December 22

On Thursday, 21 December 2023 at 00:32:00 UTC, Hipreme wrote:

>

Hipreme Engine v1.0.0 Announcement

Today, I'm glad to announce that Hipreme Engine is finally releasing its version 1.0. The 1000th commit marks the first release of this engine. There is a lot of work already done and a lot of work to be done....

This is quite an achievement. Congratulations and wishing you good progress with the future releases.

December 30

On Thursday, 21 December 2023 at 00:32:00 UTC, Hipreme wrote:

>

Hipreme Engine v1.0.0 Announcement

Today, I'm glad to announce that Hipreme Engine is finally releasing its version 1.0. The 1000th commit marks the first release of this engine. There is a lot of work already done and a lot of work to be done. Some systems may find unstable support, such as Linux, which of course I'm willing to help, since it is not my development platform, it may not even work on the first run. But, even though this may happen, there is still a lot of work already done to be shown. It is the first D library with that quantity of abstraction done for making your work fully cross platform. But, with a lot of missing functionality, why announce right now?

iOS Porting is Done

Hipreme Engine on iOS

Battle Testing

It is high time to start battle testing Hipreme Engine. The engine is not gonna suffer any more power refactor for some time now, since all the platforms are supported, the abstraction is good enough for doing much.

Make It Better

By releasing this to public, it is possible to identify common pitfalls that could be easily solved with a little time. Build selector born from the need of making it easier to users setup the engine.

Be Patient

Expecting the engine to work with the same behavior on every OS and API is quite a hard task. It may take some time until the engine is stable for everyone, although I guarantee I've done the best I could to provide a high quality experience.

Your Issue Is My Priority

If you find any kind of issue, don't be afraid to submit the issue, don't try to circumvent it unless you're really planning to release anything soon. By submitting the issue you make me aware of it and I'm certain that if it is doable, it is definitely priority.

Platforms Supported:

  • Windows
  • Linux
  • MacOS
  • iOS
  • Android
  • PS Vita
  • WebAssembly
  • Xbox Series

Current Compiler:

  • DMD 2.106
  • LDC 1.36

Warning:

You won't be able to use your PC's D version. This was made because the existence of the custom runtime I'm supporting right now and to guarantee the best experience of any user. The language understands which version you're using on build_selector, and queries your permission for downloading it. Since this is a one person project, this is the best way I found for guaranteeing more stability.

Supporting APIs:

Rendering

  • OpenGL 3
  • OpenGL ES 1/2
  • WebGL
  • Direct3D 11
  • Metal 2.4

Audio

  • OpenAL
  • OpenSL ES
  • XAudio 2
  • AVAudioEngine

Features

  • Basic Windowing Support (Meant to open your window and execute your game)
  • Basic Filesystem (Read/Write) on supported platforms with async API
  • Game assets recognition + preloading
  • Primitives Rendering
  • Sprites+Animations rendering
  • Tween
  • Scripting API (Hot reload without reopening game window) + null dereference check on Windows + Linux
  • Easy build system that should not require knowledge in specific domains
  • Tilemap rendering

What you can do with the current state

  • Easily create a single screen game
  • Generate builds to every platform mentioned
  • 2D games

Common functionalities it is lacking

  • GUI
  • 2D Physics Engine
  • Particle System (needs more testing and serialization)
  • Post Processing shaders
  • User threading (means that the API user should not use core.thread as it is not guaranteed to work)

Planned Features

The features here planned are in order of importance:

  1. Tutorials
    1. Particle System
    2. Basic GUI
  2. Documentations
  3. Small refactors on audio engine
  4. Shader Transpiler - Write in D, output shaders for every API
    1. Frame buffer abstraction
    2. Post processing shaders
  5. Make the renderer message based

Warnings

Starting Point

  • Means that the API finally reached a lot more of stability, it is entirely possible to create games.

You may find dumb bugs

  • As of now, I'm releasing this to make it easily available to dub users. So, this project is still lacking some battle testing.

Lack of tutorials and documentation

  • The lack of tutorials and documentation are a real problem right now. This is the next step after the creation of some games

Build Selector CI

  • The build selector CI is still requiring some updates to not let it get changes from separate branches, it may break on the release section.

Getting Started

Run dub run hipreme_engine:build_selector. The actual recommended would be simply cloning the engine on your own since it may reach some path requirements problems on Windows.

exciting!
Hope to get better and better, continue to pay attention! DX12 and Vulkan render!