Fan made projects related to MLP

Search /collab/ threads

Password  (for post and file deletion)

File 135566176244.gif - (28.04KB , 94x122 , chrysalis-idle-left.gif )
43172 No. 43172
It's been almost nine months, but a new thread and a new release has finally arrived. (Old thread >>36234)

Version 1.42.4 (2013-11-30)

DesktopPonyGuy appears to have moved on to other things, but development has continued. The artists have added lots of new animations and characters, and there's 149 to choose from in this release!

The program itself has also seen a number of changes. The biggest by far is support for Mac and Unix. Yes - Desktop Ponies is now multi-platform.

We've also got a new site set up:
And don't forget the DA community

Feature requests or bug reports are welcomed (and for those who don't know me, I'm RoosterDragon, and I'm maintaining the program in DPGs absence).

Last edited at Fri, Nov 29th, 2013 20:11

500 posts omitted. Last 50 shown. Unspoiler all text  • Expand all images  • Reveal spoilers
>> No. 45892
Unexpected Error - Desktop Ponies v1.42.3
An unexpected error occurred and Desktop Ponies must close. Please report this error so it can be fixed.
System.InvalidOperationException: Sequence contains no matching element
at System.Linq.Enumerable.First[TSource](IEnumerable`1 source, Func`2 predicate)
at DesktopPonies.Pony.StartInteractionAsTarget(CaseInsensitiveString behaviorName, Interaction interaction) in ____________________________________________Desktop PoniesDesktop PoniesDesktopPoniesPony.vb:line 2799
at DesktopPonies.Pony.StartInteraction(Interaction interaction) in ____________________________________________Desktop PoniesDesktop PoniesDesktopPoniesPony.vb:line 2776
at DesktopPonies.Pony.Move() in ____________________________________________Desktop PoniesDesktop PoniesDesktopPoniesPony.vb:line 2007
at DesktopPonies.Pony.UpdateOnce() in ____________________________________________Desktop PoniesDesktop PoniesDesktopPoniesPony.vb:line 1469
at DesktopPonies.Pony.Update(TimeSpan updateTime) in ____________________________________________Desktop PoniesDesktop PoniesDesktopPoniesPony.vb:line 1403
at DesktopSprites.SpriteManagement.AnimationLoopBase.Update() in ____________________________________________Desktop PoniesDesktop SpritesSpriteManagementAnimationLoopBase.cs:line 1251
at DesktopPonies.PonyAnimator.Update() in ____________________________________________Desktop PoniesDesktop PoniesDesktopPoniesPonyAnimator.vb:line 169
at DesktopPonies.DesktopPonyAnimator.Update() in ____________________________________________Desktop PoniesDesktop PoniesDesktopPoniesDesktopPonyAnimator.vb:line 296
at DesktopSprites.SpriteManagement.AnimationLoopBase.Tick() in ____________________________________________Desktop PoniesDesktop SpritesSpriteManagementAnimationLoopBase.cs:line 1200
at DesktopSprites.SpriteManagement.AnimationLoopBase.Run() in ____________________________________________Desktop PoniesDesktop SpritesSpriteManagementAnimationLoopBase.cs:line 1154
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
2013-11-06 06:51:16Z
>> No. 45893
- Fixed interactions not respecting reactivation delay.
- Prevented crash when interacting with targets lacking the required behaviors.

Download link (patch only - a full download can be found in the opening post):

Copy files over an existing v1.42.3 install and overwrite where prompted.


I'm clearly not having the best of days.

Yeah I had it set to five seconds for quicker testing - totally forgot to change it back - whoops.
Well it won't crash now, but I don't suppose you happen to remember what ponies you had going do you?
>> No. 45894
Ah, okay.
Well, it works now. :)
>> No. 45897
File 138388897581.png - (23.76KB , 216x335 , justcantleavetheparty.png )
ok so I've noticed a weird thing with the houses. Sometimes the ponies get stuck at the door. You can't drag them but you can right click 'remove pony' to get them to go away. The thing is that it does not happen with every pony. Some ponies go away just fine. I believe all the ponies that have gotten stuck are the random ponies from the start. The ones that came from the house disappeared just fine as did the specifically selected ponies from the start.

