Page 1 of 27

Dev Diary

PostPosted: Mon Mar 24, 2014 10:54 am
by Killian
Hey Taron, awesome piece of work!

Do you plan to share some dev insights? I, and most likely plenty others, would like to know more about the underlying nitty-gritty tech and working principles.
Would be great if you could provide some information on this.

Re: Dev Diary

PostPosted: Mon Mar 24, 2014 11:49 am
by Taron
Hey Kilian,

I don't think you wonna know, hahahaha! :lol:
But drpetter keeps telling me about keeping a diary for my own sake, which is a clever thought for sure.

I'm writing Verve in BlitzMax, which is a bit more of a higher level language, but as it is still object oriented, things will sound familiar to most programmers, I assume. What will sound utterly unfamiliar is myself, haha! :P

My code is still rather primitive, really, no nifty things to the organization, except a few "classes" called "Types" in bmax to handle vectors (2d and 3d), layers, interface gadgets and- later on- brushes. Even the latter are still idiotically simple, wrapped into a function that evaluates the current types.
The whole thing is still so linear, it's an embarrassment. Thus far I don't even use a hook onto some windows event handling, no polling or the likes. It looks like a simple little "temp" code gone mad! :shock:

In other words, I'm the last one you want to "learn" from, when it comes to coding this thus far. Eventually I refactor the whole thing, I'm quite sure, probably even switching to C++, who knows, but even if I stayed in Bmax (which is really pleasant and goes quite far, if you have the nerve to take it there), I'd at least do an event based system to lighten the load on the main loop.

Thing is, the CPU doesn't have to do a lot of processing, really, just getting information and a few transformations. The main load is on the GPU by way of GLSL shaders.

I have shaders to do practically everything from generating all the interface elements over painting fractal noises to the entire fluid engine and more...
Thus Bmax is more or less in charge of managing the whole process.

There are a few things I've done that are kind of nice as I just noticed again! The interface gadgets are all independent, really, so you can create and destroy any of the available types on the fly. The processing of the gadgets is just a matter of traversing the list of members. It checks, if you hover over one of them and then declares that you're on an interface component, so your mouse will be trapped to dialing it or what ever the gadget does.
I just hooked up the main members of the fluid dials to hotkeys [F], [Shift]+[F] and [Ctrl]+[F], so you can adjust them where you are on the canvas. All it took was to check for the key combination to be held down, see if a floating_gadget exists, if not it would create one of a certain type right where your mouse pointer is at. Once you let go, it destroys it again. Nothing more to it! 8-)

So, it's really a great benefit to be lazy at heart and prepare everything to be as easy as possible to implement later. The problem is only, when a software wasn't planned to go nuts and is evolving as organically as Verve in this case. Oddly enough, it's not like I'm having "a problem" just yet. It's still amazingly well manageable, but it deserves some more attention for a proper construction, that's for sure.

Anyway, I hope that is somewhat of a start of this. I might add occasional rantings then, because...yes...there are moment! :geek:
But I gotta be careful with that, too, haha... :roll: ...not to get carried away in the spare of the moment, declaring myself an idiot in a variety of ways. :o

Also, I'm a total rogue coder, self-taught all the way, never learned any of this academically and utterly lack any jargon people might expect. Yet, I've been programming for 27 years- off and on- so...I was gonna say at some point that I'm proof that even a chimp can program, given enough time! ;)

Re: Dev Diary

PostPosted: Mon Mar 24, 2014 1:40 pm
by Feiss
Wow, that's a bit surprising, BlitzMax.. But if everything is managed with shaders, I guess it quite does not matter the 'container' framework it is written in.. And forget about code or platform 'correctness'.. I'm a VERY pragmatic programmer. If it works, it's ok! But I suppose that if you reach to a point where Verve is a unmaintainable monster, you would prefer to go to a more robust arquitecture. But I wouldn't mind yet, is quite clear Bmax is preety nice for the kind of organic and flexible growth of Verve..

Btw, I read in the website that "BlitzMax programs can be compiled for Windows, MacOS X and Linux". How difficult could be to export Verve to mac? (or linux) I could give a test to the mac version.


Re: Dev Diary

PostPosted: Mon Mar 24, 2014 1:51 pm
by Taron
That's really one of the BIG perks of Bmax, BUT the problem is I still would need a mac to run it on and I need some more diskspace to install Ubuntu for Linux compiles (I guess). BUT even then we depend on the existence of certain libraries (mods). Apparently there's no tablet.mod for the mac version and Linux either has non either or can't get pressure sensitivity, if I heard that correctly.
But, yes, in principle it is possible. I do also have a few windows specific functions in there to control window size, title and such. This is all stuff I'd need to figure out then, too, unless somebody were to help, of course, when the time is ripe.

Re: Dev Diary

PostPosted: Mon Mar 24, 2014 3:27 pm
by Feiss
Ok, I understand, I thought you could export a "" for mac from windows itself. No worries! focus on the windows version :)

Re: Dev Diary

PostPosted: Mon Mar 24, 2014 4:07 pm
by Taron
Now that would be so nice! :D ...of course, even then I couldn't test it properly, but it still would rock! :D

Re: Dev Diary

PostPosted: Mon Mar 31, 2014 1:28 pm
by superblobmonster
I'd also like to drop my interest in a Linux version, though I understand ~95% of the world runs on Windows ^_^ Never played with Bmax, but it sounds like quite a language to work with! Thanks for working on this radically new style of painter, lot of stuff I'm excited about!

Re: Dev Diary

PostPosted: Mon Mar 31, 2014 1:34 pm
by Taron
I just know that there will come a time in the not so distant future, when I have Linux and OSX available for such compiles and it'll be a day of ...uh... hmm...let's see... horror? HAHAHA, I hope not, but I'd be really thrilled to be able to finally do that. I think, if it was any more viable, I would've long switched to Linux, simply because of the spirit behind it. But professionally it just hasn't been an option thus far. Ah well. Anyway, it'll come, I can feel it! :)
Thank you, for sure, as much as it's troubling me, that we all have to ask for different versions, it naturally excites me to know you want Verve to begin with! :D

Re: Dev Diary

PostPosted: Tue Apr 01, 2014 1:47 am
by kenziealexander
Not sure if this helps at all, motivationwise or what, but as a Mac user I'd like to say I'm actually incredibly excited to see if you can port it to OSX. This honestly seems like the best program for painting as it actually simulates paint and not just blending. At least from the video I saw. But I also just wanted to say, nice work! Seriously, this thing looks awesome, and strangely enough, more advanced than the 1000 dollar programs out there from what I can tell.

Re: Dev Diary

PostPosted: Tue Apr 01, 2014 12:43 pm
by Taron
Thanks Kenzie! That helps a great deal in terms of motivation! :D
I really know that I have to get an OSX installed somehow at some point. I can't tell how soon this can happen, but right now it certainly has to wait, while I'm having to finish up project work. It will, though, be a great day when something makes it possible for me to have OSX around. The sad part about making a free software is that it cannot invest into itself either, though that isn't a big deal right now, down the line it might get logical to open up some ways to receive a bit of funding for it, if only for the sake of getting needed equipment such as mac stuff. However, I really don't want to force people ever to have to pay for Verve. At some point I might open up a way to support my development of it, although I don't know yet how and I will always keep that voluntary all the way. Verve exists for you, as do I. ;)