Just met Tommy Refenes at pax. Got to apologize for the whole... Fiasco
[QUOTE=Ziks;45837826]Layla's working on voice chat as the main way players can communicate to each other as they play, but we'll think about gesture animations and such too.[/QUOTE]
Please let players start out with preset gestures, but add an editor for gestures so people can make their own, if that makes sense.
Content! I bought a PiTFT screen for my Raspberry Pi and am currently learning how to use framebuffers directly.
[img]http://novaember.com/s/744120238.jpg[/img]
[QUOTE=Darkwater124;45838756]Please let players start out with preset gestures, but add an editor for gestures so people can make their own, if that makes sense.[/QUOTE]
One guess what the first user-created gesture will be.
Ok so... you know how I was complaining about the quality of Intel's OpenCL implementation right? And the compiler was so shit that I made it segfault with my code?
[IMG]https://dl.dropboxusercontent.com/u/9317774/Whathaveicreated.PNG[/IMG]
I also managed to bsod my PC (its been a while!). So, this is pretty 10/10
[QUOTE=layla;45837621]I also like that it can be used as a social game too, like if you just want to use it to chat to your mates and watch people try and get a high score on a game.
It's a completely different experience playing a game while people are watching you.[/QUOTE]
Kinda reminds me of gmod-cimena.
Nobody ever knew that watching youtube videos in a game, could be so much more fun then watching them alone.
[QUOTE=ben1066;45836540]shiny verilog stuff[/QUOTE]
What software are you using?
[QUOTE=KillerLUA;45838933]What software are you using?[/QUOTE]
It's a pretty ancient Altera DE1 board and so I'm using Quartus 2 13.0 SP1. I plan to try out some of the Lattice parts at some point as if I ever want to design a final board then they are the most accessible and best value parts avaliable (the MachXO2 series especially). If you mean what's running on it then that's all mine and currently isn't on GitHub, it will be eventually.
[QUOTE=Simspelaaja;45838090]I installed [URL="http://blogs.msdn.com/b/clrcodegeneration/archive/2014/05/12/ryujit-ctp4-now-with-more-simd-types-and-better-os-support.aspx"]RyuJIT CTP4[/URL] and [URL="https://www.nuget.org/packages/Microsoft.Bcl.Simd"]Microsoft.Bcl.Simd[/URL] and tried to vectorize the algorithm last evening, but I didn't succeed (SetBnd was especially hard).
I also merged your optimized version with my multithreaded version and got the frametime to around 4.5 ms.[/QUOTE]
Yeah multithreading will help a lot here.
Did you just split the array in half for multithreading or how did you do it?
Also what class did you use? Parallel.* or something else? I have quite a bit of experience with multithreading so I'd advise to spawn your own threads and let them wait on an event to do their work.
Everything else will have a lot more overhead.
By the way you only need to focus on linearSolve!
Its summed execution time is over 97% in the un-optimized version.
(I say summed because in a profiler it [B]looks[/B] like advect and some other functions also consume some time but >50-80% if their time ends up in linearSolve again)
I think I'll try yeppp in the coming days to vectorize linearSolve.
Oh and what CPU do you have? The minimum frametime I got was 10ms with an i7-3770 here.
[QUOTE=Felheart;45839383]Yeah multithreading will help a lot here.
Did you just split the array in half for multithreading or how did you do it?
Also what class did you use? Parallel.* or something else? I have quite a bit of experience with multithreading so I'd advise to spawn your own threads and let them wait on an event to do their work.
Everything else will have a lot more overhead.
By the way you only need to focus on linearSolve!
Its summed execution time is over 97% in the un-optimized version.
(I say summed because in a profiler it [B]looks[/B] like advect and some other functions also consume some time but >50-80% if their time ends up in linearSolve again)
I think I'll try yeppp in the coming days to vectorize linearSolve.
Oh and what CPU do you have? The minimum frametime I got was 10ms with an i7-3770 here.[/QUOTE]
I swapped the outermost for loop in LinearSolve with Parallel.For, which as far as I know has a fairly low overhead. Parallellizing more of the loops didn't increase the performance.
Yeah, I know about the LinearSolve since I'm using a profiler too.
I have a i5-3570 non-k.
You should contact me on Steam.
[QUOTE=Felheart;45839383]Yeah multithreading will help a lot here.
Did you just split the array in half for multithreading or how did you do it?
Also what class did you use? Parallel.* or something else? I have quite a bit of experience with multithreading so I'd advise to spawn your own threads and let them wait on an event to do their work.
Everything else will have a lot more overhead.
By the way you only need to focus on linearSolve!
Its summed execution time is over 97% in the un-optimized version.
(I say summed because in a profiler it [B]looks[/B] like advect and some other functions also consume some time but >50-80% if their time ends up in linearSolve again)
I think I'll try yeppp in the coming days to vectorize linearSolve.
Oh and what CPU do you have? The minimum frametime I got was 10ms with an i7-3770 here.[/QUOTE]
When you multi-thread an application the only thing that's really important is that you need to organize it in such a way that you minimize cache-collisions between threads.
So you multi-thread in such a way that the memory that is written is as far away as possible from the other threads.
So its preferable to give each threads their own chunk of memory to process.
[editline]29th August 2014[/editline]
[QUOTE=Simspelaaja;45839777]I swapped the outermost for loop in LinearSolve with Parallel.For, which as far as I know has a fairly low overhead. Parallellizing more of the loops didn't increase the performance.
Yeah, I know about the LinearSolve since I'm using a profiler too.
I have a i5-3570 non-k.
You should contact me on Steam.[/QUOTE]
You can't thread that loop like that.
The code writes and reads from the same memory, it relies on the previous pass being done before the new ones starts.
While its not really noticeable in the result, less iterations are being done on some parts of field, depending on which thread processes things first. And even some unexpected things can happen, like energy being created.
I know it's not really the proper way, but as you said, it's not noticeable in the result. For a game or even a demo, it's good enough.
Would the proper way be to split the grid into smaller cells and then do the simulation in parallel for each cell?
[QUOTE=Simspelaaja;45839919]I know it's not really the proper way, but as you said, it's not noticeable in the result. For a game or even a demo, it's good enough.
Would the proper way be to split the grid into smaller cells and then do the simulation in parallel for each cell?[/QUOTE]
Threading it like that will effectively increase the amount of iterations you minimally need to do before it becomes too unstable. And the itteration count impacts the performance significantly.
---
Yes.
Every thread should process 1/ThreadCount * gridResPlus2 on the Y axis, to minimalism cache-collision and keep the simulation as accurate.
So it turns out that the System.Drawing.Bitmap type in .NET has Width and Height properties that correspond not to the actual width and height, but the width and height after being transformed to match the (rather un-intuitive) EXIF Orientation flag...
Made a bit of progress in my game since I last posted here a while ago.
Made it render from an angle now, so you can see the sides of the blocks. Textures are very placeholder, but I don't think it looks too bad.
[img]https://dl.dropboxusercontent.com/s/wvrh86rl66jbapi/2014-08-29_19-47-26.jpg?dl=0[/img]
Also refactored a fair bit to make way for a proper server/client setup. Currently, in theory anyway, this world is also existent serverside, though I have no way of testing that as of yet :v:
Next on the list is making the player controller properly networked (right now it's 100% client dominant), and then an inventory.
So, I ported across the distortion code to work with the galaxy rendering (and space dust), so now it gets warped by the wibbly wobbly warpy things
[video=youtube;7gkn-9fENds]http://www.youtube.com/watch?v=7gkn-9fENds[/video]
The plan is to have this be active for every active laser in the scene. I can get it to accumulate and leave behind a warping trail as well, which would be cool
Ignore the music, I forgot to turn it off while recording :v: obs also decided to record a big black border around it as well. I've really ballsed that video up pretty hard
I don't really have a ton to show, as my past couples days of stuff isn't really visual, you know how it is..
But I had some fun tweaking my main menu a bit.
[IMG]http://i.imgur.com/OHmLq4d.png[/IMG]
I managed to compile Mond to JS with [url=http://jsil.org/]JSIL[/url]. It's works pretty well but it's missing a few core functions/classes.
So here's Mond, a scripting language written in C#, compiled to JS, running in a browser: [url]https://fpp.literallybrian.com/mond/[/url]
It needs to load about 4MB of JS so it may take a few seconds to work but after the first run it should be a lot faster.
[QUOTE=Icedshot;45840380]So, I ported across the distortion code to work with the galaxy rendering (and space dust), so now it gets warped by the wibbly wobbly warpy things
[video=youtube;7gkn-9fENds]http://www.youtube.com/watch?v=7gkn-9fENds[/video]
The plan is to have this be active for every active laser in the scene. I can get it to accumulate and leave behind a warping trail as well, which would be cool
Ignore the music, I forgot to turn it off while recording :v: obs also decided to record a big black border around it as well. I've really ballsed that video up pretty hard[/QUOTE]
You should have enemies that are only visible by the warp they leave behind them.
[QUOTE=Nigey Nige;45844284]You should have enemies that are only visible by the warp they leave behind them.[/QUOTE]
All right satan, settle down.
[QUOTE=Rohans;45842238]I managed to compile Mond to JS with [url=http://jsil.org/]JSIL[/url]. It's works pretty well but it's missing a few core functions/classes.
So here's Mond, a scripting language written in C#, compiled to JS, running in a browser: [url]https://fpp.literallybrian.com/mond/[/url]
It needs to load about 4MB of JS so it may take a few seconds to work but after the first run it should be a lot faster.[/QUOTE]
I like your pipeline operator, does that come from another language?
[QUOTE=Vampired;45845173]I like your pipeline operator, does that come from another language?[/QUOTE]
[url=http://en.wikibooks.org/wiki/F_Sharp_Programming/Higher_Order_Functions#The_.7C.3E_Operator]It's from F#.[/url]
Remember to commit frequently, folks. :'(
[editline]30th August 2014[/editline]
Or just avoid running
[code]rm src/*[/code]
by accident
[QUOTE=Larikang;45845531]Remember to commit frequently, folks. :'([/QUOTE]
[img]https://dl.dropboxusercontent.com/s/qz4170n0imbt97s/2014-08-30_12-40-32.png?dl=0[/img]
thanks lol
[QUOTE=Larikang;45845531]Remember to commit frequently, folks. :'(
[editline]30th August 2014[/editline]
Or just avoid running
[code]rm src/*[/code]
by accident[/QUOTE]
[code]
$ rm * .o[/code]
Happens once, and you learn to love git. Trauma for life.
[QUOTE=Ac!dL3ak;45840796][code]
└ 0:main:MAIN(0x541d220) {token:(nil), array:0}
└ 0:left:IMPORT(0x541c500) {token:(nil), array:0}
│ └ 0:right:CLASS_NAME(0x541c490) {token:0x541b460, array:0}
└ 0:right:MODULE(0x541d1b0) {token:(nil), array:0}
│ └ 0:left:CLASS_NAME(0x541c570) {token:0x541b550, array:0}
│ └ 0:right:MODULE(0x541d140) {token:(nil), array:0}
│ │ └ 0:left:CLASS_NAME(0x541c5e0) {token:0x541b6a0, array:0}
│ │ └ 0:right:CLASS(0x541d0d0) {token:(nil), array:0}
│ │ │ └ 0:left:CLASS_NAME(0x541c650) {token:0x541b7f0, array:0}
│ │ │ └ 0:right:METHOD_DEFINITION(0x541cb90) {token:(nil), array:1}
│ │ │ │ └ 0:left:METHOD_DEFINITION_DATA(0x541cc00) {token:(nil), array:0}
│ │ │ │ │ └ 0:left:METHOD_DEFINITION_ARGUMENT(0x541c8f0) {token:0x541bb60, array:0}
│ │ │ │ │ │ └ 0:left:TYPE(0x541c880) {token:(nil), array:0}
│ │ │ │ │ │ │ └ 0:right:CLASS_NAME(0x541c810) {token:0x541bad0, array:0}
│ │ │ │ │ └ 0:right:METHOD_DEFINITION_INFO(0x541cc70) {token:(nil), array:0}
│ │ │ │ │ │ └ 0:left:TYPE(0x541c730) {token:(nil), array:0}
│ │ │ │ │ │ │ └ 0:right:CLASS_NAME(0x541c6c0) {token:0x541b940, array:0}
│ │ │ │ │ │ └ 0:right:CLASS_NAME(0x541c7a0) {token:0x541b9d0, array:0}
│ │ │ │ └ 0:right:DECL(0x541cb20) {token:0x541bda0, array:0}
│ │ │ │ │ └ 0:left:TYPE(0x541c9d0) {token:(nil), array:0}
│ │ │ │ │ │ └ 0:right:CLASS_NAME(0x541c960) {token:0x541bd10, array:0}
│ │ │ │ │ └ 0:right:VARIABLE(0x541cab0) {token:(nil), array:0}
│ │ │ │ │ │ └ 0:right:CLASS_NAME(0x541ca40) {token:0x541be90, array:0}
│ │ │ └ 1:METHOD_DEFINITION(0x541cf80) {token:(nil), array:0}
│ │ │ │ └ 0:left:METHOD_DEFINITION_DATA(0x541cff0) {token:(nil), array:0}
│ │ │ │ │ └ 0:right:METHOD_DEFINITION_INFO(0x541d060) {token:(nil), array:0}
│ │ │ │ │ │ └ 0:left:TYPE(0x541cd50) {token:(nil), array:0}
│ │ │ │ │ │ │ └ 0:right:CLASS_NAME(0x541cce0) {token:0x541bfe0, array:0}
│ │ │ │ │ │ └ 0:right:CLASS_NAME(0x541cdc0) {token:0x541c070, array:0}
│ │ │ │ └ 0:right:RETURN(0x541cf10) {token:(nil), array:0}
│ │ │ │ │ └ 0:right:VARIABLE(0x541cea0) {token:(nil), array:0}
│ │ │ │ │ │ └ 0:right:CLASS_NAME(0x541ce30) {token:0x541c280, array:0}
[/code]
fuck yeah.[/QUOTE]
I have once needed to draw a tree of a graph like above too, and it turned out to be much harder. It should be perfect, like from `tree` command.
Does anybody know this algorithm? `tree` source is bizzare.
[t]http://i.imgur.com/ksAw0V9.png[/t]
Dude's pretty beaten up at the moment, but he'll get better and beat and shoot the crap out of some monsters like some sort of Hotline Miami meets Super Meat Boy.
I had nothing fucking better to do so I did twitch plays league of legends.
[t]http://i.imgur.com/mIqk8wK.png[/t]
[video=youtube;scJ8ZFzHb-g]http://www.youtube.com/watch?v=scJ8ZFzHb-g[/video]
Also you won't belive how shitty the code is, let it explain by itself.
[code]Control.CheckForIllegalCrossThreadCalls = false;[/code]
[QUOTE=vombatus;45845810]I have once needed to draw a tree of a graph like above too, and it turned out to be much harder. It should be perfect, like from `tree` command.
Does anybody know this algorithm? `tree` source is bizzare.[/QUOTE]
I wrote something like this a while ago: [url]https://gist.github.com/Rohansi/b81320789e94fc7ecde3[/url]
[QUOTE=Fourier;45845091]What is this, some sort of hierarchy of some program structure?[/QUOTE]
yeah, basically
represents this:
[code]
require Dash
module Dash
{
module Test
{
class Assert
{
defn Void initialize(Boolean value)
{
Boolean @value = value
}
defn Boolean run()
{
return @value
}
}
}
}
[/code]
[editline]30th August 2014[/editline]
[QUOTE=vombatus;45845810]I have once needed to draw a tree of a graph like above too, and it turned out to be much harder. It should be perfect, like from `tree` command.
Does anybody know this algorithm? `tree` source is bizzare.[/QUOTE]
[url]https://github.com/medcat/dash/blob/master/src/dash/parser.y#L497-L542[/url]
This is how I do it.
Sorry, you need to Log In to post a reply to this thread.