Anyway it's awesome seeing all the little improvements you've made RoosterDragon. Just wanted you to know.

@botchan I love that dance!
>> No. 45898
Thank you :)
>> No. 45900
Unless I've missed something, I've noticed an astonishing lack of dancing desktop ponies. I could really use some, especially of the mane 6. And I'm sure many others would find them beneficial too.

I know I'm encouraged to do these things myself, but I unfortunately don't have the time, ability, or time to learn the ability. So I just thought I'd toss this request out there on the slim chance that someone could help me out.
>> No. 45901
Unless I've missed something, I've noticed an astonishing lack of dancing desktop ponies. I could really use some, especially of the mane 6. And I'm sure many others would find them beneficial too.

I know I'm encouraged to do these things myself, but I unfortunately don't have the time, ability, or time to learn the ability. So I just thought I'd toss this request out there on the slim chance that someone could help me out.
>> No. 45909
File 138430718171.gif - (13.00KB , 166x156 , twilight_partyhard_R.gif )
Did you turn the party switch on?

completely forgot about sending this for ya :P
>> No. 45914
- Added "party hard" Twilight animation by ponynoia.
- Fixed some ponies getting stuck in the doorway when returning to houses.
- Fixed reloading options sometimes causing a crash if ponies were running.
- Fix an error where unrecognised tags against a pony were removed rather than ignored if you edited the tags.
- If a behavior has a min duration higher than the max duration, the values will be silently swapped around to remain sensible.
- Fixed a bug where old style speech definitions in .ini files were being ignored.
- Fixed a few things in the pony editor so they could handle ponies without any behaviors.

Download link (patch only - a full download can be found in the opening post):

Copy files over an existing v1.42.3.1 install and overwrite where prompted. Note a couple of core ini's have changed - please merge changes manually if you want to keep any custom changes you have made to those files!


How silly. Fixed.

Adorkable dancing Twilight is the best.
>> No. 45919
File 138467087757.png - (376.53KB , 540x540 , glasses.png )

Allow me to present the new engine prototype for DP, written in pure C.
Currently, it does not support anything except drawing and exiting on ESC key. However, since it`s using OpenGL 2.1, with a perspective of additionally using shader model 1.20 for texture compression, it is able to output 16 384 simultaneous instances of a single animation at a speed of 4 FPS (Core i5 2557M / 4GB / IntelHD 3000), while the current engine, given the speed, can only output ~600, with everything — interactions, moving, animation changing — switched off.

The picture attached is a RAR+PNG: just download it, then change extension to RAR, and extract. There you can find the binary to execute and the sources to compile it from.

Anyone of the dev team interested?
>> No. 45922
Hmm, I don't know if this was intentional, but it is now possible to click on the transparent parts of the sprites. As this can lead to effects blocking a pony from being dragged by the mouse, I don't really like this.
>> No. 45924
This would be great to stop the program sucking up so much CPU when running a ton of ponies.

I've noticed however (at least on my really crappy laptop) that running a single pony maxes out a core and I still only get 10 FPS. I'm almost certain this is a hardware issue on my cruddy laptop, as I've had similar numbers when I tried other methods that were hardware accelerated. If I don't use a transparent window, things speed back up to sensible levels - so I figure on my hardware it's the copying data from the GPU that stalls everything.

It'd be very cool to use an engine that could use the GPU so people could run silly numbers of pony if they wanted, but there'd have to be a way of detecting people with cruddy hardware like mine so we can do something sensible for them.

Not intentional. Certainly annoying. Will look into it.
>> No. 45925
File 138479123849.png - (1.21KB , 128x80 , Tom.png )
Seems like something that would have been done ages ago. :I
>> No. 45928
File 138483133281.png - (435.35KB , 426x450 , 138479880953.png )
> it's the copying data from the GPU that stalls everything.
Yep, framebuffer readback is definitely a bottleneck. In my initial implementation it was done in a non-parallel manner, via glReadPixels() not backed by a PBO. This approach is rather slow by design, and also forces CPU to wait for GPU pipeline flush. Unfortunately, I do not own any PCs with discrete GPUs, which means I can`t reproduce the performance hit caused by real DMA through a real video bus, and somehow work it around.

