Not currently, but yes, of course, I will add those to my todo list for the next update. I’m assuming you would want the physics body to take on the shape of the object itself, rather than specifying a shape in it’s properties, but how would you prefer these to be displayed if at all? The simplest way would be to draw a line/polygon of a user-specified color, but I can see other interesting possibilities as well.
We were wondering how easy would it be to insert a multi-facing sprite into an isometric scene, and have them update to face in a particular direction as the scene rotates?
Something like this (excuse the character’s lack of clothing):
Hey Dyson, loving what you are doing here I have purchased the Million Tile Engine, but was wondering how I get the updated after purchase?
Thanks in advance.
Jerry
Hello Jerry,
I have Gumroad setup to send notification emails when a new update is available. The update email will contain the direct link to download the updated files from Gumroad.
I hope you enjoy working with MTE! As you can see a lot is going on and a lot of new features are in the works.
A little line of sight demonstration. Integrating Physics into MTE is proving a lot less complicated than I thought.
MTE does not currently support isometric maps. Once support is in place, doing what you describe would likely be a simple matter of looking up the current angle and setting the sprite sequence accordingly.
On an unrelated note, Corona Labs has stated that official Ouya support is “coming soon.” What a perfect excuse to buy the console! Now that I’ve finally tracked one down I’ll run some tests with the sample projects and see how they perform.
Just a quick question:
How long does it take MTE to load a large map initially?
- C
I guess that would depend on the device and your definition of large. Of course the simulator will load a map in no time flat, but as a more realistic example, an iPhone4 will load a map containing 120,000 tiles in 2 seconds. The iPad2 takes 1 second. Unfortunately I don’t have any of the newer devices to test, but I would expect performance to be better or the same.
These load time measurements won’t mean much for long. MTE’s ancestor game had functionality allowing maps to load more or less instantly regardless of size and device performance. It is just a matter of copying the code over and adapting it to MTE.
Hi, I noticed that when I was using MTE that my memory (ram) on the debug function keeps continuing to rise no matter what. This alarmed me because I thought I made a memory leak, however when I run the castle demo I get the same thing. Is this just the simulator having problems or is there something broken with the castle demo too? Maybe it has to do with the recently added physics?
EDIT: I noticed that after a minute or so the memory will drop down to the original value. Do you know what causes this steady rise and then drastic fall back?
The memory usage rise and decline is caused by the accumulation of Lua garbage and the eventual collection of it. I’m not sure if this is entirely avoidable, but I’ll look into it. There could be memory leaks here and there I have to plug up. A simple solution for the moment is to place the following line of code in your enterFrame event:
collectgarbage("step", 40)
You may have to adjust the step size depending on the size of your map, but 40 is sufficient to hold CastleDemo at about 5MB.
I think physics is going to be a lot of fun for people when it comes to platforming/sidescrolling games. The attached video shows current progress. As you can see it is coming together quite nicely save for a few hiccups here and there when the map wraps. Physics objects and map culling work more or less seamlessly with each other. Physics objects can be added manually as in the case of the red player rectangle, or you can set them up in Tiled as in the case of all those green balls rolling around.
[media]http://www.youtube.com/watch?v=JndryRr8EOU[/media]
The best part by far is how Physics simplifies coding for the user. The main.lua of the Platformer - Angled sample project included in previous MTE releases was nearly 500 lines long, involving multiple collision detection functions and user-defined collision points for every sprite. Using physics, the same sample as seen in the video is only 122 lines long. This is the entirety of the enterFrame event powering all that action:
--ENTERFRAME-------------------------------------------------------------------------- local gameLoop = function(event) player:applyForce(acc \* 2200, 0, player.x, player.y) mte.debug() mte.update() end
I anticipate releasing an update containing the first round of Physics support by the end of next week.
This is pretty freaking amazing. I’m using it right now (Bought an hour ago!)
This is good work my man, good work.
Android device performance - mmm not so hot. Kindle runs kinda crappy and lags, a galaxy sii is OK. I believe the S3 and phones on par with it will be fine, but really I think you’ll have to do some device detection to ensure only people with higher end phones can run your game at publish (and filter devices out from seeing it) on the google play store / amazon etc.
Good stuff, good good good good stuff…
-Nick
Dyson - I never cease to be amazed by your speed and expertise!
Regarding the Line-of-Sight demo you posted before - I’m assuming you’re using Corona’s/Box2D built in Raycast feature for that rather then using your own take on Bresenham’s Algorithm?
How can you get all sprites in a table? I need to get all sprites added to a certain layer with all their properties that were added through addSprite, is this possible?
Thanks SegaBoy and nicholasclayg! I always appreciate Kudos.
The Line-of-Sight demo was in fact using the rayCast function from Corona’s Box2D Physics API. It’s a lovely feature to work with. I know what you meant about working out the trigonometry manually, having done that for an as-yet-unseen project, so to be able to do it all in a single line is just fantastic!
I share your disappointment in Android performance, Nick. Unfortunately Android device performance has only recently begun to catch up with something as dated as an iPad 2. It is paradoxical because you can read all about the superior technical performance of XYZ Android SOC or GPU, only to see it fall so far behind in the real-world benchmarks.
Developers will definitely have to decide what kind of performance profile they have in mind and work from there. Device detection is the best way to go about it. The obvious performance variables to change would be FPS and blockScale. I’m thinking of tweaking MTE so that if you fade a layer to completely transparent the engine will remove it’s tiles from the display grid. It would give developers one more tool for tweaking the performance of their app. High end devices could be set up to run the game with all kinds of fancy parallax layers and what-not, while lower end devices could hide more and more of them to save on performance.
When you mentioned the Kindle, was that the Kindle Fire original non-HD, or the Kindle Fire HD?
What would be the easiest way to use tile properties to add a sprite? I want to use a tile in my tileset as a designated “spawner”. I did figure out a way to do it but it takes much too long to load. Id like to add in my own tile properties: dialog, imagesheet, character sequence, etc.
amazing video Dyson!
i am sure now this is the best engine in corona for platform games.
Thanks for your work
Txarly
There is currently no function for retrieving MTE’s sprite array lukestirk, but I will add this to the todo list for the next release.
That’s a good question, cjc83486, one I haven’t considered before. When you say spawner, are you looking to turn the tile into a sprite, or is the tile spawning many unrelated sprites as time passes, as an example? Is the spawner meant to be active when the tile is offscreen, or only when it becomes visible? What is the way you came up with to achieve your desired effect?
Spawning unrelated sprites. For me personally, I’d like the spawner to work on a level based basis. Thus if player.level == tile.level then spawn(). (I’d like to use this to both create characters at the load map phase and spawn monsters continually throughout gameplay.)
Perhaps the nicest functionality for mte users would be to make a function that collects all tiles with a user-made property.
For instance:
getTilesWithProperty(key,value,level,layer)
-the only required param would be key.
-the key and value refer to the key-value pair in Tiled for properties
This is a lot more useful than a spawn function… since a spawn function should be easy to make from the getTilesWithProperty function: getTilesWithProperty(character,monster,1) —> SpawnMonsters(onthosetiles)
Hi Dyson,
Just wanted to say that I found your engine yesterday and was instantly impressed. I am just now getting into full-on development with Corona SDK and I have been looking for something like this to implement. I am a .Net developer so these tools make my life so much easier.
Just made the purchase based on your dedication and how amazing this engine is. Keep up the good work my friend!
John