Flathead has spent a long time in development. It’s been vetted by friends and played with in the sandbox but now, it is available for you. I have spent the last three months reviewing notes, comments and talking to developers that have used the original incarnation of the Flathead project in an effort to identify problems, solutions and improve the general state of the projects.
This version is tremendously improved and will change the way you’ve ever thought of Flathead. Buy a license at the introductory price before time runs out!
The Complexity Is Gone
The major complaints that I ran into revolved around the complexity of having to work with V8 directly, when I was offering a binding. The reasons I built it that way initially are beyond me, because the new means of exposing objects and functions is not only easier to read and write, it is also easier for me to maintain! Communicating across the JS boundary is no longer a chore, and the standard types from JS are supported!
Flathead::Object obj; Flathead::Result result; bool result = pCore->Expose("exposedObject", &obj); obj.Set("LTUAE", 42); pCore->Execute("obj.LTUAE;", &result); UE_LOG(FlatheadLog, Display, TEXT("%d"), result.NumberValue); // Will output 42
Not only have I abstracted away V8 entirely, so you no longer need to even think about it being V8 behind the scenes, I have also addressed a common issue – exposing functions used to be a real pain in the ass. The process now is actually pretty interesting, though I wont talk about it much in this post. Suffice to say that static methods are your friend, and you will not be able to reliably get around without them.
Getting out of my own way
Along with reworking the guts of the plugin, I have reworked the platform itself, which addressed a pretty glaring issue with Unreal Code Plugins – monetizing them is not easy. The current setup requires that you release your entire plugin, including but not limited to the public and private code, along with any libs and or dlls you need for your project to work. At face value, this is fine – developers have a tendency to want to share their work early on, but how do you monetize that? My entire source is in your hands, how do we handle DRM, or versioning reliably when the other party has my source and has the ability to do with it as they wish?
I am surprised it hadn’t occurred to me sooner, but many of the other plugins utilize dlls to get around this – and specifically they use them to encapsulate the code they don’t want you to know about, as with Steam, Twitter and Substance. So, I am taking the same approach.
Admittedly, I am not quite as well followed on twitter, and my tool appears to have a pretty tight scope at the moment, but allow me to shed some light on the future of Flathead, but first… let’s get the discussion out of the way.
The Tiered Model
I have played with the idea of selling my tools before, as I have a tendency to build interesting things, but the question has always been how to do it ethically and not feel like I’m putting one over on anyone – because after-all, I am a socialist at heart. Well, I’ve been buying a lot of tools over the last couple years, tools and games, and the way I see it, there are some key price points and concepts that I would like to use as a stepping off point, and depending on how successful this is it will inform my decisions going forward.
To begin with, there are three Community Contributions tiers. Each is given a cheap edition of the plugin, where their time is part of the exchange. I want to build a community around this, because JS has a tendency to be really expressive and we are all doing interesting things that should be shared, and help feeding back into the machine/community.
Community Contributions + Early Access = $Free Ninety Nine
If you have a strong JS and C++ background and don’t mind helping me with continuing the vetting progress, writing tests and documenting/proof reading the capabilities of Flathead, this is an early adopters program I am starting with. I am looking for 8-12 developers that fall into this bracket. The free license comes at the cost of your time, and dealing with daily updates being issued, while we try to polish the stone.
If you are interested in this phase please shoot me an email with the following questions answered:
- What is your JS experience like – years of experience, kinds of projects you have worked with etc.
- What is your C++ experience like, same as above.
- How do you expect being able to leverage JS to help you in your projects?
- Are you working solo?
- Are you willing to help out with fielding questions, documenting features and or sharing your code with others?
- From 1 to 10, what would you score your coding confidence, when undertaking a new project with many unknowns in your favorite language?
Community Contributor + Beta Access = $14.95
You can still expect there to be a few burrs on some of the edges, but all of the features are in place. You will come in after the early access folks have done their job and receive a community contributor edition of the plugin.
This is really an introductory period for the plugin, opening up the doors to the general population and early adopters that didn’t make it into the initial group. This phase is going to come to an end in Late May.
Community Contributor = $24.95
After the Beta phases is behind us, this is the standard price for the community contributor license.
Free and Clear License – 99.95
There are always those that refuse to contribute and want to run their projects quietly and in the dark. If that is you, this is the license for you. You have no expectation of contributions, but its still very appreciated if you help out.
As I am now in the industry and seeing how people are using the engine, its immediately obvious to me that the need for a scripting tool, similar to MEL or Python in Maya or 3DS using Max Scripts. There are common processes that artists and level designers need to do and some processes that need to be automated like…
- Wrapping a level in as small a light mass as possible…
- Configuring a room with the perfect number of lights to ensure coverage…
- Handling involved import processes…
- Aligning actors
- Extending the editor!
Adding Flathead into the mix is one thing, but hooking it into the editor is something entirely different. I am currently in the prototyping phase of doing exactly that. Is there something you do repeatedly and you want to tie it to a button on the editor? That is exactly where I’m taking this.
And that is the tip of the iceberg.
For now, sit back and wait for the amazingness that is working with JS in UE4. Its been fun for me already and the API that is coming is an entirely different experience to what I worked with previously.
Send your questions or comments.