#💀 Cortex Engine

1 messages · Page 8 of 1

grizzled laurel
#

Many of which also have their own disadvantages

molten sleet
#

Im gathering all the info i can

molten sleet
ionic badger
#

the way to learn something is to break it down into small pieces, to the point you understand it

#

you might know things like batching, instancing, but in the context you're doing them, these things are new

#

try to do these these things in the context that you're in, you'll have some idea to build on

#

it will be a kind of 1.5 step

molten sleet
#

I kinda have a grasp on it?

ionic badger
#

yeah but it's a new context

#

use that "kind of" to get you some ground in the new arena

#

its not necessarily the "only" way to go about things, but you're struggling so why not see if you can work out something you kind of know

#

it lowers the weight a bit

molten sleet
#

Yea

clear dome
#

Focus on the things you actually need to do, in an iterative way. No need to learn it all at once

crystal grove
#

Optimization in graphics programming is a whole thing on its own. If you go into shadertoy and see the nightmare one liners people create just to avoid an if statement, it's not worth even thinking about when you're learning

void condor
#

u dont, you have to embrace the insanity

#

personally I think people should still learn with old school opengl + Nehe's tutorials.

molten sleet
grizzled laurel
#

it is how graphics programming works

#

in the beginning you may expect to stare at an empty screen wondering why it's not rendering

#

luckily folks these days are pretty fortunate with tools like renderdoc

molten sleet
grizzled laurel
#

rookie mistake

#

luckily that one is pretty simple to spot

molten sleet
#

