Ignition V1.6 now up!

Monkey Forums/Monkey Programming/Ignition V1.6 now up!

Playniax(Posted 2013) [#1]
Hi,

Another update.

This update has some of the tutorials reconstructed. We have used your feedback and hopefully this improves the learning curve.

We will continue to improve the docs.

Also added an orientation 'simulator' (html5 and glfw) for testing purposes by pressing a key and more templates using the transitions module.

And:


* loader.monkey *

- Added logo object for easy screen setup.
- Loader screen has improved and more and better examples of how to use it.

* engine.monkey *

- Gui objects can now be used without a parent window or engine setup.
- Added OnTurn () method: Is called when orientation changes.
- Added swipe to iGuiScrollbox

* gfx.monkey *

- Added iLandscape () And iPortrait () To get orientataion of the device.


Bye


Rushino(Posted 2013) [#2]
Thanks Playniax for this.


Amon(Posted 2013) [#3]
Nice one, thanks!


CodeGit(Posted 2013) [#4]
Thanks


Why0Why(Posted 2013) [#5]
That sounds like an actual .1 release :P


Gary Leeds(Posted 2013) [#6]
Well worth the money, had a break from Monkey while I worked on other stuff but amazed at how far Monkey and Ignition have come in that time.

Now just to rewrite my starting base code with all the new features available :) and get something out there


Playniax(Posted 2013) [#7]
A very nice gentlemen by the name of Marco Lugo has improved the tile editor and I have uploaded it to our members area.

It can be found in the tools section.

Thanks Marco!

Screenshot


rIKmAN(Posted 2013) [#8]
Awesome, a few of my gripes were to do with the tile editor so looking forward to trying this, thanks! :)


rIKmAN(Posted 2013) [#9]
Not back on my main machine until the weekend, but just had a quick look at the new Tile Editor and a couple of issues I noticed are still there.

- If you click the tiles filename in the right hand listbox, then right click in the listbox, it crashes.

- You should be able to "paint" tiles. Clicking every single tile one by one quickly becomes a a chore, even in small maps.

To be honest, given that the Tile Editor is advertised on your site as a main feature I think it's too basic. I shouldn't have to be editing .ini files to do something like adding/removing layers from the map.

I think rather than spending time re-inventing the wheel with regards to a Map Editor, you should prioritise getting Tiled support into Ignition

Tiled has loads of features, so all we need is a stable, fast set of import functions that support all its features.

I do realise Diddy has this in, but one of the reasons I bought Ignition over using Diddy / fantomEngine was the Tilemap performance (smooth as silk) but that is kind of redundnant when the Map Editor makes creating those maps a laborious task.

I will have more time this weekend (hopefully) to get into the rest of the code, the Tile stuff is all I've looked at the moment.


Volker(Posted 2013) [#10]
getting Tiled support into Ignition
+1


werton(Posted 2013) [#11]
getting Tiled support into Ignition

+1


Tri|Ga|De(Posted 2013) [#12]
getting Tiled support into Ignition


+1


Playniax(Posted 2013) [#13]
Hi,

Okay, I just uploaded a new version of the tile editor. Just a small improvement, you can now 'paint' tiles. I was not able to have the editor crash like you said but I will have another look at this and keep improving!

I also picked up to work on my Tiled loader for Ignition but I am not sure how much time I need.

The original plan was to have a good tile engine (check) and a very basic tile editor until our new GUI system was finished. Seems I need to change some priorities :)

Just a question: How does Tiled solve the padding problem???


NoOdle(Posted 2013) [#14]
How does Tiled solve the padding problem???

Might have to be a bit more specific, what is the padding problem you are talking about?


Hotshot(Posted 2013) [#15]
Is there Playniax demo that I could try out and code them?


Playniax(Posted 2013) [#16]
@NoOdle:

For example: http://www.monkeycoder.co.nz/Community/posts.php?topic=1559#16072

@HotShot: What do you want to code?


rIKmAN(Posted 2013) [#17]
@Playniax
Okay, I just uploaded a new version of the tile editor. Just a small improvement, you can now 'paint' tiles. I was not able to have the editor crash like you said but I will have another look at this and keep improving

Painting tiles - so quick, yet so much better, awesome! :)

The crash is reproducible, at least for me:

1) Load the Tile Editor
2) Create a New Map, it will ask you to load a tileset.
3) Load any tileset, I used "extrial_1.png" that comes with Ignition
4) Left click the "extrial_1.png" file in the listbox on the right.
5) Right click in the empty space under the highlighted filename.
6) Crash (EXCEPTION_ACCESS_VIOLATION)

I also picked up to work on my Tiled loader for Ignition but I am not sure how much time I need.

The original plan was to have a good tile engine (check) and a very basic tile editor until our new GUI system was finished. Seems I need to change some priorities :)

As I said I don't think it would be worth your time trying to update to the Tile Editor to compete with something like Tiled.

I think you would be better off adding support for Tiled to Ignition and keeping the performance up to the standard of the current demos that don't use Tiled maps.

I say this as I am wondering if the reason the Ignition demos were silky smooth and the Diddy/fantomEngine stuttered for me was because they were using Tiled maps and you were not, maybe some extra overheads in the map format?

Thanks for the instant feedback as well - most impressive! :)


Rushino(Posted 2013) [#18]
The tile editor seem nicer now. :) Is there a way to set flags ?


Playniax(Posted 2013) [#19]
@rIKmAN: Thanks! I have a look at the crash.

@Rushino: Yes, right mouse on tile.


Playniax(Posted 2013) [#20]
@rIKmAN: I think that bug is fixed.


Playniax(Posted 2013) [#21]
Does diddy Tiled support only orthogonal or also isometric tile maps?


Rushino(Posted 2013) [#22]
i think it support only 2d maps but i am not sure.


NiGa Soft(Posted 2013) [#23]
Hi Playniax,

please be so kind and make also a Mac version of your tools.

Much thanks


Playniax(Posted 2013) [#24]
Hi,

The source code of all tools are included in the zip file. I was assuming that most monkey’s have BlitzMax but this is clearly not the case so for your convenience I have uploaded the Mac binaries also. It’s in the same tools zip file.

The tools are:

- Tile Editor V2.07
- GUI grid editior to make resizable buttons etc. without enlarging corners.
- TTF Font converter
- Collision mask editor or creator (pixel)

Have fun!


fsoft(Posted 2013) [#25]
getting Tiled support into Ignition


Expecially considering that your tile editor compiled for Linux, simply crashes. I know you tried hard to fix this, but it does not work yet and, at least for me, this is a show stopper.

Do not reinvent the wheel and go for some great Tiled import functions!

Ciao


Playniax(Posted 2013) [#26]
The tools should be stable on PC and Mac. I have not tested the tools on Linux but they should work because I wrote them in BlitzMax. With exception of the tile editor that keeps crashing on Linux because if I remember correctly MaxGui doesn't like multiple canvasses or something.

I have continued working on the loader for Tiled maps. I have the raw format down so I am on a good start I think but I don’t know what surprises can pop up. For starter it will only support orthogonal maps. Support for Tiled was scheduled for later but it seems there is a high demand.

By the way, you can use other 3rd party modules and classes together with Igniton like I mixed box2d and Ignition.

But we need to give the people what they want :)


Samah(Posted 2013) [#27]
@Playniax: Does diddy Tiled support only orthogonal or also isometric tile maps?

@Rushino: i think it support only 2d maps but i am not sure.

Diddy has supported isometric Tiled maps since pretty much day one.


Rushino(Posted 2013) [#28]
@Playniax To be honest orthogonal maps would be pretty much a good start. To be honest i don't think many will opt for isometrics tiles. (But its just an assumption)


Rushino(Posted 2013) [#29]
@Playniax I tried diddy implementation of Tiled but this doesn't work with the latest version plus.. it is way too linked to DiddyApp. (It use the game var) That would be nice to have such support in Ignition for now i have only 2 options. Either i use your editor.. which seem a bit limited to me or i make my own map format and editor.


Playniax(Posted 2013) [#30]
Hi,

I think therevills is fixing those problems at the moment. Don't forget, v67f is still not an official release.

That is one reason why we stay away from the native stuff.

I may have another option for you at the end of next week if you need orthogonal support. I have a raw version working and just need to finish and clean up.

And productive wise for what I have seen with tiled our tile editor can do almost everything what tiled can except for adding objects and image backgrounds. However this can be easliy done in code. And our tile editor includes the BlitzMax source so you can add your own stuff. That's why it's there. And our tile system has tile animation. I am not sure tiled has this. Maybe the latest one.

But yes, tiled is a much better editor and more easy to work with but I am working on support for it.

So hold on...

Bye


Rushino(Posted 2013) [#31]
Hi Playniax,

My needs are the fellowing.

1. Must have properties for the maps.
2. Must have properties for the tiles.
3. Must have animated tiles.
4. Must have objects support. (at some point)
5. Must be able to read map format from the server (Written in C#) and the client (Written in monkey which gonna support XNA, HTML5 and Win8 targets)

If i look at the solutions i have right now...

DIDDY

I think therevills have finished supporting v67f which is a good news but not my first concern. If i use that solution i have thoses three problems:

- Doesn't support the latest Tiled v0.9.0. (Not a big deal, i guess there not a lots of changes made to the map format)
- Have the engine coupled with the Tiled Loader. (Probably a bigger deal since i am not using the Diddy game engine but your)
- I still would haveto support it in the server and i don't know at which point its supported in the client. (Targets support?) There tons of libs too so maybe i could find one for C#.

On a positive note...
+ It do support animated tiles i guess but that is homemade since Tiled doesn't support animation.

Right now it crash when i try loading a map because i didn't used the 'game' var which is i guess something related to the diddy game engine.

MY SOLUTION (CUSTOM)

- I would have to make my own editor. (Reinventing the wheel)
- I would have to support the read/write map format.
+ This would be a very flexible solution which depend on nothing else than my own map format.

This seem an interesting solution. Its not really hard to do cause i started an editor, but that would make me waste a lots of time.

YOUR SOLUTION

- Lacks some features (Doesn't support resizing, area filling, etc.) but that really minor and as you said i could make my own changes but that bring me to point 2...
- This would cost me a full licence of BlitzMax to make the changes. (Which is 79$USD) I probably wouldn't use it for others purpose than this editor. (Who know?) Also this would force me to learn a bit blitzmax cause i am not used to non-oop languages.
+ I loved the editor to be honest. With the changes done by Marco Lugo this is really an improvement over the last version.

This seem also an interesting solution, would cost me 80$ + some times to make the changes *or* i could throw in some money to have a custom solution based on this solution.

I don't know which path to go, but to be honest your editor even if its not 'Tiled' is minimalist and i love that. There are lots of features from Tiled i don't need.

So the real question here is: What to do ? I would be interested to know how the map format work with the editor ? What are thoses numbered file ? file.0, file.1, etc.

This is not an easy decision but for now i think i will wait a bit to see your support for Tiled first.

Thanks!


Playniax(Posted 2013) [#32]
file.0, file.1, etc are the layers.

And the Ignition tile editor does support resizing of a map. Or do you mean something else? Also shifting the map so you can insert or append data.

Btw, I recommend BlitzMax to everyone. It is a great help to create tools.

For tiled support, it’s taking me a bit longer but I am getting there :o

To many things to do.

Next update of Ignition should have it or at least in an experimental phase.

Also coming is a virtual joypad, Font batch converter ttf to bitmap, 3 very HQ templates and more…


Rushino(Posted 2013) [#33]
Thanks Playniax! About the resizing i was meaning the windows.


NiGa Soft(Posted 2013) [#34]
Hi Playniax,

resizeable windows are a very very nice feature.

Is it possible to update your tile-editor with that
function?

Best regards.


Rushino(Posted 2013) [#35]
I agree.


Playniax(Posted 2013) [#36]
Okay, you can download v2.08 now with resizeable windows :)


Volker(Posted 2013) [#37]
Tony, I'm trying to create a rotated playfield with buttons and text.
Is this correct, that buttons are drawn rotated, but iGuiText
and iGuiTextfield are not using their field rotation when rendered?


Playniax(Posted 2013) [#38]
Yes, this is correct.

iGuiText and iGuiTextfield ignore the rotation variable of a gui objects.

Also when rotating a button you need to write your own MouseOver or TouchOver method because it detects a rectangle.

I wanted to add this stuff later. It's on my to do list :)

When do you need it?


Rushino(Posted 2013) [#39]
@Playniax thanks for the resizable editor!


qwerty(Posted 2013) [#40]
Hi, Playniax
Could you explain please why did you leave empty methods Height() and Width() of iLayerObject and then override them only for iLayerSprite, iLayerLine?
For example, I create rectangle and set its size 100x100. Then when I call rectangle.Width() it returns 0, but rectangle.width is equals 100.
I think it's not right to get value from the field directly or is it normal?

Because of this collision method doesn't work properly too without redefine, because there used Width() and Height(). And when 2 rectangle collided - nothing happen.

In general the question is, why iLayerObject has fields "height" and "width", but the appropriate methods to return these values are blank?
I'm sorry, If I do not understand something :)


Playniax(Posted 2013) [#41]
I have just uploaded v1.6b

This should fix this problem and some other minor bugs...


qwerty(Posted 2013) [#42]
@Playniax
Thank you, nice for iLayerRectangle, iLayerEllipse. But what about the class itself (iLayerObject)? You forgot about it?
Here is an example situation, I want to create complicated object which will consist of multiple sprites (iLayerSprite not so good for this itself, I want object with many iLayerSprite fields). I can create my class and extend iLayerObject, and use its width and height like a bounding box. But iLayerObject.Width() and iLayerObject.Height() will return 0. Because these methods still blank ;) And again collision method will not work properly.


Playniax(Posted 2013) [#43]
Hi,

iLayerObject is the base class for all layer objects and does nothing more. The others are extensions of it. That is why some methods are empty. A rectangle needs other width and height logic then say a sprite.

You can easily make a layersprite with multiple sprites yourself by extending iLayerSprite. You could use an array for this.

Your code could look something like this for example:
Class MySprite Extends iLayerSprite

	Field spriteList:iLayerSprite [8]

	Method New ()

		For Local i:Int = 0 Until spriteList.Length ()
		
			spriteList [i] = New iLayerSprite
			spriteList [i].AddLast (playfield)
			
			' do more stuff etc...

		Next

	End Method

	Method OnUpdate ()

		For Local s:iLayerSprite = Eachin spriteList
		
			spriteList [i].x = x
			spriteList [i].y = y

			' do more stuff etc...

		Next

	End Method

End Class

Not so hard :)

Also combining sprites could sometimes mean you have to override the Width and Height methods to get the right results and even adapt your own collision code.

For future updates I have ideas about having something like this build in but have not decided on the best way.

If you know exactly what you need I may be able to help you but it's better to email me.


qwerty(Posted 2013) [#44]
Thanks for example, but this is not exactly what I want ;)

Simply image about the technique


[monkeycode]
Class Man Extends iLayerObject
Field head:iLayerSprite
Field body:iLayerSprite
Field feet:iLayerSprite


Method New(_x:Float,_y:Float)
x = _x
y = _y
ResetSize(20,80)
head.y = _y-20
body.y = _y
feet.y = _y+20
' and other...
End

Method OnUpdate()
'Update self x and y
'Update all x and y of iLayerSprite fields
End

'And now very easy check collision with your standart collision method,
'without any additions, but iLayerObject.Width() return 0

Method CollisionMethod:Int (_layerObject1:iLayerObject, _layerObject2:iLayerObject)
If iRectangleRectangleCollide (_layerObject1.x, _layerObject1.y, _layerObject1.Width(),
_layerObject1.Height(), _layerObject2.x, _layerObject2.y, _layerObject2.Width(), _layerObject2.Height(), True)
Return True
End Method


End Class
[/monkeycode]

Yep, I can there redefine _layerObject.Width() to _layerObject.width but why if iLayerObject will can return self width when you simply define Width() for it ;)

Or I can use iLayerRectangle instead iLayerObject and set its alpha to 0.
But all of these are incorrect, I think. Not beautiful, not clear, not obvious ;)
It is a technique of using iLayerObject as a bounding box, but without the appropriate methods for returning its width and height, it does not work well.


Playniax(Posted 2013) [#45]
If I understand correctly you need the width and height of the bounding box, correct?

In this case you need just to add the Width () and Height () method to the Man class that returns the correct values.

You can also do something like this:

Class head Extends iLayerSprite
End Metod

Class body Extends iLayerSprite
End Metod

Class feet Extends iLayerSprite
End Metod

And add the collsionMethod for each class.


Rushino(Posted 2013) [#46]
Yeah that how i would have do it.. i will have similar stuff in my game since a tank have a seperate canon.


Playniax(Posted 2013) [#47]
I did some protyping on this solution but I have not decided on the best way. It would be nice to have some built-in support for this in the future though.


qwerty(Posted 2013) [#48]
D'oh, I completely forgot, that I can redefine Width() and Height() too in a extended class.

I do not want check collision with head, body or feet. Only with a bounding box which in this case is a iLayerObject (it is a rectangle already, if I understand correctly), that's why I importune you with its methods Width() and Height() ;)
If i can set its height and width with the default method (ResetSize), why I can not simply get them with Width() and Height(). That's it.

Ok, I redefine these methods
[monkeycode]
Method Height:Float ()
Return height * scaleY
End Method

Method Width:Float ()
Return width * scaleX
End Method
[/monkeycode]
It is correct? But they are similar to the standard methods of iLayerRectangle, so why do not put them to iLayerObject like a default too?
Probably I do not understand something ;)


Playniax(Posted 2013) [#49]
Simply because there are no common Width and Height calculations for all layer objects I left it empty. For example you can not simply return width field data for an image but you need to return the image width.


qwerty(Posted 2013) [#50]
@Playniax
Ok, thank you for your time and answers!


Playniax(Posted 2013) [#51]
Hi,

I managed to use therevills spriter importer and create an Ignition layer object out of it. Pretty easy to do and cool stuff but I can only compile the sprite importer on HTML5. I get lots of errors on the others. I check it out later but does anyone have the same experience? I am using the latest monkey...

Bye


rIKmAN(Posted 2013) [#52]
I have used the SpriterImporter by therevills and run the code on iOS without any problems, but that was using v66b.


Playniax(Posted 2013) [#53]
Okay, I was using an older version of the XML parser. Solved.