Bob Thulfram's Forum Posts

  • And believe me - out of all the people on this boards or/and the internet - he was the nicest commentator that could come around. It could been worse.

    It could have been me.

    I hadn't encountered not-nice commentators on the Construct 2 forums before today. I've been away and I guess things have changed.

  • [quote:1yprb2ge]My blog post (so far) seems to be accurate

    In my opinion importing Kenney's tiles to a Sprite object (as an animation frames)

    is not only ignorant, but also totally useless. And it has nothing in common with Tilemap object.

    I thought that because this technique of importing tiles into a sprite object was okay. After all, it was one of the main features of Ashley's tutorial on Platforming. You might want to read this page https://www.scirra.com/tutorials/253/how-to-make-a-platform-game/page-2 written by Ashley. He clearly is using the Sprite object and pulling in tiles from the Tiles.png bitmap which is given free to all Construct 2 buyers.

    If this technique is not to be given to beginners, you should have Ashley remove it from the tutorials. It's clearly in the Tutorials -> Beginners -> Workflow section.

    And rest assured, I will change every thing in my post so that it only talks about sprite sheets, the sprite object, but if it is okay with you, I will call the pieces of art inside the sprite sheet, tiles, following Ashley's lead in the tutorial cited above.

    Or are you objecting to Kenney's tiles?

  • This forum has a lot of beginners and people who are new to game development, it would be ethical if you remove your blog link or amend the terminology as quick as possible. This can cause misleading idea on C2, I'm sure you don't want to do this to beginner, it can cause snowballing effect.

    Note on the "tile" terminology, I think it would be much helpful if you don't force the term that is accepted outside C2 onto the community, because it is fairly established here that "tile" is referenced to tile background and tilemaps. For "sprite", people would just call it animation or just sprite. Use of terminology would certainly change, if you found something confusing, you should be requesting for terminology amendment from Ashley, not to use them to make your point.

    I agree with shinkan, experienced users might laugh at the mishap, but misleading beginners is a bigger concern. This is a serious suggestion, I'm not joking.

    I'll change the terminology in my blog post.

  • You can write a web worker in your own plugin if you think there's something that could benefit from it, but they are best suited for relatively long running tasks (like pathfinding, where it is already used). Posting messages between workers has some overhead so if the amount of work is small, the communication overhead will be larger than the work to be done, negating the benefit of using a worker. In a game engine there's not much that qualifies for that, most tasks are small and synchronous.

    Export-time image deduplication will remove identical images between object types, but it won't reduce memory use in preview, and it's more sensible to use one object type for one set of images anyway. All frames of all animations are loaded regardless of if they are used, as described in memory usage.

    Ashley, thanks for the links!

    Web Workers are cool. The best use I've seen for them are in BrowserQuest (http://browserquest.mozilla.org/ a MMO in a browser, where Web Workers are used to draw nearby areas before you walk into them.

    I've been using the technique you wrote about in your tutorial on Platform Games https://www.scirra.com/tutorials/253/how-to-make-a-platform-game/page-2 where you load in a sprite sheet as an animation and then drop the sprite objects into your Layout but change the image by choosing an index into the animation array. So it sounds like if I import a sprite sheet with 50 images, and I only use 10 images in the Layout, I'll still be charged for the other 40? Sounds like I'll have to redo my sprite sheet (except that I bought it from someone so copying the art to a new image might be a chore).

    Ashley Has anything changed for AUDIO since your last blog post, almost a year ago? https://www.scirra.com/blog/ashley/2/the-never-ending-issue-of-dual-encoding. I'm a big fan of OGG and it sounds like AAC is better than MP3 (both in quality and licensing for streaming), but what happens if you try to use Construct 2 on Windows before Windows 7? And has the Windows 7 AAC encoder improved? I don't have any more copies of Windows XP, but I'm still running Vista on an old Alienware PC - Dell refuses to write Windows 7 drivers! I'll see how Construct 2 audio runs on Vista.

    I really appreciate your championing of OGG!

  • [quote:3kqa38w2]1. Web workers are already in C2. For example Pathfinding behavior is using it.

    Sounds like a good use. But there's no way to use workers in some other way on my own.

    [quote:3kqa38w2]You can modify original sprite sheet to contain only frames you want to import, or you can specify h and v cells to import everything and simply delete frames you don't need.

    Once a frame is deleted, it won't be in memory or part of the final export, right?

    [quote:3kqa38w2]As for the memory part. If sprite is present on the layout then every single animation frame will be loaded into a memory.

    So if your sprite have 5 animations and each animation have 10 frames, all of the 50 frames will be loaded.

    So if I have 10 copies of a sprite and each sprite has 10 frames (but only one animation), does that mean that 100 frames will be loaded into memory?

    I need to learn more about tilemaps!

    Thanks!

  • These may have been answered somewhere, but I only could find hints.

    1. Any chance of introducing Web Workers and multi-threading? Every browser supports it. Good for calculation-intensive games.

    2. When I was reading the How to Make a Platform Game tutorial by Ashley https://www.scirra.com/tutorials/253/how-to-make-a-platform-game/page-2, one of the comments made me think that if I import a sprite sheet but only use a few sprites from it, the while sheet goes into the game and takes up a lot of space. Is this correct? I kind of assumed that any sprites not used in a sprite sheet were discarded. I ask because I'm using some commercial sprite sheets that are quite large but I only want to use a dozen or so, not the several hundred in the sheet. Should I redraw the sprite sheet? If I just erase the sprites I don't want, will the blank parts of the sprite sheet still be pulled in? Or, if I go through the Animation frames window and delete any unwanted frames, my memory usage will be better?

  • > But what are the real advantages of the Tilemap object?

    >

    It will make dungeon generator much easy, you can manage your tiling by array, etc. This will also let you to provide user-modded mapping much easier. In short, it made what you did less painful and easier to maintain.

    > It looks more complicated.

    >

    It simplify what you did.

    > My experience with tile maps and sprite sheets is that the terms are often used interchangeably in the game industry but I could always be wrong.

    >

    In C2, sprite sheet is the compiled tile of sprite animation, I think.

    Well, I'm not at all interested in making dungeon generators or user-modded mapping.

    Simple is in the eye of the beholder.

    A sprite sheet is a compiled [set of] tiles [used for] sprite animation. But, Ashley has figured out a very cool hack to use this as a way to place tiles on a layer. He gives a good example of this use in his tutorial on platformers at https://www.scirra.com/tutorials/253/how-to-make-a-platform-game/page-2. This is a cool tutorial, although the Construct 2 user interface has changed slightly and the wording for importing a sprite has changed from "Importing a sprite strip" to "Import frames" followed by "From sprite strip...". And Ashley talks about tiles and tilesets and the tiles.png file.

    The tilemap object sounds useful for the things you recommend, but not for the simple hand-placed layouts I'm working with. But thanks for your answers and it gives me a clue about why I might or might not want to use the tilemap object.

  • shinkan I thought about your post a bit more and I think you are wrong. Not about the words "sprite sheet" and "tile map" (although the fact that "tiles" are in the sprite sheet is a bit confusing), but more for your unasked-for advice.

    While your advice might have been fine more than 50 years ago, the world today is changing way to fast to sit on the sidelines and study until I know enough. Everything is changing and people's terminology is likely to be a bit loose.

    Yes, there is a difference between sprite objects and tilemap objects. But the files that are pulled in aren't as clearly defined. The sprite sheet I used was a set of tiles and it looks just like a tile map you might see on the Tiled web site (except that Tiler tile maps also have XML data and the proper name for those tile maps is a TMX file.

    I don't think you were helpful in your criticism because you didn't say something like:

    [quote:2y6iq5ag]Use the term "sprite sheet" when referring to sprites and use "tile maps" when to the tilemap object. A sprite sheet is a simple art file but a tile map is ....

    A glossary would be really helpful. Maybe there is one. Maybe not. But if there is, it would have been helpful to point to it.

    Everything is moving very fast and names are changing. Most of the people who are working with Construct 2 seem to be aware of this and try to be helpful if someone doesn't understand some part of something. While I love Construct 2 a lot, I feel like it's isn't completely a finished product (I'm looking at you, Android and iOS) and I don't think it will be for a while because browser adoption of HTML5 is still a bit spotty and because HTML5 is a broad collection of technologies, some of those are baked, some are half-baked, and others are still a dream (MIDI, for example).

    The idea of me making one mistake and people laughing at me and not reading my blog is not appropriate in an age where things are changing very fast, and the rate of change is accellerating. People who are successful in cutting-edge technology learn to not be distressed by loose terminology and pay attention to the essentials. My blog post (so far) seems to be accurate and I think will be useful for people who are trying to adapt Construct 2 to a Firefox OS mobile-only UX.

    I'm sharing my blog posts with the Construct 2 audience in hopes that I'll find out if I've made any significant mistakes and I will change my post to say "sprite sheet" instead of "tile map". But my main focus is on using HTML5 to make games for the devices that support HTML5 (which so far is Firefox OS, which Amazon recently jumping on the bandwagon, Tizen falling off, and Microsoft marching in the wrong direction). If you read my other blog posts, you'll see that they are covering HTML5 in great detail. Everything I do is tested and works.

    I am reminded of a saying I heard many times when I worked for IBM (a long time ago). "There are three names for everything and every name has three meanings."

  • This is really great. Now I can apply all the logic I've been using in C and JavaScript!!!

    I looked for this kind of info in the docs but didn't find it. I think my next blog post will cover this.

    Thank you for all your help. Who'd a thunk it was "X"?

  • On Left button Clicked

    (subEvent)

    Player

    Platform has wall to right

    Player>Set Y to Player.Y -32

    Else

    Player Set X to Player.X +32

    That's what I'm missing. How do I insert an "Else"?

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • By the way, shinkan, I looked for a Construct 2 glossary and didn't find it. Is there a glossary?

    My experience with tile maps and sprite sheets is that the terms are often used interchangeably in the game industry but I could always be wrong.

  • The beauty of a blog is that you can revise your posts. If my terminology is wrong, I'll correct it. I can see that sprite sheet is the proper term. Unlike many others, I'm not worried a whole lot if people laugh at me. I've written more than 100 posts on Firefox OS programming and a few on using Construct 2 for making games for Firefox OS.

    Laugh all you want. I hope it makes you feel good. It doesn't make me feel bad and the result will be that the mistakes will get fixed. In general it sounds like my post works.

  • This is an interesting question. And I'm still trying to forget old games like this. (Wizardry and early Ultima dungeons and early Might and Magic.)

    Essentially you need to throw up some kind of sprites that cover the floor, ceiling, left and right walls, and the back wall, and then change it every time you move. You need arrays to determine what to display at each point. Whew!

    I don't think Construct 2 is going to do this easily. But you could dig around on eBay or other places and find books on how to modify (mod) Doom and other early 3-D games that would give you the same effects.

    Books like this:

    http://www.amazon.com/Focus-Programming-Quake-Arena-Development/dp/193184156X/ref=sr_1_3?s=books&ie=UTF8&qid=1412753776&sr=1-3&keywords=game+programming+mods

    http://www.amazon.com/Black-Halo-Mods-Stephen-Cawood/dp/0672328046/ref=sr_1_6?s=books&ie=UTF8&qid=1412753752&sr=1-6&keywords=game+programming+mods

    http://www.amazon.com/Half-Life-2-Mods-Dummies/dp/0470096314/ref=sr_1_7?s=books&ie=UTF8&qid=1412753752&sr=1-7&keywords=game+programming+mods

    Essentially you want to take a game engine for 3D games that someone else has created and modify the artwork and behaviors. There's a huge community of people who do this, but I don't know anything about them.

  • I'd like to see a good example of this also!

  • I may have my terminology wrong. I am inserting a tile map into a sprite and using the animation to determine which image will display. But I don't think I ever referred to a tilemap object. I'll add a note to my post, but I'm pretty vague on what the TileMap object does and why I want it.

    I see that there is a tilemap object which is defined at https://www.scirra.com/manual/172/tilemap. And another entry on Tilemap Bars at https://www.scirra.com/manual/171/tilemap-bar.

    For just putting down tiles, it seems like the method I used would be simple enough. But what are the real advantages of the Tilemap object? It looks more complicated.