What is more, having read the sources of the current DP sprite subsystem, I don`t think that my implementation would play well with it. This is mainly because of my wish to offload as much as possible to the GPU, including mouse input control, horizontal reflections (which are done simply by altering the texture u-coordinate inside a vertex shader; this will help get rid of the separate pictures for rightward and leftward directions), and position changing (just another PBO over an RGBA32F texture with height 1 and width equalling the total number of quads in a batch, where (R, G) pair means (X, Y) and (B, A) means (dX, dY)).

Considering what`s said above, it would be a lot easier for me to rewrite everything from scratch than try to integrate the two projects, one of which is implemented in a programming language I do not know. And I`m not sure if it`s even worth the effort when the existing implementation just works. Meh.
Thus, let this engine be just an experimental side project, which might or might not see the light of day.
Anyway, if you wish to continue, here`s a configurable modification in RAR/PNG. I`m intrested in 4 performance tests: !BGRA & !PBO, !BGRA & PBO, BGRA & !PBO, BGRA & PBO. Please also tell me the exact configuration of your machine (CPU, GPU, RAM, screen resolution and OS version).

Other testers are also very welcome: the more data, the better!

P.S.: BGRA flag means switching between two different formats in which pixels may be stored. If the requested format does not match the format that is native for a given GPU, all pixel DMA operations will suffer an additional step of bit swizzling. When the driver is able to perform it directly on GPU, the overhead is negligible, but otherwise the whole operation may be potentially slowed down by orders of magnitude.
>> No. 45929
I am using a Mac (10.6.8) and I have followed the instructions in the readme.txt, and even after downloading everything, when I click on the RunOnMac.command, it opens some text up in "Terminal" and then that's it? Am I doing something wrong? I know nothing of this type of stuff, but I would really love to play with the ponies. :C
>> No. 45931
Toggling the BGRA flag was a no-op in both tests. Setting the PBO flag halved the framerate from ~12 to ~6 in both tests. Tested with 1 pony in all cases.

I'm no hardware buff so you'll have to bear with me if I've screwed this up.
Win 7 SP1
AMD Turion X2 Dual-Core Mobile RM-72 2.1 GHz
ATI Radeon HD 3200 Graphics
4 GB RAM (not sure of the speed)

I imagine whatever pipe handles memory transfer from the GPU is just poor on bandwidth. If I hardcode the program to render in 683x768 (i.e. half the pixels) then my framerate doubles to 24. Half again to 683x384 and I'm up to 48. A strong implication the limiting factor is just the amount of data being transferred. (I don't know enough to actually be sure of this, just stating what seems to be likely.)

Hope that helps.

Anyway, as far as implementing it goes - you're quite right in that it'd just for be technical fun at this stage - rendering silly amounts of pony with decent performance isn't a priority (the most important thing I do by far is adding new ponies in to the download when people post them, the second most important thing in unbreaking things that I probably shouldn't have broken in the first place :P)

You'll never reimplement Desktop Ponies fully - it's complex, inelegant and most importantly almost entirely undocumented spaghetti logic. You could make a simple copy but that'd be boring.

I think it'd be way cooler to actually implement the interface required so that it could actually be used in Desktop Ponies. You could do it all in C and we could just wire up a wrapper in the C# world. Alternatively there are C# bindings for OpenGL so you could try it that way if you fancied.

I think it'd be a fairly neat thing to pull off. Up to you really.

I replied to your post on the forums.
>> No. 45933
File 138512805478.png - (846.05KB , 700x1050 , 15_014.png )
> Setting the PBO flag halved the framerate from ~12 to ~6 in both tests
Asynchronous readback that is twice slower than synchronous?!
Mmmmmkay. Apparently, average GPUs just don`t cut it. Let`s go for something different.

