In Development: Dusk 1.0

Hey guys! I’d just like to alert everyone that I will be starting college on Wednesday. The first couple weeks will probably be super, super busy so I might not even be able to check the forums at all. Once I get settled into college, Dusk 1.0 will be picked back up, I promise. Thanks for all of your support!

  • Caleb

I know, I know… It’s May 3rd and the engine still isn’t out. The engine is going very, very well, but I’ve had a couple of questions about the actual Corona-side plugin development and getting it to users for testing. As I mentioned, I’ve been in touch with Corona’s Brent, but the engineering side has yet to get back to me about the technical questions as of this post. I don’t want people to start feeling like this is vapourware - the coding is in excellent shape. I’m using it actively in my personal very-much-Dusk-intensive metroidvania, and it’s very stable so far. There have been a couple of delays in development since February when I announced this project, but overall it’s in good shape and is definitely getting released… at some point… I think.

Now for some cold hard facts about Dusk 1.0:

Firstly, as I think I’ve mentioned before, I actually rewrote the entire library nearly from scratch for better code practices, lower memory use, and better Lua OOP. This was actually a huge amount of work, but all the end user will see is: all the map and layer methods use colons. The overall result, however, is that the engine is lighter in memory footprint and maps load a tad faster.

Secondly, again as I’ve mentioned before, I’ve changed a lot of function names to line up more with Corona’s style. Most of these changes are either purely cosmetic (map:setTrackingLevel() -> map:setCameraTrackingLevel()), but a couple of them actually change the functionality a bit (the iterators, for example). Dusk’s core ideas and most semantics remain intact.

Thirdly, I’ve pushed quite a bit on being more “unobtrusively feature-filled”. Dusk now supports some more of Tiled’s minor features like the collision editor (alas, no animation editor yet) and now fully supports tile rotating and flipping. In addition to Tiled features, some of Dusk has been invisibly improved. For example, if you set a sprite tile’s (with “!isSprite!” property) frame to something, it will keep the frame you set when it’s erased and re-drawn rather than resetting to what Tiled originally displayed it as. There are a number of these minor features that I’ve implemented to improve Dusk’s general well-rounditude.

Lastly, documentation. Textual documentation is coming, but in the meantime I’m hard at work on a series of four- to five-minute-long screencasts demonstrating various features of Dusk and how to use them in your code. Examples of the topics I cover are the basics, Box2D physics and the collision editor, the camera system, general know-how like map structure and coordinate conversions, etc. If you have a topic you’d like me to add to this list, feel free to let me know and, if it feels like something everyone could benefit from, I’ll definitely do one on it.

Now that I’ve buttered everyone up with good news :D… let me add that I and my family are going to be on vacation until the 17th. We’ll be leaving on Friday. Hopefully this won’t be too big a deal for people. Again, the current version of Dusk is extremely stable and very feature-rich.

  • Caleb

Hello Caleb,

Thanks again for your time and effort making this amazing library :wink:

I’ve been a user of the previous version of Dusk for a few months now and, as the rest of the Corona community,

I’m very grateful you shared your library with us all !

I was about to post a new question on the forum about it when I saw your thread regarding the new 1.0 version.

I’m currently testing it and wanted to share some of my feedback so far:

  • I tried using the new engine with maps generated by latest ‘Tiled’ version (0.17) but ran into some nasty crash messages.

It seems that some properties names has changed inside the ‘json’ files between ‘Tiled’ versions.

Thought it might interest the rest of the community too  :stuck_out_tongue:

Regarding interesting features you may add to the library, I thought about this 2 so far:

  • Version number (in source code) and possibly a ‘getVersion()’ function (so we can track updates)

  • A ‘pause/resume sprites’ function (or a table of instanciated sprites) so we can manage game screen pause

