Million Tile Engine Beta Release

Combat mechanics you’ll probably have to build from scratch, as it’s the kind of thing that will be very specific to your game versus everyone else’s. 

For dialog you could try looking for examples in the code exchange, http://code.coronalabs.com, or ask for help here on the forums. Dialog is something just about everyone who’s built an RPG or Adventure game will have had to tackle. As an engine developer I haven’t looked into it much myself. Other than that I would check out Widget Candy, http://www.x-pressive.com/WidgetCandy_Corona/. For Zelda it may be overkill, but I imagine it could be quite useful for RPG’s with stats and equipment screens and the like. They also sell Particle Candy, which is pretty popular for handling effects, http://www.x-pressive.com.

IS it possible to build a map dynamically?  I noticed that all of the demos load maps rather than use anything dynamically.

I mainly bought this as a basis for a rogue-like game with dynamically generated levels, rather than loaded levels.

Is this possible?

Thanks!

Dyson, nice work on the map stitching!

I bought MTE in the early days and beside playing with your demos, I haven’t had time to start making a game with it yet unfortunately.

However the more time that goes by, the more I see MTE evolve. Can’t wait to eventually use it one day!

PS: what happened to the raycasting engine? Is that still in the works?

Hope you are keeping well!

Hello, I just purchased the library. Is there a nice way to add Move Pinch Zoom functionality to the map? I mean without having to implement it outside of it?

Ok, I’ve got my zoom pinch move class working with mte, but I’ve an issue, right now when you call cameraMove(deltaX, deltaY) on a isometric tileset, instead of panning the camera it just moves it across the tilesets diagonal directions. 

Is there a way I can achieve a panning movement of the camera on isometric map?

Sure, ookami, you can dynamically generate maps if you want. You’ll need to create an empty map template in tiled so MTE can import the tilesets you’ll be using. What you do is create a map file in Tiled, add your tilesets to it, and place one tile from each set somewhere on the map. In the corner, for example. You can remove or overwrite those tiles later. Ideally you should decide on the number of map layers you need ahead of time, and the width and height of the map. 

Once that is loaded you can fill the empty layers with data however you like. MTE does include a perlin noise function which you may find useful. I recommend checking out the Sledge sample project. It loads an empty map file and uses perlin noise to procedurally generate terrain.

Thanks for the Gremlin, I look forward to seeing what you come up with! The raycasting engine was a victim of limited time, I’m afraid. I’d love to keep working on it, but for now it’s relegated to smoldering away on the back burner.

https://gumroad.com/l/staO - $24.99 

 

 
MTE 0v980-19 - https://gumroad.com/l/staO/mtesale
 
Another week, another update! MTE 0v980-19 includes the first batch of sample code for the API functions moveCameraTo, moveSpriteTo, addSprite, setCamera, constrainCamera, getObject, updateTile, getSprites, loadMap, getTileWithProperty. These samples include multiple examples demonstrating proper use of the functions’ various parameters and arguments and their effect on the output. Each example is commented out- uncomment one example at a time to observe the output.
 
Working through these samples also provided ample opportunity to hunt down half a dozen bugs and squash them. Half a dozen minor problems have been corrected.
 
A new isometric conversion helper function is available: isoVector2(velX, velY). If you call mte.moveCamera(10, 0) on an isometric map, the camera will actually move diagonally towards the bottom right corner of the screen in order to follow the tile map. The isoVector2(velX, velY) function converts the desired screen vector into a map vector to produce correct results. Running your velX = 10, velY = 0 through isoVector2 will spit out (7.07, -7.07). Calling mte.moveCamera(7.07, -7.07) on an isometric map will move the camera ten pixels to the right. 
 
I will continue to add documentation to MTE, including many more pieces of sample code as well as written and video tutorials. Aside from documentation, over the next two weeks I will be investigating map stitching, a feature I mentioned months ago but which fell by the wayside. This functionality would allow developers to load additional maps and append them directly to the currently active map, in essence increasing the size and absorbing new Tiled properties. I did say I would not be adding anything to MTE, but this was a feature promised and forgotten and as such I consider it grandfathered in.
 
My interpretation of the MTE price surveys is that support exists for increasing the price of MTE. Increasing the price would also help to offset my expenses. Some people would also like to pay less, of course. I think a compromise is in order! For the next four days, until Midnight on Monday the 17th, MTE is 40% off! On April 2nd, however, the price is going up to $34.99. So, the time to buy is definitely now! 
 
Spread the word!
 
EDIT: I already got a couple comments about the April 1st price change date; No, this is not an early April Fools joke. I probably should have seen that coming. I’ve decided this would all be simpler if I just moved the date to April 2nd :stuck_out_tongue:

EDIT2: The sale has ended.

Ahhh I just bought without discount few hours ago :frowning: sad… well thanks for the helper function.

Yes, I saw that too, maxtrix2000. If you’d bought the engine a day or two ago, that’s one thing, but I can see how missing it by four hours would be annoying. I’m getting in touch with Gumroad now to see if we can arrange a partial refund.

I’ve had a lot of people report that their physics object sprites are getting caught on the edges where different map tiles meet. This video demonstrates what I believe to be the best solution to the problem so far- to bevel the edges of the physics body- which I first saw mentioned by rgreene_dub elsewhere in the MTE forum. 

I recommend watching this video on youtube.com, with the player enlarged, at 480p or above so that you can see the smaller details I talk about.

[media]https://www.youtube.com/watch?v=OMiQPYFJCWw[/media]

Do not worry, just keep up the good work. I almost don’t make a dime out of my games so I know how difficult is to get customers. No worries it’s a great work. 

:wink:

I appreciate that, maxtrix2000! Making money from this kind of thing has definitely proven… interesting. I did already send you a PM asking for more information, but you can just disregard that if you like.

Love that you’re doing the sample code sections, a great addition to the help guide.

Would you have any interest in teaming up on the raycasting engine project? I don’t like to hear that it is smouldering away. I want it burning dude! :slight_smile: If your interested, lets talk.

PS: I’m Danny, ex Corona labs. We spoke about this project previously if you recall :slight_smile:

Thanks for the reply Dyson.

Looking at some of the examples, I wondered if that might be the answer.  So, I will need to load a blank map, then procedurally fill it based dungeon that I generate.  I’m assuming if I want to use that 3D look - which is really cool by the way - that I’ll need to take that into account and fill multiple layers, correct?

Also, is it possible to change tilesheets on the fly?  All tilesheets would basically be identical other than the textures themselves, so a door in one tilesheet would match a door in all tilesheets.

Basically, when I generate a dungeon, I want to randomly choose the theme - cave, dungeon, lava, etc.  Is it possible to have one blank map and dynamically change the tilesheet, or will I need to have map for each tilesheet?

Thanks!

Dyson, an interesting question for you. With your insight into the maps and performance challenges, do you think it would be viable to have a live mini map of the entire tile set map (or subset) displayed in a corner of the screen over the existing map?  Not asking you to do anything on this, just wondered if it’s worth persuing.

It sounds to me like having two maps on top of each other so not sure whether it would even work and I imagine it would be like doubling up on the memory demands regardless of the fact that one tile might only be one pixel for instance.  I’ve seen very little about this around, the only solution I’ve seen so far was to save the display group as an image and then display that scaled down.  

I think you could make a mini map work if you put enough work into it. You’re right that using display objects for tiles would introduce an enormous performance demand regardless of their size on the screen. Reducing the resolution of the tileset won’t help any either. I’ve found that the vast majority of the performance impact comes from the object itself, not the size of the tile texture. 

You could draw the map to the screen and save it using display.capture or one of the related functions like you describe. The performance would be great- after you finish creating the mini map. Something to keep in mind, however, is that display.capture(), display.captureBounds() and so on only work on visible, onscreen content. A tile partially offscreen will be clipped. There’s also no convenient way to update the contents of the mini map that I can think of. You’d have to load the ENTIRE map onto the screen and then take a capture of it. This could take many tens of seconds for larger maps. If the map is larger than 100 x 100 tiles or so the device hardware will slow down and you could end up with memory warnings and device crashes. 

You could make a fluidly working minimap using a snapshot object with canvas mode set to discard. The way snapshots work would allow you to process the minimap in the background without interrupting gameplay and then display it when it’s complete, with only a minor performance impact during processing and minimum memory demands. Snapshots do require a Pro or Enterprise subscription though. There would be other limitations to keep in mind. You’re limited by the maximum texture size of the device, for example.

Hmm,  I wonder if a photoshop’d version of the tiled map (either whole or a sector) at say 1 pixel (or whatever scale) per tile was displayed as an image and then a sprite over it at one pixel to move linked to the tile position?

Hmmm… I never thought of that :stuck_out_tongue:  And Tiled can save an entire map as an image file already, so there’s that.

Yeah, you’d just need to make sure that the sprite over the map image (and the map itself) remained anchored in the same place when the camera is moved/dragged.  I’m guessing by moving it in a relative direction to create the illusion of being anchored.  It would also probably be prudent to only show it at a fixed zoom level (if used) so disappears when zoom is changed.  Either that or just have it as a separate screen to bring up.

MTE doesn’t move the Stage, so you could put it in a seperate display group in front of MTE’s master group.