Random Chitchat 2012-2016
#1
@LogicParrot edit: This thread was previously known as "What we're doing". Please see this for further info. Original post below.

It seems every other thread on this forum derails into "what are you doing now, devs?" thread. So I thought I'll make one thread with exactly this content - we'll post here what we're currently working on, if working on something at all Smile

Please don't de-rail other threads now. Ask here.
Dear diary. I've just finished fast NBT parser and writer. The results are astonishing, Anvil is now on par with Compact storage schema, speed-wise.
( https://forum.cuberite.org/showthread.php?tid=433 )

I'll continue working on the composable_generator branch. The generator is finished enough, but now lighting needs to be rewritten to take full advantage of the generator. This will probably take some time, as lighting is both difficult to do and has grown too much into other code, so cutting out the current one and replacing it will be lots of work.
( https://forum.cuberite.org/showthread.php?tid=409 )
Thanks given by: skydoescreepers , PCPlayerLV
#2
Working on a sound engine for school. Have to load WAV files and play them using the Windows' waveOut interface.

Engine should be capable of:
  • Mixing sounds realtime (means play a sound over an already playing sound)
  • Up- and downsampling sounds
  • Echo effect
  • 3D sound (as simple as changing volume of left/right channels)
  • Have an interface to test the 3D sound

All that's left is the 3D sound parts

I like this thread Smile
Thanks given by:
#3
Wow, you should have said so, I have something that you could have based your code on, or at least taken an inspiration. The other day I wrote a simple and fast synthesizer (because all of the synthesizers I had at that time were laggy, playing a MIDI keyboard with a 1000ms lag in sound response is totally weird Wink
It loads wav files, uses waveOut, minimizes lag for newly added sounds and does sampling.
Oh, and I see it's still online at my homepage Wink Go have a look what my early code looked likeTongue
http://xoft.cz/prog/xoftsynth.html
Well, I thought this thread would still be MCS-related, but what the heck Smile
Thanks given by:
#4
(05-08-2012, 10:32 PM)xoft Wrote: Wow, you should have said so, I have something that you could have based your code on, or at least taken an inspiration. The other day I wrote a simple and fast synthesizer (because all of the synthesizers I had at that time were laggy, playing a MIDI keyboard with a 1000ms lag in sound response is totally weird Wink
It loads wav files, uses waveOut, minimizes lag for newly added sounds and does sampling.
Oh, and I see it's still online at my homepage Wink Go have a look what my early code looked likeTongue
http://xoft.cz/prog/xoftsynth.html
Cool. It wasn't really hard to do though. The waveOut interface gave the most trouble, but there are tutorials on the web Smile

(05-08-2012, 10:32 PM)xoft Wrote: Well, I thought this thread would still be MCS-related, but what the heck Smile
MuahahaBig Grin
Thanks given by:
#5
[Image: 34ec64o.png]
That's what I've been working on :O

http://dl.dropbox.com/u/27784874/HA4Final.rar
Thanks given by: PCPlayerLV
#6
Funny thing happened to me now. I'm writing a lighting progress for the cWorld::InitializeSpawn(), quite the same as cWorldLoadProgress, and it just happenned that the lighting had finished before the progress thread actually had a chance to start executing. So the cIsThread destructor waits for the thread to even begin, but the thread object is already half-destructed then, meaning that the Execute() method is already gone. The result: pure virtual function call. So finally I know one of the ways how that particular error can be reached.
Thanks given by: PCPlayerLV
#7
The first version of the new lighting is in SVN. It's working basically - the lighting thread lights chunks that are queued, and the lighting operation produces (hopefully) correct lighting. The calculation is surprisingly fast, it's almost as if something's missing - 400 chunks lighted in under 2 seconds? But the output seems correct...

Now it needs to be properly "plugged in": chunks need to be lighted before being sent to a client, chunks' light needs to be saved to file (or not saved if it's invalid). Block changes need to invalidate lighting, and a function for getting a block-light, sky-light and actual-light of a block needs to be written. This function may fail, so its callers must be made aware of that fact. Just lots of tiny changes, but finding them will all be difficult.

So, FakeTruth, how do you like my new cLightingThread? Smile

Also, I know the correct word is "lit", but I'm intentionally using "lighted" - the source is kinda easier to understand then. Also, searching for Light will yield all places where Lighted is used.
Thanks given by:
#8
Connecting the Lighting seems to be more difficult than I first thought. When a neighbor is missing for lighting calculation, I need to re-queue the chunk for later re-lighting when the neighbor is ready. So I need notifications of chunks getting ready. And I need another queue in the lighting thread, so that it doesn't spend all its time just checking neighbors over and over again.

And it seems the new lighting engine somehow broke the logic behind sending chunks to clients, now the clients see way too many missing chunks - as many as 5 % of the chunks don't get sent! Just plain weird:
Code:
[0adc|22:47:03] Streaming chunks centered on [2, 23], view distance 5
[0adc|22:47:03] cChunk: Entity #1 (cPlayer) at [2, 0, 23] spawning for player "Player"
[12ec|22:47:03] Refusing to send chunk [2, 23] - no longer wanted by client "Player".

On a side note, I've been trying to write an ActiveX control host using plain C++ and nothing else (no ATL, no MFC...). With the state of MS docs, it's a major pain in the ___ .
Finally turned out my biggest problem was not returning a valid window handle in the IOleClientSite callback Smile
Thanks given by: PCPlayerLV
#9
I got tired of porting changes back and forth between the two branches. Having four working copies checked out and doing magic on all of them isn't my idea of funTongue
I'm making *all* changes in the composable_generator branch and hope that it will *replace* the trunk entirely, when finished.
Thanks given by:
#10
With the lighting finished up to testing, I'm doing a little side work for a friend, but still minecraft-related: a block replacer. He has a server world built with mods and now he wants to update, but the mods' BlockID has changed between versions. So this tool will help him convert the world, replacing blockIDs and possibly even blockMetas. The basic version is working, now i'm adding metas into the picture. Also later I'll be adding a feature to convert all stored items (in chests, furnaces, minecart chests etc., as well as in players' inventory) based on itemID and itemDamage values.
Thanks given by: PCPlayerLV




Users browsing this thread: 3 Guest(s)