(In fact I thought about the same request for your ‘CBE’ library too :slight_smile:

Hope this help.

Thanks again for your time and dedication.

And good luck for your fresh man year at college !

Regards

GoG

Hey guys! Last call for beta testing! I have a number of people who’ve signed on, but I can always do with more. I’ll be releasing the first beta test version sometime next week for sure.

  • Caleb

Can I jump the beta boat?

Please add me to the beta if not too late, thanks.

I do look forward to test 1.0, but I am not sure why you decide to serve it as a plugin instead of putting it up at github, that way you can find as many testers as possible. 

@bitinn: I’m going the plugin route for several reasons. For one thing, plugins are easy to keep updated. Just require the plugin and you automatically get the most recent version. For another, I’ve been in contact with the Corona team, and we don’t know yet but Dusk may possibly get further integrated with Corona in the future. Turning Dusk into a plugin is the first step. Plugins are also very clean for developers. After you put your entry in the plugin registry, you don’t ever have to worry about the plugin again. The directory remains clean and you get your functionality invisibly, again along with automatic updates.

To clarify, Dusk  will remain on GitHub; nothing will change on that front (save the file structure). You’ll still technically be able to download the engine and use it that way. Also, bleeding-edge updates will be pushed to that front, so, if you want, you’ll be able to use the newest features by dropping the engine into your project. Each stable update will be pushed to the plugin version, thereby assuring anyone using the plugin that they’re using the most recent stable feature set.

I’m not doing an open beta with Dusk 1.0 because I’d rather be in personal contact with each tester. That way, I can get opinions on different features as well as bug reports directly and work through issues with people a scaled-down way. Publicly releasing Dusk 1.0 for beta as the comparatively untested engine that it currently is would have the potential to be overwhelming and could allow bugs or concerns to sneak by unknown.

@Everyone Else: Today or tomorrow will be the big day. For everyone who signed up for beta testing, start your testing engines! I’ll be sending a PM to each of you with a link to the engine, so watch your messenger.

  • Caleb

Hi @Caleb P

Just read info from blog, please count on me!

Hey all; this is just a quick update to let everyone know how testing is going. I sent the engine out to quite a few people, and they’ve been testing it for almost two weeks. There have been no real bugs yet; most of the issues people have had have been with transferring from previous versions to 1.0.

Textual documentation is still coming, but it may not be complete by the engine’s public release. I’ve been doing a serious code focus on my personal metroidvania and have made incredible progress in it, but that means other (icky) stuff like Dusk textual documentation hasn’t been developing quite as well (read: code is fun but docs are not). My video tutorial series is also in the works, though, and, though I don’t have a very good tutorial voice (There’s nothing like listening to a recording of yourself for building low self-esteem. Until I started this tutorial series, I didn’t even know I had a slight lisp or that I sound like I’m perpetually pursing my lips when I talk.), the series should be very helpful for beginning Dusk users.

  • Caleb

Hello, all! I’ll keep things short. You probably won’t believe it, but there’s a public version of Dusk 1.0 up on GitHub right now.

Full docs aren’t here yet, and the video tutorials aren’t complete by any means yet, but you’re welcome to get it and try it out. I’ve published it because I’ve kind of reached a plateau with 1.0’s development and my perfectionism (it’s gotta be completely perfect!) and I’m afraid 1.0 will never actually be published if I don’t publish it now.

The plugin format is coming soon; I’ve been in contact with Corona and it’s in the workings, I believe.

  • Caleb

For those that are less familiar with GitHub, here is a direct link to the 1.0 branch of Dusk:

https://github.com/GymbylCoding/Dusk-Engine/tree/public-1.0

Enjoy everyone! And thank you Caleb!

Pardon me; I completely forgot to add that. Thanks for the link @jerejigga!

  • Caleb

Hi guys,

I’ve decided to try the Dusk Engine for one of my new projects. However, I can’t find any documentation or tutorials for it.

I managed to load a map from Tiled but that’s all. I have no idea how to call the other functionalities.

Do you guys have any idea if the Dusk engine will soon be added as a Corona plugin and whether there will be any documentation for it?

Thanks in advance,

Happy coding!

Dusk 1.0 will eventually be released as a Corona plugin with full documentation, guides, and even a video tutorial series that I’m plugging away on. Right now, you can find what docs there are at http://rawgit.com/GymbylCoding/Dusk-Engine/master/docs/.

  • Caleb

Hey guys! I’d just like to alert everyone that I will be starting college on Wednesday. The first couple weeks will probably be super, super busy so I might not even be able to check the forums at all. Once I get settled into college, Dusk 1.0 will be picked back up, I promise. Thanks for all of your support!

  • Caleb

Hello Caleb,

Thanks again for your time and effort making this amazing library :wink:

I’ve been a user of the previous version of Dusk for a few months now and, as the rest of the Corona community,

I’m very grateful you shared your library with us all !

I was about to post a new question on the forum about it when I saw your thread regarding the new 1.0 version.

I’m currently testing it and wanted to share some of my feedback so far:

  • I tried using the new engine with maps generated by latest ‘Tiled’ version (0.17) but ran into some nasty crash messages.

It seems that some properties names has changed inside the ‘json’ files between ‘Tiled’ versions.

Thought it might interest the rest of the community too  :stuck_out_tongue:

Regarding interesting features you may add to the library, I thought about this 2 so far:

  • Version number (in source code) and possibly a ‘getVersion()’ function (so we can track updates)

  • A ‘pause/resume sprites’ function (or a table of instanciated sprites) so we can manage game screen pause

(In fact I thought about the same request for your ‘CBE’ library too :slight_smile:

Hope this help.

Thanks again for your time and dedication.

And good luck for your fresh man year at college !

Regards

GoG