← This version uses pure GDI, without any OpenGL whatsoever. Microsoft say that GDI, unlike GDI+, is partially hardware accelerated, so I decided to give it a try. Dragging sprites around is already supported, depth-reordering is (yet) not.
BTW, it is maybe worth combining GDI and OGL. For example, let there be some configurable sprite number threshold to switch between them, GDI being the default.

I`m still not sure whether I want to just implement the new sprite library or try and rewrite DP from scratch. Either way, I will keep you updated if you want me to.

Forgot to add. The difference between unique instances and duplicates is that a duplicate does not generate a separate decoded GIF image, thus consuming no RAM. From the point of performance, uniques and duplicates are identical.

Last edited at Fri, Nov 22nd, 2013 07:08

>> No. 45934
File 138515408407.gif - (9.47KB , 102x96 , rainbow_dash_fighting_stance_by_robokitty-d5gzf1v.gif )
That's Perfect! :D

Now if only I can get one of Rainbow Dash doing the Wave like she did in the Mysterious Mare-Do-Well, I'd be set.

Also, I just found this and a couple more of Dash that I don't think have been added.
Made by This guy:
>> No. 45937
Finally got around to trying this. Indeed GDI is noticeably faster (I can run about 105 Luna at the target framerate of 25 FPS, but the GDI solution can handle about 180).

Calling GDI functions is not much effort either, so I hooked them into the existing engine and got the same speedup. Woo.

That was with 32bbp bitmaps though, and I need to use indexed bitmaps otherwise the memory usage is unacceptable. For the life of me I couldn't get CreateDIBSection/SetDIBColorTable to work in an indexed mode. They appear to succeed but I only get blank images. I'm also hoping the speedup isn't just a side effect of being in the 32bbp format.
>> No. 45938
File 138550762195.png - (665.50KB , 656x1978 , 23_026.png )
> I'm also hoping the speedup isn't just a side effect of being in the 32bbp format.
It isn`t.

This RAR / PNG contains proof-of-concept 8 BPP DIB alpha-blending code.
The funny thing is that I actually do not use GDI to alpha-blend, just because GDI seems to be incapable of doing it in 8-bit mode.
Even funnier is the fact that my code that just operates on memory regions using bare CPU is twice faster than AlphaBlend() from WinXP, and 2-3 FPS faster than AlphaBlend() from Win7 / Win8.
This suggests getting rid of DIBs altogether, but I`m not yet finished substituting them with memory chunks, so let there be DIBs (not for long though).

Dragging and depth-sorting are now fully available, but the code that manages palettes is still a bit rough and requires a brush-up. In particular, it relies heavily on the availability of the global palette.
To benchmark the speed of blending with less-than-FF alpha channel, go to GIF/GIF_GDI.c and comment out the block starting on line 163, then uncomment the one that begins on 169, and recompile.
>> No. 45940
Ha that's certainly one way to work around it. I was able to replicate your results in the current engine. Plenty of old code I'll have to remove or tidy up as a result, but it mostly works and is still roughly as fast.

It'll be a while before I have the time to do that, so feel free to chip in with whatever efficiency magic you can conjure up regarding switching to plain chunks of memory and forgoing DIBs, or anything else that comes to mind.

The alpha blending test only takes off 2-3 FPS (from 25 originally) compared to having opaque images, which is pretty damned good considering it was being applied to every pixel. In practise there are so few translucent pixels that it will basically be a free operation I think.
>> No. 45942
- Change most of Fluttershy's speeches to be in group 0, so she will talk more often.
- Rendering speed on Windows has been significantly improved, allowing more ponies for less CPU.
- Fix a bug in the editor preventing creating or editing some parts of interactions.
- Fix a bug on Windows where transparent regions of a pony where sometimes clickable.

Download link (patch only - a full download can be found in the opening post):

Copy files over an existing v1.42.3.2 install and overwrite where prompted. Note Fluttershy's pony.ini has changed - please merge changes manually if you want to keep any custom changes you have made to it!



I've made changes in this version that borrow the technique of creating a DIB and futzing with the raw pixels for blending. Thanks for your help, it was damned useful. If you find any other magic tricks I'll happily add them. I wonder if dividing the alpha blending method among threads would yield an improvement at all - the program spends like 75% of its time in that method.
>> No. 45949
File 138596468896.png - (365.74KB , 402x604 , spider+laptop.png )
Heads up, it`s me again. Finally, I fixed a truckload of bugs in my GIF decoder made memory-based approach work.
Just in case, the decoder still relies on global palette, and reserves index 0xFF for transparency color.
On my machine, the whole algo now works 1.5 times faster than the previous version.

