(July 2023) Monthly WIP Screenshot Thread

I like your style. :grinning:
It surprises me how the NavMesh geometry is so good. I would be curious to know what configuration parameters you used.

1 Like

Added first NPC! The Baker!

In scene editor

I define game objects in JSON format and save them in to object prefabs folder, editor automatically detects and displays them, and I can then spawn them anywhere on the scene.

At runtime, the prefab file is loaded and the actual entity is constructed with all the required components (ECS).

JSON file is only used in development. For distribution, I am planning to add a Gradle task to convert prefabs from JSON format to binary object format using Java built-in serialization so players can’t mess up with them easily! :wink:

10 Likes

Thank you very much.
Yeah the settings differ a lot depending on the way your map is setup.
I found a few configurations that did not work.

I don’t understand this, why would you want to prevent players from modifying the game?

2 Likes

Well then that would be open for “hacking” :wink: (simply via a text editor)

Maybe I provide a different version for this purpose!

I’ve been working on the last map of my game with the boss fight.
It’s a kind of space monster that feeds from the ship’s reactor.

Imgur
Imgur
Imgur
Imgur

It has three phases;
At the beginning it’s protected by a shield and it spawns smaller monsters. To disable the shield we have to get some codes from the inner terminals and enter these codes in the main terminal.
The tentacles would insta-kill the player.
In the second phase it starts shooting projectiles while some androids come from behind to attack us.
In the final phase the head is detached from the body and chases the player, also security turrets pop up from the floor and start shooting.

At the end of the video I display how the tentacles are composed by small spheres that follow the same sinusoidal movement as the mesh animation.
The mesh is deformed by updating the vertex buffers, this is very inefficient and should be done in the vertex shader, however the mesh is pretty low poly and all being java code I can reuse the same function for the physics movement (much easier to tweak one place than having two copies of the same formula).

13 Likes

yeah, but it’s fun to hack games :smiley:
It’s up to you if you want to let players change (or break) their experience but I believe is a good thing (unless it’s for cheating in multiplayer games).
One example is id Software, back in the day, made the doom map format public and open sourced some of their tools (later the whole game) so people could mod the game very early on. I still play doom to this day and there’s a huge modding community with vast content that would not be possible if they hadn’t made it easy to mod the game.

3 Likes

I have told people for long time that flying spaghetti monster is real! And now I even have rendered evidence of this!

2 Likes

I released another library, the Jector Framework, a Java framework featuring the DI pattern using Java Reflection.

Jector-Monkey is a specialized implementation of Jector for jMonkeyEngine Applications. The design of Jector is partially based on the Gradle core API (the Gradle Tasks) and those tech demos.

Jector and Jector-Monkey are currently in their incubator versions, give it a try!

repositories {
    mavenCentral()
}
dependencies {
    implementation "io.github.software-hardware-codesign:jector:incubator-2"
    implementation "io.github.software-hardware-codesign:jector-monkey:incubator-2"
    implementation "org.jmonkeyengine:jme3-core:3.6.1-stable"
    implementation "org.jmonkeyengine:jme3-desktop:3.6.1-stable"
    implementation "org.jmonkeyengine:jme3-lwjgl3:3.6.1-stable"
}

Jector Framework features:

  1. Dependencies are defined by some Method objects as Tasks.
  2. Dependencies created from Worker Method objects only.
  3. Dependencies are bound to their Executors (threads, states, …) interfaces via WorkerTasks (which enclose those low-level worker Methods).
  4. Dependencies could be only instantiated from Worker Methods (annotated methods inside Worker classes).
  5. A Worker interface is a marker interface for the Jector Framework.
  6. A Worker implementation signifies a runtime environment for the DI actions.
  7. A TaskExecutorManager implementation has a Worker instance and is the injector object that creates WorkerTasks from Worker Methods and injects them into annotated TaskExecutors.
  8. A TaskExecutor implementation is a wrapper to a collection of WorkerTasks to be executed, TaskExecutor could be a State, a Thread, a Server Container,…etc.

Jector-Monkey added features:

  • MonkeyTaskExecutor: a BaseAppState class to receive the bound tasks.
  • MonkeyTaskManager: registers/unregisters TaskExecutors including the JME TaskExecutor (MonkeyTaskExecutor).
  • MonkeyWorkerTask: a WorkerTask providing the ability to monitor the time-per-frame value.

Jector-Monkey Example showing async asset loading:

Demonstrating video:

Jector:

6 Likes

Hi all,
I like to share a little prototype game I made over the weekend.
The idea is similar to the game “Race the sun”.

This game is very short and has only a few combination of sections, however it was fully developed with my Scene Editor.
Link: Super Sonic Boom by tgiant

Screenshots:



And a screenshot just of my plane/player control brain:

14 Likes

Looks great! :+1:
What kind of filter did you use for bluring?

Thank you.
It is a custom BarrelBlur filter.

Fantastic work man!

1 Like