i love it when it doesn't load an image and doesn't tell me (there's probably a way im just lazy

#

its as convenient as getting hit in the head with a brick

void condor
#

I still remember writing my first bump-map shader in it. Shadermodel 2.0 was huge

grizzled laurel
#

what did you have for debugging specifically

#

tools like NSight or RenderDoc is what is commonly used now ofc

#

but did you have anything like that in the past

#

not "prototyping" but more of "debugging"

void condor
#

there were some tools, forgot the names, but it was mostly about tracing calls and state, which you could do by wrapping all api-calls in macros

grizzled laurel
#

thats pretty cool

void condor
#

once dumped we had simple tools that would translate these dumps into other tools like excel and images to see what was going on

grizzled laurel
#

these days its more about "hooking" into the graphics API itself

#

i wonder why the switch of methods was made?

#

probably ease of use?

void condor
#

in cases where like a texture was missing/garbage we replaced it with something that was easier to spot in memory to see if things where moved along, modes set correctly

void condor
#

e.g. back then you were able to write shader assembly by hand, these days that is no longer feasible

grizzled laurel
#

I see, I guess that makes sense

void condor
#

But learning material & books were great

grizzled laurel
#

and people actually wrote shader assembly by hand? wtf

#

surely that was only for the most hardcore games, no?

#

or was this like wayyyy back

void condor
#

nono

#

geforce3 was shader model 1, assembly shaders were the rage! Suddenly you could do your own lighting

grizzled laurel
#

ohhh true

#

i did see something about lighting in the opengl api docs

void condor
#

before that everything was "fixed pipeline", you had to use whatever was built into the chips

grizzled laurel
#

crazy to think that lighting used to be something that was part of the "fixed function" pipeline

#

oh lol

#

we said the same thing

void condor
#

🙂

grizzled laurel
#

so wait in the past there was NO programmable pipeline?

#

thats crazy wtf

#

i have it good then jeez

void condor
#

last time I wrote assembly shaders was ~2010 for flash's stage3d

#

flash was great, it was basically replaying the evolution of tech from 94-2003 in the browser. We first wrote/ported software-rasterers to AS3 and later Haxe for early flash 3d stuff and later hacked assembly shaders

void condor
#

completely forgot about gdebugger

grizzled laurel
#

That's pretty sick though

void condor
#

Coming back to this

#

compiling and init+shutdown work. now the extern grind starts 😛

void condor
#

dont like the verbosity of the c-wrapper but it takes care of a lot of stuff. I might hide that by grouping functions into the extern structs

molten sleet
#

i was about to question "why jolt" then i saw a performance comparison

green breach
#

I would assume the api is nicer than decades old libraries too

viscid crater
void condor
clear dome
#

Come on @void condor , don't you want to create a serverless 3D game engine

green breach
#

gotta run it on the edge

clear dome
#

Multithreaded, in the sense that each thread is running on its own microservice

void condor
#

I should write a threadless engine

#

and make it a multiprocess engine

neat smelt
#

all systems discrete processes talking by udp

#

no error correction

#

if the physics talks the UI may choose to listen

void condor
#

renderer is a docker-container and physics runs in aws lambda

neat smelt
#

for purity a web server must be implemented on gpu

#

to send draw calls via udp as well

clear dome
#

gamepad input via HTTP

#

And a redis instance to manage framebuffers in a sorted list

viscid crater
#

You're on fire 😂

#

(more seriously I as thinking maybe you were trying to add some tools to do multiplayer 😛 )

clear dome
#

Don't forget there must be some React somewhere in the stack

void condor
#

Does Yoga count? Afterall it's what is driving react-native

clear dome
green breach
clear dome
#

(But its author got that stupid idea of making some kind of competition for what should be regular paid work: https://github.com/nkzw-tech/athena-crisis/issues/10 . One year later, turns out nobody fell into that trap, good)

GitHub

I want Athena Crisis to have a much stronger AI, and I want the best AI of the genre to be built in the open to inspire every future turn-based strategy game. This is a competition to build a bette...

green breach
#

guessing there is a react version of this

#

ah yeah, the prettifier devs did the same thing

clear dome
#

I actually raised the concerns on Twitter one year ago of the above competition idea because I have been following that game development, but he just pretented not to really understand what I'm saying

green breach
#

if anything you should do a bounty system, but not a competition lol

clear dome
#

Yes, bounty system is alright, as long as it's very clear that somebody is taking the work and being paid for it

green breach
#

yeah, typically someone has to claim it first and work with the developer

clear dome
#

(and pointed him to MonoGame, which is managing that in a way more ethical way)

green breach
#

yeah, the dev is being pretty silly there

#

monogame looks like they had actual professionals come up with their system, not just honor system lol

clear dome
#

Yeah I've seen that. If people want to put React everywhere, even in their fridge, what can I do anyway

#

I think the reactive programming pattern can be very useful

grizzled laurel
#

I mean I guess that react could work for certain games

clear dome
#

But that idea of replacing anything with a JS+React stack is making me sick

grizzled laurel
#

When there can be a clear seperation between a frontend and backend in your game

#

FPS? no.

clear dome
#

Yeah, Athena Crisis using react is definitely relevant

grizzled laurel
#

story games or perhaps some kind of basic strategy game? maybe.

clear dome
#

Turn-based game with low-resource-heavy graphics

grizzled laurel
#

^^

clear dome
#

A Loreline frontend with React, for sure that would work

#

But then, if I were doing that, there is wisdom 😛

grizzled laurel
#

wisdom + loreline when?

clear dome
#

But the standalone app I have been mentioning in my thread will likely run with Wisdom

#

(and that's basically the app that will make Wisdom from experimental to production-ready)

#

everything is connected

#

😛

grizzled laurel
#

nicee!!

viscid crater
molten sleet
#

Plans...

ionic badger
#

that's a lot of work 😅

grizzled laurel
#

if i may give a small suggestion

#

i suggest not creating externs for every one of those

#

instead, why not create a few small C libraries that wraps what you've listed

#

a lib for fonts

#

a lib for audio (or just a single helper function for miniaudio vorbis support)

#

a lib for shader compilation

#

and then LLGL and SDL3 are things I'd actually consider to extern

#

12 externs -> 3 small libs with small extenrs + 2 fully features externs

green breach
#

Abstractions for a lot of those libs already exists. Daz was talking about raudio which should do a lot of what you want audio wise already. Just make bindings for that. It uses miniaudio behind the scenes.

#

It has ogg support

grizzled laurel
#

That is one way to do it

#

But I did have problems with raudio myself

#

I remember I used it last year, and I got some audio files being delayed by a stupid amount (20+ seconds)

#

Only RAudio weirdly enough and not miniaudio itself?

green breach
#

Never used it. I just directly use miniaudio, but because there are a million raylib games I feel like that would be a known issue?

grizzled laurel
#

Not sure what file format it was, but yeah

green breach
#

I guess try it and see lol

grizzled laurel
#

¯_(ツ)_/¯

molten sleet
molten sleet
molten sleet
#

I can handle it tho

clear dome
#

linc_soloud is an option too

molten sleet
green breach
#

I mean, if it works it works

#

I just prefer miniaudio because the developer of miniaudio says it is better than soloud

#

and while he is obviously biased, he has been super helpful in the past and I have had no issues with miniaudio

clear dome
green breach
#

I would be more concerned if the creator vanished or something, but he is still active on social media and stuff

clear dome
clear dome
green breach
#

of course, but if the choice was between two equally good libraries with one having an active maintainer

grizzled laurel
#

It's a question of risk analysis

#

A library with vanished author may still be usable

#

But if I run into problems or get a serious issue there will be no help

#

Yes someone else may have a fork but that isn't a given

clear dome
#

Soloud is a bit higher level than miniaudio. If you are using miniaudio backend with soloud, well, any issue miniaudio is facing (due to some OS breaking change for example), miniaudio is likely to get fixed, and thus you can get that fix in soloud as well. I'm not surprised soloud doesn't change much those days: it doesn't really have to

grizzled laurel
#

Hmmm not sure

#

Last time I checked I remember so loud just passing its own audio stream into minoaudio

#

*miniaudio

#

Might be wrong but that is what I remember

clear dome
#

yes, then that's what I mean, if somehow a new windows or mac update is causing new audio driver issues

grizzled laurel
#

If I'm correct then everything has to be fixed within soloud

clear dome
#

that's a miniaudio problem anyway

grizzled laurel
#

That is true

clear dome
#

soloud doesn't need a fix itself

#

(except updating miniaudio dependency)

grizzled laurel
#

Any soloud feature may have bugs

#

That isn't something miniaudio can fix

clear dome
#

Sure any code could have bugs

grizzled laurel
#

Of course

clear dome
#

But if the higher level API is working now

#

it's unlikely to suddenly stop working

grizzled laurel
#

Correct

clear dome
#

In that sense, I don't take it as a bad thing, if soloud doesn't have commit for a few months

#

Anyway, each situation can have its pros and cons. I'm just being tired of the "thing doesn't look maintained because no changes for X months/years, I won't use it then" mindset, because it can be very misleading. Of course sometimes that's true you should not use some library because full of problems/bugs etc, but it should not be decided just based on how many changes happened recently, which doesn't mean much in itself

#

(and I'm not saying soloud should be used over miniaudio. Miniaudio alone looks alright, it's just the rationale behind the decision that triggers me 😅)

#

</rant>

molten sleet
ionic badger
#

a few months with no commits doesn't imply that it isn't supported

green breach
#

i mean it depends on the library too lol

clear dome
# molten sleet I prefer to use supported libs

Again, this as a general rule doesn't make much sense imo. Some pieces of code are finite, solid and tested work and there is no point in looking for any kind of support or ongoing changes on them

#

Sometimes it's even a good thing that a piece of code won't be changed anytime soon. That means you can rely on it, build on top of it, without worrying that some breaking change is going to make everything fall apart

#

I know that's definitely not the trend at many places in software engineering, but what can I do

green breach
#

flxgradient hasn't been updated in two years, guess I should never use it

clear dome
#

Ultimately, the perfect software library for me is one that does exactly what it should do, and is complete in the sense that it doesn't need any further changes

green breach
#

tsk tsk

clear dome
#

Yeah you mad

#

xD

green breach
clear dome
#

Be careful, hsluv dependency of Ceramic haven't been changed for a while too

#

and you are using Ceramic

green breach
#

ceramic gets updated?

clear dome
#

Who knows, maybe at some point the maths of colors might change and break everything

clear dome
#

But I'm very cautious in trying to minimise shipping releases that have bugs

#

that's why the release cycles are quite long

green breach
#

i want more bugs

#

i've learned a lot more about hxcpp, so I should be able to make some contributions to linc_dialogs sometime soon btw

molten sleet
void condor
#

In general you wanna look at the ratio between reported issues and activity in the repo

void condor
void condor
#

I definitely wanna test and experiment more to see if LLMs can help with the extern grind

grizzled laurel
#

iirc you have nvg, bgfx and ddraw currently

#

what will the 4th one be?

void condor
#

you missed bimg

#

there are lots of optimized utilities in bx and bimg, also externing the included 3rd party libs can be super useful

grizzled laurel
#

yeah defo

molten sleet
grizzled laurel
#

not sure about that

#

but who knows

molten sleet
#

LLGL seems like my best option, outside of rolling my own

molten sleet
#

thank you LLGL for including a static build option

#

now i only need 1 dll/so, and its MINE

molten sleet
#

Triangle - LLGL edition

void condor
#

also known as the Rainbow Tortilla

grizzled laurel
#

lmfao

void condor
#

Nothing compares to starting your morning with a hot coffee and reading C code that uses goto to loop over a string

#

quite elegant

#

also saving a function call

#

I feel mastering goto is a very rare skill these days

grizzled laurel
#

this code is indeed quite clever

lethal talon
#

You can get the same logic with a while loop of retry conditional

#

Having implemented a goto state machine, I think I am still traumatized how much it breaks the concept of the control flow

ionic badger
#

what am i missing? I'm on a version of haxe that ships the TracyProfiler.hx file and i'm using the latest git hxcpp. I have also tried a clean build a few times but keep running into this linker error

#

it connects if i comment out cpp.vm.tracy.TracyProfiler.frameMark(); but that's not the point 😄

ionic badger
#

got it, turns out HXCPP_TELEMETRY is a necessary flag and not an optional one x)

void condor
viscid crater
void condor
#

ok, cortex is officially like 1 year old 😄

#

totally feels like 3 years

ionic badger
void condor
#

ah alright

void condor
#

So I was hunting what looked to be a bug in my keyboard handling.

#

turns out windows and localization is a CLUSTERFUCK:

- “Alt Gr” on german (and other) keyboards – “Alt Gr” is not the same as right-hand “Alt” on US keyboards, it essentially is a short-cut for “Control” and right-hand “Alt”.
#

That means I can paste shit by pressing RALT + V

#

even sending multiple events

void condor
#

testing more ui stuff

#

pretty much copy and pasta

void condor
#

yay, found a little fix that gained me 10 fps in the worst case text testcase on cppia-debug

clear dome
#

Les petits ruisseaux font les grandes rivières

void condor
#

Kleinvieh macht auch Mist!

grizzled laurel
#

Praten we nu allemaal onze eigen talen?

clear dome
#

Ah ah nice one

void condor
void condor
#

[totally made up shit!] 😄

grizzled laurel
#

[german or dutch when you have too much wine]

void condor
#

I guess today I tackle the textfield

#

at least single line ones

clear dome
void condor
#

I made my peace with it. found an angle to grind through

clear dome
#

Yeah I’m also quite happy with what I have in Ceramic, it’s modular and pretty clean, while staying totally cross platform (including unity backend) but that’s definitely not a trivial subject

green breach
#

I like that this is just the game engine development channel now lol

void condor
#

got vacations this week, decided to not sweat it. my milestone is to create all the missing pieces to have parity with my old mint ui

#

so textfield, scrollbars, menus, slider, dropdown & windowpanels

void condor
void condor
clear dome
#

If you mean actually moving selected text around, no

void condor
#

selecting + dragging the selection around

grizzled laurel
#

ahhh text input

#

brings me back

clear dome
grizzled laurel
#

it was ok IG, got it to a pretty decent state feature-wise but it was a mess and it didn't have support for internationalization (IME)
oh and multiline didnt work

void condor
clear dome
#

But now that you ask me, if I wanted to support that, the current foundation would allow it

#

Also I separated the text selection and the text edition logic. So you can make a text selectable even if not editable

ionic badger
#

There may be a point where I'll add stuff to the text field. Will have to see when I get to that point, but the base is pretty good

clear dome
#

I recall you mentioned the horizontal text scroll was missing

#

This should probably be a thing to add in SelectText, that takes advantage of Text’s quad clipping

void condor
#

wow, the ?? operator can be expensive

#

it generates a several tmp vars

molten sleet
#

thank you haxe

ionic badger
#

is there more on cpp?

void condor
#

f00 does it without local vars

#

though on cpp the second one resolves to a proper if else if else

#

shouldnt hurt the average person

#

in my case I refactored the style system to have proper computed styles and I have the loopkups & checks in the hotpath for rendering

#

fps got observably worse in cppia debug. removed all the ?? checks and gained some speed again

#

then I also had to inline some functions, now we are back to where we were before but with a lot more css stability and some more bugfixes & features

ionic badger
#

would temp vars really cause such a massive issue or is this more to do with the interplay with cppia?

void condor
#

to quote Hugh: "cppia is optimized for fast compile times, not runtime performance. you wouldnt put performance critical code into your script"

#

and here I am compiling almost the whole engine into the script 😄

ionic badger
#

ahah

void condor
#

to be fair, if it helps cppia a lot, then it might also have positive side-effects for the rest

ionic badger
#

probably helpful, but might be in the realm of premature optimisation no?

void condor
#

nah, you wouldnt believe how easy you can speed up some things

ionic badger
#

i don't know if i want to know 😄

void condor
#

overall less vars / code also gains you a win in debug

#

obviously

green breach
#

Tbf cppia does some JIT stuff right?

ionic badger
#

i did have a thought that this stuff was more useful for debug

void condor
#

im supporting 94 css directives now, these have to be looked up & queried for rendering, so that shit better be fast

ionic badger
#

ah yes, context

#

ui stuff is worth being built very solid

shut oracle
#

It seems like a flaw of the haxe compiler that using ?? would have a noticeable effect on runtime, rather than a flaw in the user code

#

It looks like the local vars are required for cases where the evaluation of the expression could have side effects, maybe it could be optimised for cases of direct variable access

molten sleet
#

Isnt ?? just syntax sugar for A == null ? B : A

ionic badger
#

it is

shut oracle
#

Yeah, but evaluating A twice may give unintended side effects, which is why it becomes var tmp = A; tmp == null ? B : tmp;

molten sleet
shut oracle
clear dome
#

Ah, maybe on cppia that's another story right

void condor
#

ok, I think I created a monster

#

I added css animations

void condor
#

I can see some potential for wonky animations in this 😄

tall veldt
#

OOOOOHHH!!!

#

This is the kind of thing I keep talking about that's missing from haxeui

void condor
#

lol, well this is actually just parts of the haxeui style + animation hacked into my ui. You can totally do the same css animations in haxeui

#

although not sure if layouts would resolve the same since im using flexbox for everything

ionic badger
tall veldt
#

WHAT

#

There's no way this was a thing a year ago

ionic badger
#

it has defo been there longer than a year 😂

tall veldt
#

I SWEAAAR Billy, I would ask about this and you would link me the animations tools section where the text field just shakey a little. I kept asking about css animations and no one knew what I meant XD

grizzled laurel
#

Srd has dementia

tall veldt
#

I might

#

At the very least this animations section demonstrating css animations is recent

ionic badger
#

granted, i've defo missed sub category items in the explorer list

tall veldt
#

NO THERES NO WAY I WOULD MISS THAT gatoScream

void condor
#

xD

grizzled laurel
#

I told you srd

#

You have dementia

#

But you may not remember

tall veldt
#

Okay, I found the moment in history: #voice-text message

grizzled laurel
#

I literally told you you have dementia

tall veldt
#

If I can PROVE, these animation pages weren't up on the site BEFORE June 2023, I am sane

#

Otherwise it's time to lock me up

grizzled laurel
#

New roundup topic

tall veldt
#

FR XD

grizzled laurel
ionic badger
tall veldt
#

Iirc I explained the css stuff specifically in the voice chat

grizzled laurel
tall veldt
#

I wonder if this was a recorded one lmao

clear dome
#

Ian enters the room

pearl slate
tall veldt
grizzled laurel
#

Well well srd

tall veldt
#

oh no

void condor
#

lol

grizzled laurel
ionic badger
#

i tried to give you an out with the whole "i missed the tiny little blue arrow"

#

😄

void condor
#

The only downside with css animations: The real cool animation all need transform support

pearl slate
#

yeah, i want to add transform support - arguably, for a ui system is better / more useful than the "normal" animations

void condor
#

guess im hackin that now

pearl slate
#

but i hate the syntax of css animations, like, really hate it

molten sleet
#

SomeRanDementia

grizzled laurel
#

You ain't getting away chief

void condor
molten sleet
#

What do y'all do for the final, exported asset format

Just copy the files over? Embed them? Compression?

grizzled laurel
#

You should choose whatever is applicable to you

molten sleet
#

dies
I'm looking FOR solutions

void condor
grizzled laurel
#

You can start with something simple like loading png files so you can do other stuff

clear dome
grizzled laurel
#

Pros: simple as shit, ocns: not ideal

molten sleet
#

Not loading files

I mean the final output format for the application assets

pearl slate
grizzled laurel
#

Kha has its whole image format stuff

#

You can also do something in between multiple solutions

#

But you should start with loading a basic png and displaying a textured quad

green breach
#

There are a million ways though.

grizzled laurel
#

Many ways to do things, each one has its own advantages and disadvantages

void condor
grizzled laurel
#

Then roll with it for now

#

Don't prematurely search for solutions (as you said) for problems that don't exist yet

molten sleet
#

Screw it

I'll just copy the assets over to export and come up with a better technique later

grizzled laurel
#

Sure

molten sleet
grizzled laurel
#

Eh

#

Regarding Web you could use emscripten's own virtual filesystem

void condor
grizzled laurel
#

Once you have something that can build games you could look into optimising everything including your resource pipeline (atleast in the case of your first engine)

#

You cannot plan out an entire engine when you've not built one before

molten sleet
#

I'm trying to think of as much as possible

ionic badger
#

This is why you build your "thing" first or at least some of it, because all of these questions are already answered

#

"whilst building project x, i kept tripping up on the way y framework was doing z - how would I change that?

clear dome
ionic badger
#

Otherwise, because you have no actual end goal, you become very mentally trapped because there's no focus

#

everything becomes a potential option

molten sleet
#

Fair point

I'll start working soon
I have some things I want to work on before starting work on Beacon

ionic badger
void condor
#

hmm, I think I will refactor the whole animation system a little. @pearl slate does haxeui support multiple animations in one animation directive?

#

asking before I try to analyze the parser

void condor
#

animation: rotate 1s, spin 3s;

#

animation: grow 0.2s linear 0s 1, highlightgriditem 0.2s linear 0s 1;

ionic badger
#

animation: sizedotitem 0.2s ease 0s 1 reverse backwards; is in the dot demo if that's what you mean

void condor
#

basically comma separated.

ionic badger
#

ahh

void condor
#

from the looks of it, I think the style does not support it, since you need a list of animations + options

#

that also means I need a mixer for multiple animations working the same properties

#

hmm

#

thinking about this starts to hurt 😄

pearl slate
#

ah, i dont think so

#

in fact, fairly sure "no"

#

i think it applies the style and then sees if there is an animation accociated with the final style, and then applies that one to the component

void condor
#

i might try something else first

void condor
#

ok, I got a prototype for transitions working

void condor
molten sleet
void condor
#

not really. it's just animated boxes 🙂

ionic badger
#

if haxeui used <div> instead of box's you could probably get pretty close to copy pasting html layouts into haxeui lol

void condor
#

cortex' ui doesnt really care about the tagname

#

it's only important for special controls and stylesheets

#

you can already copy stuff but it's kinda pointless since you also need to have the styles setup

ionic badger
#

yeah, layouts are rarely the hard thing to handle

#

it's the styling lol

#

what's your ui structure like, you have some amalgamation of various ui things

grizzled laurel
ionic badger
#

you're using some library to handle boxes, but you're also using haxeui and iirc you also have your own renderer/parser

#

is the structure

cortex ui -> 
  -> flowboxes
  -> haxeui
  -> custom thing
#

you've got some kind of abstraction setup going on?

void condor
#

it's not that fragmented

#

if you want a UI canvas, you need to add it as a component to an entity in the scene, then the other engine systems take over, resource management takes care of files/resources, supply input and render it where it wants to be.

ionic badger
void condor
#

might sound weird, but this way it becomes super flexible and arbitary game objects can have their own full UI

ionic badger
#

pretty cool

void condor
#

thanks 🙂

molten sleet
#

AAAAAAAAAAAAAAAAAAAAAAAAAAAA

void condor
molten sleet
void condor
#

If I would ever want to intentionally create a such a fucked up menu, im pretty sure I wouldnt know how

void condor
#

wow, 2am and I added matrix based transforms to the displaylist and it just works?!

void condor
#

now I gotta add oobbs and think of an solution for the scissor rects

#

shit got expensive. will have to optimize all this new math

void condor
#

ah ofc. the whole frustum culling is fucked in this case

#

ok, translation, scaling, skewing & rotation can be applied through the hierarchy. now I need to fix the hit detection and wire that shit up for transitions and animations

neat smelt
#

prepared in advance for when the UI designer shows some wraparound scifi UI concept and the art director hates the programmers

grizzled laurel
robust olive
clear dome
#

Totally off topic, but got a desk setup update xD (easily removable so can switch to one setup to the other)

void condor
#

[showcase] Finally added CSS transforms, transition and animation to cortex' UI system. 😄

void condor
#

could also be a platform for your cat to review code?

#

xD

clear dome
#

It's an adapter to create a standing desk yes

#

Honestly that's very effective

#

Cats didn't try to climb it (yet)

void condor
#

xD

#

HOLY FUCK

#

just realized something

void condor
#

i completely destroyed shit. will post later once shit is fixed

lethal talon
#

Have you heard of open usd? Universal scene descriptor?

void condor
#

Sure. what about it?

lethal talon
#

Would be nice to be able to have it be used by a 3d game engine in Haxe

molten sleet
#

Open United States Dollar
-# /j

clear dome
void condor
#

Also makes it easy for people to steal assets

lethal talon
#

I see

void condor
#

aaaand back in action

#

had to rework this whole css directive stuff around multi-domain values

#

im so happy that I can use HSS, its rule file gives a nice overview of the bullshit you have to account for

#

Also realized that i only need to compile the ui lib into cppia while working on it. once it is stable I can just include it in the host and we gain all the speed back while still being able to iterate UIs

#

a few stats, the whole engine

#

which includes the ui lib

ionic badger
#

bruh 0. 06s?!

void condor
#

2x2TB nmve ssds 😛

clear dome
#

What are your plans for shader language syntax?

void condor
#

got none. it's already solved

clear dome
#

Ok let me reformulate, how do you solve it xD

void condor
#

I use bgfx and have its shaderc transpiler

clear dome
#

Ah right

#

So in what language do you write the « source shader »?

void condor
#

hooked up to the resource manager it emits binaries for all platforms & versions

clear dome
#

That looks like glsl

void condor
#

it is based on glsl

void condor
green breach
#

Oh the include thing is nice. Def something I miss when using glsl

ionic badger
#

how do i shove haxeui and ceramic into a cppia host

void condor
ionic badger
#

gonna need to do some googling, I don't even know how to compile a host

void condor
#

also disable dce

green breach
#

Huh can you just use any hxcpp library with cppia

clear dome
# void condor why u asking?

Just curious, at some point I’d like Ceramic to auto-convert glsl shaders to equivalent for unity backend for instance

void condor
clear dome
ionic badger
#

we only need the externs if we want to use the apis right?

clear dome
#

If the externs are only used directly by the c++ host it’s fine

ionic badger
#

I'm in an isolated environment because I just want to focus on ui stuff and not get distracted by app things

#

so if I can speed up these compiles that would be super cool

clear dome
#

Realistically, I’ll probably try cppia again when haxe 5 get released

#

Or when some remaining fix related to cppia is merged to haxe 4. I don’t recall exactly but on openfl discord something was mentioned. Will have to find the link when I’m on a computer again m

void condor
#

happened to me a lot in the beginning, esp by force including all code + dce off

ionic badger
#

From what it sounds like, you have to precompile the host

#

but all guides online say you need a script file ahead of time

void condor
#

that's bc hxcpp includes a Host with all the std stuff

#

noone uses that

#

so just build your own exe that loads a cppia script and calls its main function

clear dome
#

I did the whole setup in the past, it worked, except some weird inheritance bug that stopped me for good

ionic badger
#

for ceramic specifically?

clear dome
#

Yes

ionic badger
#

It might work for me as i'm using a nightly haxe

pearl slate
ionic badger
# clear dome Yes

what did you put as the init for the script as ceramic doesn't have a static main? did you just do new Project()

#

if you have your setup available, i'd happily try and run it 😄

clear dome
#

Ceramic does have a static main, it’s just part of the backend

clear dome
ionic badger
#

is it just reference that static main

#

managed to get a simple example going, have an idea of the structure now

#

I don't know if what I did is correct, but I basically had the host check if the compiled script changed by checking the file stat

#

is there something more "built in" or is that "the way"?

molten sleet
#

I'm planning on writing my own shader cross compiler (GLSL->HLSL, SPIR-V, etc) for HaxeLumina

until then I can only test with LLGL/OpenGL

green breach
#

There are abstraction libraries like fswatch out there.

ionic badger
green breach
#

Look into this maybe

ionic badger
#

oh cool :o

void condor
#

I use that to monitor the script and the asset folder

#

I really have to add all the different easing types now, this wobbly shit in transitions gives the whole thing such a trolly character 😛

ionic badger
# void condor linc_filewatch
import cpp.cppia.Host;
import sys.FileSystem;

class Main {
    static var scriptPath:String = '../client/script.cppia';

    public static function main() {
        var lastModified = FileSystem.stat(scriptPath).mtime.getTime();

        Host.runFile(scriptPath);

        while (true) {
            Sys.sleep(0.5);

            var newModified = FileSystem.stat(scriptPath).mtime.getTime();
            if (newModified > lastModified) {
                Sys.println("Reloading script: " + scriptPath);
                lastModified = newModified;

                Host.runFile(scriptPath);
            }
        }
    }
}

``` I just did this for now
#

want to keep things simple because i have no idea how any of this works

void condor
#

makes sense

ionic badger
#

your ui is going to be so effectful 😆

#

how are you wobbling the cursor 😂

void condor
#

1-2 lines of css 😄

#
MDN Web Docs

CSS transitions provide a way to control animation speed when changing CSS properties. Instead of having property changes take effect immediately, you can cause the changes in a property to take place over a period of time. For example, if you change the color of an element from white to black, usually the change is instantaneous. With CSS trans...

void condor
clear dome
#

The way I did it was create a host that is an empty ceramic app with Project.hx that loads a cppia script which has a starting point very close to Project. You created a CPPIAProject.hx file next to Project.hx and that would be run

#

As long as the host includes all the ceramic types you need, you are good to go

#

There is a ceramic.AllApi module made to reference all those types

#

So you build the host without any dce and that’s it

ionic badger
clear dome
#

No the same ceramic.yml

#

Cppia is just a different target

#

(But some changes in clay backend to add that cppia target are currently disabled)

#

but as a workaround for your tests, you could try with a regular hxml yeah

ionic badger
#

Does the client need to reference the libraries as well? how does completion work in this case?

#

maybe i just forget about completion for now and see if i can just get ceramic compiled into a host

void condor
#

Add this to your host: -D dll-export=bin/export_classes.info
and this to your script: -D dll-import=bin/export_classes.info

#

this should be the next looming trap people step into when building cppia with shared code

ionic badger
#

it won't compile because it can't find the files

void condor
#

which files

ionic badger
#

the ceramic types

#

ceramic.Entity, ceramic.Visual etc

#

they exist in the file

void condor
#

make sure you -lib .. the same for both compiles

ionic badger
#

oh, we have to add libs to the client as well?

#

that will be the oversight

void condor
#

export_classes.info is just a blacklist for the compiler for types that should be imported but not compiled for everything that gets included via -lib & -cp

ionic badger
#

i'll try shrinking down the windows hxml that ceramic outputs

#

🤣

void condor
#

lol, you are dangerous

ionic badger
#

the ceramic .hxml's are a bit full so i'm going to keep messing with it a bit

#

hard to know what to include and what exclude

#

i'll remove all ceramic flags and just include cp and libs

#

but i doubt that'll be wise

#

host compiled fine, its just getting a client script to see if it works

grizzled laurel
#

dont bother

#

if your goal is glsl, don't

#

if your goal is hlsl, don't

#

if your goal is some kind of modified version of hlsl (quite common) then also don't

molten sleet
grizzled laurel
#

why not extern spirv-cross/glslang or use shaderc (like daz)

molten sleet
grizzled laurel
#

or write a helper class and extern 2 functions of that

grizzled laurel
# molten sleet Thats What im doing

Cobalt — 19:31
I'm planning on writing my own shader cross compiler (GLSL->HLSL, SPIR-V, etc) for HaxeLumina

until then I can only test with LLGL/OpenGL

molten sleet
grizzled laurel
#

that's not writing your own shader cross compiler then lol

#

don't scare me like that

molten sleet
#

Technically its cross compiling the sources...

grizzled laurel
#

"Writing my own shader cross compiler"

#

that is what you said

ionic badger
#

@clear domeCan't seem to figure out the right combo of client flags, do you happen to have any idea on what to put?

grizzled laurel
#

Your own

#

and to that I said (summed up): "That is not a good idea"

#

Ah whatever specifics don't matter, anyway.

molten sleet
#

English is a dumb language

#

Lets all speak in machine code

#

I'm not gonna manually write a parser for GLSL n stuff

grizzled laurel
#

good good

molten sleet
#

I'm just gonna combine two libraries

grizzled laurel
#

yes that is a good idea

#

writing your own is not a good idea.

molten sleet
#

This project is large enough as is, im not planning to fully go insane

#

May as well mine my own silicon at that point
Make my own CPU and GPU

grizzled laurel
#

I mean iirc Robert made alot of contributions to SPIRV-cross funnily enough

#

wait let me check

#

yeah he did

#

Fun fact that you might have not known yet lol

#

(creator of Kha)

molten sleet
#

Oh real

#

Wait the creator of LLGL also contributed

void condor
#

good news, im an idiot

#

turns out I disabled dirtyFlags and every control ran its transform calculation every frame... even when things didnt change. This is why I lost a lot perf in the text-demo. now we made an almost +30 fps jump in cppia

void condor
#

tweenxcore is such a useful little beast

ionic badger
#

i used that in the past

#

good lib 😄

void condor
#

very so

void condor
#

@pearl slate hey where is your head at concerning haxe.ui.styles? Planning any changes there? If you want i can give you access to my computed styles & transition / animation rework

ionic badger
#

@void condor how does things like statics translate from host to client

#

it seems like the host doesn't seem to run ceramic's scene setup, not sure what's going on

#
class MainScene extends Scene {

    var logo:Quad;

        public function new() {
            super();
            trace('here');
        }
    override function preload() {

        // Add any asset you want to load here
        trace('here');
        assets.add(Images.CERAMIC);

    }

    override function create() {
        trace('here');
    }
}

the preload() and create() don't get called, but the constructor does get called

void condor
ionic badger
#

Oh! I lied, it does seem to work, what isn't working I think is the asset isn't being loaded 🤔

void condor
#

altough by default it should show the line

#

btw, make sure you compile your script with -debug to get line numbers

ionic badger
#

i have line numbers

#

its cool, its working but kind of

#

the create function only seems to get called once

void condor
ionic badger
#

is there something I need to do to tell it to rebuild the whole class?

void condor
#

I have literally no idea how your setup looks like 😄

ionic badger
#

sorry, new thing to play with is pretty fun 😅

void condor
#

lemme draw up how it works in cortex

ionic badger
#
class Main extends Entity {
    public static function main() {
        app.scenes.main = new MainScene();
    }
}
``` My scripts entry point is this
#

for some reason I have to explicitly call create() which should be an automatic thing

#

the tween is running but the quad isn't changing

#

@clear dome It's possible, just might be some small tweaks 😄

#

just noticed the tween does run 😄

clear dome
#

If you need to call an overrided method explicitly when that should be called already, that definitely look like a cppia bug

ionic badger
#

It could be, I had to drop down to 4.3.6 to get this to compile

#

forgot about that

#

the host is still on nightly haxe though

clear dome
#

I think some fixes in haxe5 are needed based on what I’ve seen on openfl discord

ionic badger
#

I'll try upgrading to absolutely latest nightly, my project wont run on that but i think that's fine for now

clear dome
#

Maybe dazKind doesn’t have such issue because he builds the whole project to cppia mostly

ionic badger
#

oh jeez, it compiles on latest nightly haxe

#

but compile times are now 8.5s and create is still not called lol

#

on 4.3.6 they were 2.5

#

i'll stop playing, pretty cool that it's possible tho

#

i'll keep the project around if anyone wants it to play with

#

hm. relooking at the video, it looks like the old mainscene still exists

#

and it draws over the top of it

void condor
#

sry, got distracted by super secret, super exciting haxe stuff

ionic badger
#

lol dw

#

i'm happy to know that its possible to get cppia working

#

just might require a deeper dive

void condor
#

as in it resets to a neutral state before the script is executed

ionic badger
#

I can probably set that up locally as a test but I don't think it will solve why create isn't called

#

i don't understand why it isn't, preload gets called

#

must be some logic in ceramic that isn't compatible with cppia

#

seems weird tho

#

ah well, fun for another day x)

void condor
#

in simple terms

#

omitted the init / shutdown, that should clear any state you dont want to survive

#

basically using static initialization as a registry mechanism instead of any main function / macro / type bullshit

ionic badger
#

I think it might be something to do with ceramic's build macros

#

some init things aren't getting applied to the scenes that I have in the client

#

i wonder if it would work if i add the main scene to the host

#

Yeah, everything works if the scene is on the host

#

this might actually be fine for my current use case though, because i'm not actually using scenes at all 😂

#

I just want to be able to do haxeui dev a bit faster

#

daz have any idea why compile times are 4x higher on latest nightly haxe?

clear dome
#

You are the emissary doing the exploration of ceramic+cppia, good luck xD

void condor
ionic badger
ionic badger
ionic badger
#

haxeui doesn't work, invalid cast

#

maybe it's a setup issue as well, daz can compile haxeui via cppia🤔

#

seems like cppia doesn't like something with haxeui grids

#

it takes 14seconds to rebuild and previous components remain... but hey... its working

#

14s rebuild isn't a nightly issue, occurs on 4.3.6 as well for some reason. No idea what randomly started to cause that

void condor
#

macros?

ionic badger
#

2hrs ago it was 2.5seconds rebuild time

#

same setup

grizzled laurel
#

Tf

ionic badger
#

i assumed it was change of haxe version because that's when it occured but i just downgraded to 4.3 and the issue remains

void condor
#

ò.Ó

grizzled laurel
#

Cache pollution?

#

Does cppia have a cache?

#

It doesnt right??

void condor
#

nah

ionic badger
#

lol

grizzled laurel
#

That makes it even weirder honestly

ionic badger
#

manually typing haxe client.hxml

#

4secs recompile

void condor
#

vscode sucks

ionic badger
#

using vscode 14s

#

might be using ceramic's haxe which is an older nightly

#

but, this path isn't worth going further

#

4s recompile time is longer than my normal rebuild time

void condor
#

hmmm yoga is not re-flowing all subtrees correctly. I wonder what im doing wrong

void condor
#

finally

#

gotta be careful, browsers do more shit to resolve flex-basis & constraints

#

now my flex grid properly scales and adjust ❤️

molten sleet
#

Layouts? I just .x .y .w .h my way through life

crystal grove
#

I think about the "<v" layout engine once per day

void condor
#

gonna test the most expensive shit I can think of in the current setup

#

rofl

void condor
#

[showcase] Here's a random fact about cortex' ui system: text blocks can be an illusion, every word a full-blown control/element with events, css styles, transitions & animations and mixed into the flexbox layout flow with other elements 🙈

#

ok, this is awesome

#

now I really gotta wire up the transfoms

#

coz they will enable completely next level shit

scenic fjord
#

that's so fucking cool

robust olive
#

no need to write more logic to separate text and control it individually monkcheese

ionic badger
#

how are you positioning the inner interactive elements here

#
<label text="hey wassup" />
``` is the way haxeui handles things, are you stringing together multiple label components?
void condor
#

Every word becomes a "label". The xml macro works sorta like html. it will split things up and generate the controls.

<div class="foo">Lorem ipsum dolor sit amet,<div class="logo_ai"/> consectetur adipiscing...</div>
#

this is the default with the macro. In the end It's about flexibility. you have a couple of choices. Like all controls can also have a text property you can use (<div text='Lorem ipsum dolor...'>) and have a single control with a lot of text. The whole thing would layout as a single block(rectangle) and you can NOT mix other controls into its text flow

void condor
#

math kicks so much ass

void condor
#

since I moved to a matrix transfom(rotate, scale, skew, translate) per node I can no longer use simple axis-aligned bounding boxes for frustum culling and input. Had to math a little more and now it's all working pixel perfect without costing too much performance ❤️

crystal grove
#

Almost fainted thinking about doing this in openfl

void condor
crystal grove
#

The relayout every time you hover… I think individual word shaping is cached now so it wouldn’t hit perf as badly

void condor
#

ah yes, my approach to text shaping/layout is very different. I just support basic shaping for now. No harfbuzz magic 😄

ionic badger
#

what do your divs become? just haxeui box's?

grizzled laurel
#

that's sick

#

I guess it does make sense considering your goal is 3D UI

ionic badger
#

oh, those must become that flexbox lib you're talking about right?

void condor
void condor
#

the transforms supported by cortex.ui.core.Control is just a 2x3 Matrix that can be used to fake 3D. a real 3d object would require 3x4 minimum, so lotsa more ops

grizzled laurel
#

i see

#

but the input can handle any 2d transformation?

#

size, pos, skew, rotation, etc?

void condor
grizzled laurel
#

yeah i see

#

nice

ionic badger
#

I noticed the icons change colour when you hover over them, how are you doing that?

#

do you just have highlight doubles of each icon or are you changing the icon colour itself?

#

i would like to support that in the ceramic backend 👀

void condor
#

the icon list at the top? That's are actually text as well. I just change the color attribute on :hover in css.

ionic badger
#

ahhh!!! text icons, clever! never even thought about that!

#

what font is that then? 😄

void condor
#

lemme check

ionic badger
#

do you just google icon font or something like that?

void condor
ionic badger
#

damn that's such a cool idea 😄

green breach
#

what do you think emojis are

ionic badger
#

never thought about it

#

just thought they were inline pictures

#

or at least that's what i think i thought by thinking about it now

void condor
clear dome
ionic badger
#

ahh its in the elements plugin!

#

i've done like 0 design stuff in years

green breach
#

it is a pretty old icon library

ionic badger
#

it's brand new to me haxepog

green breach
#

i like lucide, but it doesn't have filled icons

ionic badger
#

lucide is nice, but sometimes i want icons to change colour you know

green breach
#

you can do that with any icon library?

ionic badger
#

at runtime?

green breach
#

sure?

ionic badger
#

explain

#

how do i take an image from lucide and change its colour at runtime

green breach
#

same way as entypo (turn it into a font) or you can just tint a white version of the icon

ionic badger
#

lucide is a font???

#

i've been downloading images from there 🤣

#

where's the "download as font" button

green breach
#

i think it has one

#

in the releases here

ionic badger
#

nice!

green breach
#

not sure of how good an idea it is though, you would just be embedding every single icon

ionic badger
#

can consider that if I ever run into performance issues 😂

#

i'd be surprised if a font took out ceramic tho

green breach
#

no, but it would be a very big bitmap

ionic badger
#

ahhh i see

#

ah well, these are technical details i would evaluate at the time of implementation

#

i'm just happy to learn of the new thing

pearl slate
green breach
#

anyways pretty sure with ceramic you can just set the color of an image and it'll tint it

ionic badger
#

i don't know what the technical details of tinting is to implement it the backend

ionic badger
#

this is how bg-color translates 😄

#

need to figure out what tint maps to in backend land

pearl slate
green breach
void condor
#

yeah fonts come with a few bonus things compared to normal images+filter

pearl slate
#

font size i would imagine?

void condor
#

weight, kerning etc. Im gonna add sdf support at some point then outlines etc

pearl slate
ionic badger
#

I was literally thinking about 30 mins ago... hmm, i'm going to want to try and restyle that checkbox

void condor
# ionic badger bruh so easy 😄

Here is a test string for ya: ‖ ℹ ← ↑ → ↓ ↰ ↳ ⇆ ∞ ⊕ ⊖ ⊞ ⊟ ⌂ ⌨ ⌫ ⏩ ⏪ ⏭ ⏮ ⏳ ⏴ ⏵ ⏶ ⏷ ■ ▴ ▶ ▸ ▾ ◂ ● ◑ ◴ ☁ ★ ☆ ☕ ☰ ☽ ♡ ♥ ♪ ♫ ⚏ ⚑ ⚒ ⚙ ⚠ ⚡ ⛈ ✇ ✈ ✉ ✎ ✒ ✓ ✖ ❌ ❎ ❓ ❞ ➕ ➖ ➡ ➢ ➦ ⟲ ⟳ ⬅ ⬆ ⬇                                                                        

ionic badger
#

what am i supposed to do with this 😂

void condor
#

copy it as string into your sample

ionic badger
#

i hope the roboto font will even render it

void condor
#

entypo will

ionic badger
#

ah entyo isn't available out of the box

#

its in a plugin that i don't use

#

will need to grab it

void condor
#

just add the font to your haxeui theme?

ionic badger
#

it's a bit of effort

void condor
#

assuming your backend loads the theme fonts/resources

ionic badger
#

gotta download, then convert the font to bitmap, then gotta preload

void condor
#

bitmap?!

ionic badger
#

ceramic doesn't read ttfs

#

its possible to use for sure

clear dome
#

Ceramic uses msdf bitmap fonts

void condor
#

ah I see

clear dome
#

That being said it could be a thing to add runtime ttf/otf support, but that’s not a priority

#

Basically if I were doing that it would create a bitmap font on the fly from ttf. Kha does that I believe

green breach
#

would be sick

clear dome
#

(At runtime)

#

But latest Ceramic already allows to add a ttf or otf font in assets, and it is converted to msdf at build time (did it for my ld57)

crystal grove
#

I feel like you could use bmfont on the command line

ionic badger
#

i don't have it installed and ceramic ships with a way to do it out of the box

#

just being a bit lazy x)

#

oh, i just downloaded entypo and its all svgs

clear dome
ionic badger
#

ooff, what's the pros?

#

main one being, can immediatly use ttfs?

molten sleet
#

so my plan for lumin-

#

(generate MTSDF atlases at build-time for builtin + asset fonts, but include support or generating the atlases at runtime too)

void condor
#

imo, both has to be possible. right now cortex uses ttf + a dynamic atlas via nanovg & fontstash. once I need more quality stuff I add my old msdf tool in the resourcepipeline and tweak nanovg. maybe replace it with https://github.com/styluslabs/nanovgXC. we'll see. we accept shitty font visuals for now

ionic badger
#

you say shit, but the videos seem to all show some quite good looking text

#

certainly usable any how

green breach
#

you are comparing it to haxeui-ceramic text tho

#

(sorry)

ionic badger
#

it aint too bad these days

#

like, this all seems quite nice to me

green breach
#

oh you been styling your finance thing?

ionic badger
#

trying to***

#

😄

#

thoughts on the colours? they seem a bit off to me

void condor
#

a bit too constrasty

green breach
#

there are a lot of colors going on

#

i gotta finish something up, but after that I'll make a few mock ups

clear dome
#

Using ttf at runtime wouldn’t give a very different visual output. At the end, you are rasterizing font glyphs to bitmap font glyphs and displaying them

#

ttf runtime support can still be useful, for example when you need to support CJK characters, or if you want to use system fonts

green breach
#

nah i have no beef with ceramic's font rendering, just messing with !b

clear dome
#

In terms of workflow, being able to just put a ttf/otf font in assets folder is already a nice addition that doesn’t add any runtime requirements

#

Anyway, if I add runtime font rasterization, it will be optional, from a ceramic plugin

#

I am also thinking about supporting (optional) meta files next to asset files. Tried to avoid them, but getting more and more use cases where it could be useful, like when putting a ttf font and wanting to configure the rasterization settings, which list of characters to include etc…

#

(For now just thinking, nothing planned short term, but might be added in a future version of Ceramic)

void condor
#

current version of the concept in cortex

ionic badger
#

cool idea, especially with icon fonts being a thing

void condor
#

the good thing is that you can also include target specific override settings

#

downside: you need some cli tools or an editor to manage these files easily

clear dome
#

On ceramic, obviously, that will be yaml heh

ionic badger
#

lol

green breach
#

aw man i was hoping for sqlite

void condor
green breach
#

isnt that just xml lol

clear dome
green breach
#

o

clear dome
#

Which is a shame, because you get the downsides of both JSON and XML and no upside

void condor
#

xD

clear dome
#

The other interrogation I have is what file extension to use. Just .meta files like in Unity? Maybe that's the most straightforward idk

green breach
#

.meta.yml

clear dome
#

Though about this

#

but meh

green breach
#

.ttf.yml lol

clear dome
#

nah

ionic badger
#

.ini

void condor
#

I just suffix .cxr 😛

green breach
#

yeah use the .ini extension but have yaml inside it

ionic badger
#

😄

clear dome
ionic badger
#

cortex

clear dome
#

Ah lol

void condor
#

shit I made up, cortex-resource

clear dome
#

.cer

#

(but that's already a "certificate" extension, not "ceramic resource")

#

For now best candidate is just .meta, but as long as it's not done, it's not definitive

green breach
#

there is a really funny discord message (that I can't find right now) from the founder of Hashicorp (and creator of HCL) talking about meeting the designer of yaml

molten sleet
scenic fjord
#

i recognized that example instantly lol

void condor
#

What a week

#

I love my job, but holy shit is it time consuming

clear dome
#

@void condor #787070137756418079 message still inheritance issues with haxe 4.3.7 and cppia apparently 😦

ionic badger
clear dome
ionic badger
#

cppia + ceramic works, it has some issues with ceramic but they're macro setup issues

#

i think if it can work with ceramic its pretty solid - no?

clear dome
ionic badger
clear dome
ionic badger
#

Fair I guess, I gave up on investigating it because haxeui + ceramic on cppia took longer to compile than electron and a new project

clear dome
#

I’m pretty sure daz doesn’t hit that issue because he builds everything with cppia so nothing in cppia part has to inherit from host part

ionic badger
#

oh, that makes sense

#

do you have a repro for the issue at all? I could test it with my cppia setup

void condor
clear dome
ionic badger
#

does the openfl one you linked have any simple repro?

clear dome
void condor
#

again, this cppia stuff is no rocketscience when it comes down to how it works

molten sleet
#

Cortex/HL when trolley

ionic badger
#

i don't think it'll happen

void condor
ionic badger
#

cppia is pretty op for daz 😂

void condor
#

I dont get why people find HL interesting. It's just an improved neko that reinvents a lot of shit like externs and bindings, needs its own GC, barely works in C builds and has no host + script interop.

#

Like on paper hxcpp + cppia is better in every way for even more years

ionic badger
#

in the outer haxe world hl is the quick compile target

#

so it just gets natural attention

#

cppia is a buried thing that nobody knows about or has planned to work with

void condor
#

nah, it's bc it's visible through shiro

#

there is a financial backing for it

molten sleet
#

HL is more supported in the haxe foundation

Tier 3 vs Tier 2 (hxcpp)

ionic badger
#

all that means is that the foundation will invest time into it themself

#

it doesn't necessarily mean that hl is better or worse

void condor
#

does anything HL even work on mobile?

ionic badger
#

its possible but i believe its buggy/untested

#

i remember asking about this a long while ago in the heaps channel and someone mentioned that deadcells had a hl mobile version but it was so buggy, it was pulled, they hired a 3rd party to port it to android/mobile and released that instead

void condor
#

well, anything that shiro doesnt release for is buggy and untested

ionic badger
#

but that's a secondary source, no idea on how true that is

void condor
#

noone in their right mind will pick HL to release something commercial except for shiro. sad fact

#

on the other side: hxcpp has made millionaires

ionic badger
#

they don't need to target anything but windows because they've got massive reach

#

hl can compile to linux but they ship the windows executable and have it run through wine instead

void condor
#

that's what I call a deadend. I wonder if you can easily reverse engineer the source code from bytecode

ionic badger
#

however they do have someone working on hl now and i think they're pretty interested in better cross platform support

void condor
#

"they" are. but noone else really. And if I have to choose I'd rather stick to community supported tech (hxcpp) than company supported tech (HL)

#

any PR you send to HL will get eyed as a risk or low prio for Shiro internals, so it will linger around till they find it useful

clear dome
#

I’d ask for help to investigate it for sure

void condor
clear dome
#

But I’ll likely wait for more positive feeback of devs trying it before doing that myself

clear dome
void condor
#

with hx5 stuff should finally be in the right place

grizzled laurel
#

I can't wait until hx5 release honestly

#

an evening porting everything over sounds lovely to me

#

and I don't mean that sarcastically

ionic badger
#

what exactly is it about your setup that makes it so quick to compile daz? is it mostly a lack of macros in the host?

void condor
#

host or script

molten sleet
ionic badger
#

cppia reloads/scripts

molten sleet
ionic badger
#

because windows and wine is tested more than hl and linux

void condor
ionic badger
#

it's a sensible approach for a low playerbase platform

clear dome
#

Meanwhile I’m sticking to web target for reasonably fast iterations

void condor
#

macros and file access plays a big role. esp under windows make sure you to keep an eye on Defender, most exe's and file accesses are actually slowed down by the antivirus

molten sleet
#

I was gonna target HL primarily for haxelumina
I learned how to make extensions for it

ionic badger
grizzled laurel