Now the more interesting part. I`ve got a couple of new ideas how to lower the resource usage.
One of them is not to use separate mirrored images but generate them on the fly: either way we ourselves are in charge of rendering. The special cases where no mirroring shall be performed — like, say, Twilight with an eyepatch — have to be explicitly defined in configs.
Another idea is to turn the very pixel-art-ish style of DP into a memory advantage: the majority of sprites present in DP are just begging to be downscaled twice. This would cost us nothing but cut memory usage fourfold. Coupled with the previous idea, it gives us eight times less RAM consumed.

I`ve already downsampled most of the sprites myself (except the very latest and those whose presicion does not allow downsampling) and implemented realtime rescaling.
And yes, on top of everything the algo is easily paralleled. The current implementation (see URL below; no RAR+PNG here due to excess size of animations) is able to run an arbitary number of threads, optimally equalling the number of CPU cores on the machine. For now, they are created ad-hoc, but the probably better approach is to keep all threads running until the program terminates and synchronizing them on a semaphore object.

OK, now the code:
«Count limiter» control sets the number of sprites after which loading shall stop. Zero value equals loading everything (the current archive provides 916 sprites).

P.S.: my laptop is able to produce 27 FPS on that number, eating 80 megabytes of RAM and 25% of CPU time.
>> No. 45950
I tried these ideas previously. At the time drawing the downscaled images proved to be slower, so I abandoned that (not a problem now we control the rendering, of course). The mirroring I half-implemented but never finished because Gtk (the UI layer that handles drawing on Unix/Mac) didn't handle it nicely.

Mainly however, I don't want to break the configs. I made minor breaking changes to interactions once and I hate myself for that. I don't want to break ports needlessly so I don't think I'll change the image sizes or how the configs work.

That said, mirrored or over-scaled images could be detected during loading and then fixed on the fly. I'll have to rework a few things to make that work. Well worth the saved memory though. Combined with the existing checks for removing duplicate frames and 4bbp indexing where possible, things will be pretty lean.

Another thought might be to get around to cropping transparent borders on all the images. That's a minor win - but does need config files to be updated too.

Ought to be pretty cool.
>> No. 45953
The transparent parts of effects still seem to be click- and draggable at times.
>> No. 45954
Do you have a specific effect this is happening on? I can't recreate this.

Do the transparent parts of pony images ever become draggable? Seems weird that just effects would magically be affected.
>> No. 45955
Well, if you have my zodiac ponies, try dragging Aquarius around. Sometimes, you can grab her, but more often than not, you'll end up dragging the puddle around she creates.
And yeah, apparently, the ponies themselves work fine now, it's just the effects. No idea why.
>> No. 45957
I initially fixed a totally unrelated bug that wasn't causing your issue - but it was causing very similar problems with dragging and such (hence why I thought that should do the job).

Now I've fixed a second, totally different, bug that was actually causing your issue.

So yeah you managed to accidentally report two separate bugs at once, and you didn't even know it. Funky.
>> No. 45960
Ah, okay then :)

Okay, so I made small updates to Princess Twilight Sparkle and EqG Pinkie Pie. Each of them has a new animation.

