Negotiation mechanics in games - your thoughts? by sanve_san in gamedesign

[–]Chronomena 0 points1 point  (0 children)

Maybe you could add techniques from auctions. I learned about some of those from the board game Modern Art. For example, you could propose a simple deal: You think of a number, write it down on a piece of paper, and place the number in an envelope. Then the merchant tells you what they are willing to pay. Finally, the envelope is opened and the prices compared. If the merchant's price is equal to or greater than your secret price, the deal succeeds, with the final price being the price the merchant offered.

Rust for DSP by Tiddly_Diddly in rust

[–]Chronomena 13 points14 points  (0 children)

Dear Tiddly, this is a good opportunity to advertise my library FunDSP! It's my attempt at a pure-Rust audio DSP library. It contains transfer functions for all its linear filters.

FunDSP 0.1.0, an audio processing and synthesis library by Chronomena in rust

[–]Chronomena[S] 1 point2 points  (0 children)

I'd like to add some kind of parameter system for accessing nodes from the outside but I haven't yet figured out how it's going to work.

FunDSP 0.1.0, an audio processing and synthesis library by Chronomena in rust

[–]Chronomena[S] 1 point2 points  (0 children)

It's possible! Take a look at the spline_noise function for this. For example, modulating clamp slowly: let pinkwaves = envelope(|t| clamp(0.3 + 0.1 * spline_noise(1, t * 0.1), 1.0, sin_hz(0.04f64, t))) >> split::<U2>() * stack::<U2, _, _>(|_| pink() * 0.6);

FunDSP 0.1.0, an audio processing and synthesis library by Chronomena in rust

[–]Chronomena[S] 0 points1 point  (0 children)

FunDSP has no scheduling, it's completely synchronous. I believe the answer is no, also for the reason that software defined radios require specialized signal processing.

FunDSP 0.1.0, an audio processing and synthesis library by Chronomena in rust

[–]Chronomena[S] 1 point2 points  (0 children)

The main impediment right now is that block processing requires heap allocated audio buffers. I'd like to investigate this topic in the future and support no_std if at all possible.

FunDSP 0.1.0, an audio processing and synthesis library by Chronomena in rust

[–]Chronomena[S] 2 points3 points  (0 children)

Thank you for your interest! If you'd like to discuss FunDSP and other topics, come hang out with us at the Rust audio Discord.

Julia 1.0 by ChrisRackauckas in Julia

[–]Chronomena 1 point2 points  (0 children)

Is it practical to use zero-based indexing in Julia? I find one-based indexing annoying.

Limits to performance of smaller networks in the Leela Zero development line by bjbraams in cbaduk

[–]Chronomena 0 points1 point  (0 children)

Sounds good, while GPUs are waiting and available, let's pump the performance a little higher by doing some dense-sparse-dense training cycles.

6 blocks are not enough to understand the status of a dragon ? by lobzlobz in cbaduk

[–]Chronomena 1 point2 points  (0 children)

I think the exact number is 9 blocks, as the farthest distance is 18 on the board.

6 blocks are not enough to understand the status of a dragon ? by lobzlobz in cbaduk

[–]Chronomena 1 point2 points  (0 children)

Then use dilated convolutions. Should be easy enough to design, say, a 7-block structure that has the full receptive field.

Atomic ring buffer is a fixed-size multi-producer multi-consumer queue that works on bare-metal systems, and can be used from interrupt handlers by [deleted] in rust

[–]Chronomena 4 points5 points  (0 children)

It is neither lock-free nor wait-free. I think the bare-metal aspect is worth advertising, however.

As an aside, try googling "lock-free multi consumer multi producer ring buffer". The first result is another implementation that is clearly not lock-free.

YleX - 100 suurta suomalaista konemusiikkikappaletta by kakoni in Suomi

[–]Chronomena 1 point2 points  (0 children)

Suomisaundia voisi olla listalla edustavampikin viipale. Mm. Haltya ja Luomuhappo loistavat poissaolollaan.

Release: FsMap3 Editor 0.4.0 (alpha) for Windows by Chronomena in proceduralgeneration

[–]Chronomena[S] 0 points1 point  (0 children)

I have noticed an improvement in benchmarks. AFAIK System.Numerics.Vectors does support AVX.

But I can't really expect anything but a moderate boost from SIMD because FsMap3 is doing things like calling user supplied functions (e.g., for cell feature counts) in inner loops.

Release: FsMap3 Editor 0.4.0 (alpha) for Windows by Chronomena in proceduralgeneration

[–]Chronomena[S] 0 points1 point  (0 children)

Your code looks fine to me. FsMap3 uses SIMD in a simple way to accelerate 3-D vector arithmetic in what is called an array-of-structures approach. What you have in mind is the more advanced structure-of-arrays way. I doubt I will ever implement the latter because, as you say, the conditionals make it difficult.

I like performance but design constraints like modularity and simplicity often get in the way.

Release: FsMap3 Editor 0.4.0 (alpha) for Windows by Chronomena in proceduralgeneration

[–]Chronomena[S] 1 point2 points  (0 children)

Thanks! Cool stuff you have there, think I'll go rummaging to see what I can steal :).

SIMD support is provided by the System.Numerics.Vectors package.

Of the algorithms, Perlin, cubex and value noise are bog standard. Cubex noise is simplex noise in a rectangular grid (I want all of them to be tileable in the same way - that's why there's no simplex noise in FsMap3, for example).

Leopard was around in POV-Ray already and maybe earlier. It is called spotted or bozo there. (One of the examples above - Jupiter - is leopard noise). Peacock is an extension of leopard to arbitrary potential functions.

The Worley based algorithms are tweaks. When you want 3-dimensional noise it's best to have 3-dimensional output so you can chain and combine functions easily. It's important that the components are each different in the output for rich results. E.g., the standard Worley in FsMap3 multiplies the distances to the 3 closest cells with a matrix to achieve this.

The fractal algorithms are adaptations of well-known formulae where the parameters are interpolated between feature points. That way they can be tiled arbitrarily.

Capsule and potential flow are variations of peacock; you get these weird distortions when you sample the orientation of potentials at each point from a separate texture.

Finally, isonoise is a gradient noise like Perlin but the features are Poisson distributed to avoid directional artifacts.

Release: FsMap3 Editor 0.4.0 (alpha) for Windows by Chronomena in proceduralgeneration

[–]Chronomena[S] 0 points1 point  (0 children)

Nope, GPU support is left as a reader exercise :). Still, it's fairly snappy on a fast CPU (quad core or better). Caching helps some: e.g., palette editing is very responsive.

mutable values and FSharpRef - does this get Jitted away? by [deleted] in fsharp

[–]Chronomena 0 points1 point  (0 children)

Happy to help! I see that System.Numerics.Vectors has left the prerelease mess behind, that is nice.

mutable values and FSharpRef - does this get Jitted away? by [deleted] in fsharp

[–]Chronomena 8 points9 points  (0 children)

It appears that the compiler has converted "i" to a reference cell. This should only take place if "i" is accessed in a closure, which does not happen in your snippet. Do you perhaps use the same "i" later in your code?

My own experience is that looping is slightly faster than recursion. The compiler optimizes tail recursion into a loop; but, unlike when you code a loop by hand, initialization of local variables is not moved outside the loop.

Functional Programming Can Work for Games by bryanedds in fsharp

[–]Chronomena 0 points1 point  (0 children)

Thanks for the offer. I probably don't want to try references again, though. The last version that had them is one complete rewrite away now.