Download them here:
>> No. 45973
I'm alive! And after a long time, I have improved! I am attempting a crystal pony!
>> No. 45974
File 138698447464.png - (41.09KB , 419x316 , idlewip Dandy Brush.png )
Here is a WIP for Dandy Brush. Anything I should fix? (I'm adding the body's crystal effect later)
>> No. 45975
Without a full reference picture, it's kind of hard to tell what should be fixed, but based on the head alone, she doesn't look that chubby to me. Also, both the mane and tail have some really jagged outlines and the hairstyle, in my opinion, looks off, too.
>> No. 45976
File 138701026828.png - (3.80KB , 43x41 , dandy.png )
Hey Dogostar. Wow I do see the improvement in your work. One thing I would say to change is the tail. Fill it out just a bit like so. Another thing is the back part of her main doesn't quite match her hairstyle in the show. I would have it start higher up near the top of her ear and include that little curl out that it does. Otherwise she is looking good. Love the little detail you are putting in the hair to give it more of a crystalline feel.
>> No. 45980
Thanks! (. Both of you) I will fix that.
>> No. 45981
File 138712093738.png - (1.32KB , 56x50 , this.png )
How's this?
>> No. 45985
It's been a whole year, so I've decided to start a new thread.


See you there.
>> No. 46120
File 139053220624.jpg - (12.90KB , 226x223 , images (2).jpg )
It awsome
>> No. 46154
File 139126679138.png - (383.56KB , 3600x2600 , mac.png )
>> No. 46390
>> No. 46594
File 139616023101.png - (84.07KB , 894x894 , Blitz_Writer_As_A_Pony.png )
>> No. 46627
I have sort of the same problem on my mac. It's getting really frustrating
>> No. 46628
I have sort of the same problem on my mac. I can get to the pony selector and select ponies, but when I hit give me ponies it crashes. It's getting really frustrating. The error text is:
Unhandled error in Desktop Ponies v1.42.4 occurred 2014-04-10 18:29:16Z

System.ArgumentOutOfRangeException: value must be non-negative.
Parameter name: value
at DesktopSprites.Core.Argument.EnsureNonnegative (Int32 arg, System.String paramName) [0x00000] in <filename unknown>:0
at DesktopPonies.PonySelectionControl.set_Count (Int32 value) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) DesktopPonies.PonySelectionControl:set_Count (int)
at DesktopPonies.PonySelectionControl.MinusButton_Click (System.Object sender, System.EventArgs e) [0x00000] in <filename unknown>:0
at System.Windows.Forms.Control.OnClick (System.EventArgs e) [0x00000] in <filename unknown>:0
at System.Windows.Forms.Button.OnClick (System.EventArgs e) [0x00000] in <filename unknown>:0
at System.Windows.Forms.ButtonBase.OnMouseUp (System.Windows.Forms.MouseEventArgs mevent) [0x00000] in <filename unknown>:0
at System.Windows.Forms.Button.OnMouseUp (System.Windows.Forms.MouseEventArgs mevent) [0x00000] in <filename unknown>:0
at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) [0x00000] in <filename unknown>:0
at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x00000] in <filename unknown>:0
at System.Windows.Forms.ButtonBase.WndProc (System.Windows.Forms.Message& m) [0x00000] in <filename unknown>:0
at System.Windows.Forms.Button.WndProc (System.Windows.Forms.Message& m) [0x00000] in <filename unknown>:0
at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] in <filename unknown>:0
at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x00000] in <filename unknown>:0
at System.Windows.Forms.NativeWindow.WndProc (IntPtr hWnd, Msg msg, IntPtr wParam, IntPtr lParam) [0x00000] in <filename unknown>:0
>> No. 46759
File 139937433018.gif - (15.60KB , 106x96 , spoiler.gif )
I like all Pony all?!
>> No. 47154
>> No. 47158
>> No. 47330
<a href=>this link</a> valium drug interactions - valium high long
>> No. 47337
Youtube embed play button
>> No. 47360
File 141892703456.gif - (36.02KB , 88x92 , spoiler.gif )
quiero desktop pony en mi compu de windows xp
>> No. 47376
File 141995740807.jpg - (54.53KB , 574x600 , 433388687.jpg )
>> No. 47520
File 142511165889.png - (397.12KB , 495x1615 , eqg_pinkie_pie_boutique_by_birdalliance-d8glox4.png )
[Return] [Entire Thread] [Last 50 posts] [First 100 posts]

Delete post []
Report post