stemkoski's Forum Posts

  • As a brief update for the previous post: all 12 games covered in the book are now playable online at:

    https://itch.io/c/189504/game-development-with-construct-2.

    We're still looking for book reviewers, so if anyone would like a free copy for review purposes, please let me know!

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Hi everybody,

    I am one of the authors of the recently published book Game Development with Construct 2. It contains 12 complete game project examples with explanations, inspired by classic games and genres such as Asteroids, Frogger, Flappy Bird, Breakout, car racing games, tower defense games, PacMan, Super Mario Bros., and The Legend of Zelda (screenshots below). The material is based on my experience teaching high school and college students to create games with Construct for the past five years. Ashley wrote a foreword for the book, and Kyatric was the technical reviewer. It is available on Amazon (https://www.amazon.com/Game-Development-Construct-Design-Realization/dp/1484227832/) and Apress (http://www.apress.com/us/book/9781484227831), where you can download all the graphics/audio used in the book for free.

    The publishing company is willing to send out a limited number of free copies of the eBook (PDF format), in exchange for posting an honest review of the book on amazon.com or other websites. If anyone is interested in this offer, please send me an e-mail () stating your interest, and I will make arrangements with the publishers.

    Screenshots:

  • IntelRobert Thanks for the info and update!

  • Just released "Astrono Blast" on the Google Play store.

    https://play.google.com/store/apps/deta ... tronoblast

    Downloads and reviews appreciated!

  • A few months ago, I released my first game, Koala's Quest, on the Google Play Store, but I also host an HTML5 exported copy of it at: http://home.adelphi.edu/~stemkoski/KoalaQuest/

    Your goal is to explore each level, and collect as many coins as possible. To get a 5-star rating at the end of a level, you must collect *all* of the coins in that level in the quickest and most efficient route possible. There are three levels altogether for you to explore and master.

    All the art resources in this game are freely available (and highly recommended!) This game uses the most excellent graphics by Kenney Vleugels from http://opengameart.org/users/kenney , the platformer character Koala by Vicki Wenderlich from http://www.gameartguppy.com/ , and music by Kevin MacLeod from http://incompetech.com/

    If anyone has comments or feedback, I'd greatly appreciate hearing it!

  • Earlier this year, I released "Koala's Quest" on the Google Play Store:

    https://play.google.com/store/apps/deta ... koalaquest

    Just recently achieved the 50,000 downloads mark <img src="{SMILIES_PATH}/icon_e_biggrin.gif" alt=":D" title="Very Happy">

  • Wow that really are a lot of projects.

    Why don´t you make a little website for you and your students to publish them all?

    My long-term plan is for them to create accounts here at scirra.com and request that they upload their games to the Scirra arcade.

  • After having taught dozens of students how to use Construct over the past few years, there have always been a few conditions/events that are possible to implement with a combination of the current available ones, but perhaps that would be worthy of their own conditions/events? For pedagogical reasons, simpler is better, especially for students just starting out.

    For example, the Sprite object has the action "Move at Angle". This action could be accomplished using a combination of the "Set Angle" and "Move Forward" actions (followed by restoring the original angle if necessary), but having the "Move at Angle" event available streamlines the process nicely and makes the software more approachable and user-friendly for newcomers.

    So, without further ado, a few features that (in my humble opinion) would be beneficial to include (from an educational standpoint):

    1. In some of the movement behaviors (8-direction, Bullet, Platform), there is a condition called "Compare Speed". It would be great to have analogous conditions available for comparing some of the other values associated to the behaviors: for 8-Direction and Bullet "Compare angle of motion", for 8-Direction and Platform "Compare VectorX" and "Compare VectorY", etc. The particular use cases I'm thinking of is for switching between sprite animations when characters move in different ways, and it feels unintuitive to need to do this using the System event to Compare Two Values. (Especially after students get used to using conditions like "Compare X" or "Compare Speed").

    2. In the Properties pane for objects with Bullet behavior, I have found that students spend a lot of time looking for a way to set angle of motion (since you can set the speed of a bullet object here, it seems natural that one should be able to set a bullet's angle of motion as well).

    3. There are a few mathematical functions, namely the distance function and the angle function, each of which take in four parameters (two pairs of x,y coordinates). I frequently have students calculate the distance from one sprite to another or angle from one sprite to another, and so students often type things like:

    distance(Sprite1.X, Sprite1.Y, Sprite2.X, Sprite2.Y)

    or

    angle(Sprite1.X, Sprite1.Y, Sprite2.X, Sprite2.Y)

    Would it be possible to implement "abbreviated" versions of these functions that could be called as follows?

    objectDistance( Sprite1, Sprite2 )

    or

    objectAngle( Sprite1, Sprite2 )

    (The names aren't necessarily perfect, but they get the point across.)

    4. In terms of transitioning between Construct 2 and a traditional programming language (such as Java), one of the most important concepts is loops. The for-each loop an implemented in Construct is beautiful, but having come from a traditional computer science background, accessing the index variable in a For loop in Construct 2 seems "clunky", needing to access the value of the loop variable using "loopindex". What I would propose would be introducing a new condition: For Variable. When setting up this condition, you choose a pre-existing global or local variable (in the same way you choose an object in the For Each loop), and enter a starting index and an ending index (in the same way you enter them when setting up a For loop), and the value of the variable changes as expected.

    Well, these are my thoughts and hopes. Here's hoping Ashley is reading

  • Skragaronomy Thanks for posting this detailed description of your course! (Yes, it is quite useful.) You inspired me to post a similarly detailed description of a course I just finished teaching.

    Just curious, what is the background of your students when they start this course? (In particular, what year do students typically take this course, and are there any prerequisite courses required?)

  • Valerien Thanks for writing these, I especially enjoyed reading your tutorial about callbacks. Keep up the great work!

  • Greetings all,

    First, a bit of background: I'm a college professor in New York, and since 2012 I've been teaching a college course in game programming, using Construct for the first half (and switching to Java for the second half). Starting next year, I'll be splitting this course into two separate courses (as they should be), one purely based around Construct (aimed at an audience with no programming experience) and one for students who have already taken a semester course "Introduction to Computer Programming" in a language such as Java. I've also been teaching summer camps for high school students interested in game programming, basically a condensed version of the college (Construct-only) course I've been developing and tweaking.

    We just finished our 2014 summer camp a few days ago. This summer, the students worked on a total of 19 different projects, some projects were fairly polished games, others simply introduced the mechanics of advanced objects/behaviors (such as the Multiplayer object). For anyone who might be interested in designing a similar program, I've included the progression of games we worked on below. If anyone has thoughts on something I've left out, or ideas for improvements, please do post a reply!

    1. Collection game. A turtle (8-direction, bound to layout behaviors) moves around the screen collecting starfish; score is stored (global variable) and displayed on screen (text object).

    2. Breakout. (bullet and solid behaviors, paddle movement controlled by mouse). Powerups (multiball, paddle size, ball speed) included in second iteration of project.

    3. Asteroids. (wrap behavior; basic animations for explosions). Enemy UFO fires lasers at you while moving across screen in second iteration of project.

    4. Top-down airplane shoot-em-up game. Uses invisible sprites with instance variables as "waypoints" for more finely controlled enemy movement patterns. Also uses a scrolling background for the illusion of continuously flying over an ocean.

    5. Missile Command. Students were challenged to recreate a version of this game on their own, with no guidance from me, and to customize the look and feel of the game with graphics they found online.

    6. Frogger. Cars and logs were looped using the wrap behavior. Having the frog be able to move while riding on top of drifting logs was the main challenge here.

    7. Car Racing. Introduced the car-steering behavior, designed the racetrack using snap-to-grid and a set of individual road-tile sprites; separate wall objects handled the collisions. (Considered the tilemap object, but chose to cover that in a later project).

    8. Flappy Bird. Very limited introduction to the platform behavior -- in this game we disable default controls and mainly take advantage of Platform's implementation of gravity and VectorY for "flapping" up into the air. Also introduces the idea of "procedural content generation", positioning pipes off-screen at random heights that scroll across as the game continues.

    9. Air Hockey. Introduced the physics behavior, talked about balanced enemy A.I., and introduced the Sine behavior to help the enemy paddle strike the puck more convincingly.

    Intermission. Demonstrated how to use the audio object and include sound effects. Demonstrated how to switch between multiple layouts, and created a main menu screen, instructions screen, and credits screen. At this point, students revisted an earlier project and implemented these features.

    10. The "mana" challenge. A mini game-jam, students were asked to design a game (via a provided game design document) that incorporates the theme of "mana" (e.g. "mystic energy") in some way. Many students tried to teach themselves the platform behavior at this time, with mixed levels of success.

    11. Bubble Bobble. Thorough introduction to the Platform behavior (and included Jump-Thru); also used all the different platform animation triggers. Introduced the idea of "base sprite" and pinning animated sprite on top of that (to avoid collision polygon / imagepoint problems, for example). In this game, its all about the bubbles -- dinosaurs blow bubbles depending on the direction they are facing -- we used bullet behaviors to get bullets to decelerate and then slowly drift towards a central location. Enemies patrol left-to-right and also possess multiple animations.

    12. Donkey Kong. Allows for reinforcement of Platform topics from previous project; also includes ladders, a challenge to implement nicely in platform games.

    13. Super Mario Bros (classic, level 1-1). Another classic platform game, where the new challenges include breaking bricks only when Mario's head collides with them, and stomping enemies only when Mario's feet collide with them. This requires repeated use of the pin object for multiple invisible sprites that perform the corresponding collision tests.

    14. PacMan. This included grid-based movement, and a lot of discussion about enemy A.I. -- we implemented two ghosts, each of which follows PacMan around a maze in a different way (one used horizontal priority, the other used vertical priority).

    15. A Legend-of-Zelda themed sword-fighting game. Here, Link had eight animations which had to be managed and toggled correctly, depending on his angle of motion and whether or not he was swinging his sword. We continued our discussion of A.I., introducing the idea of state machines. Enemy soldiers were in one of three states: patrolling between 2 points (same waypoint technique as mentioned above), chasing Link if they saw him (Line of Sight behavior), and retreating back to a patrol waypoint (Pathfinding behavior) when they lost sight. Also included a "knock-back" movement (using the Bullet behavior and negative acceleration) for when characters were hit.

    16. Another game-jam style project, where the students worked in groups. The theme was "speed". One group created an infinite-runner style game, another group did a sort of 2D side-scrolling "Temple-Run" style game.

    17. Rogue-like dungeon exploration. This was some advanced procedural content generation, creating a system of caves containing collectible items, hallways linking the caves, and enemies that chase you if you got too close. Basically implemented the algorithm from the article at http://gamedevelopment.tutsplus.com/tut ... edev-10099 .

    18. Introduction to the Multiplayer object. The students created a project that has two sprites with 8-direction behavior, one controlled by the host, the other controlled by the peer.

    19. As a "final challenge", I gave the students a link to an online version of Bomberman, asked them to play the game and figure out the mechanics, and then recreate this game in Construct in an afternoon. They were very successful.

    During the month of August, I hope to post some tutorials about features in some of these projects; if there are any particular requests from this list, please let me know. And as mentioned above, suggestions and ideas about this syllabus of topics are most welcome!

  • Greetings,

    I have a particularly simple way to implement what you're looking for, including collisions. I just posted a tutorial about it here at:

    http://www.scirra.com/tutorials/1094/gr ... d-movement

    Hope this helps!

  • I've recently switched from using CocoonJS to IntelXDK for exporting to Android, convinced by Ashley's posts

    https://www.scirra.com/blog/133/introducing-crosswalk-the-new-way-to-publish-to-android

    and

    https://www.scirra.com/tutorials/809/how-to-export-to-android-with-crosswalk

    I did get stuck for a while, trying to preview with the Intel XDK emulator gave me an "endless white screen" and didn't load my project at all. In the Intel XDK forums, others seemed to be having a similar issue after the update to version 505. The fix was obvious in retrospect (as many fixes are?): when a new project is created, the Intel XDK creates an index.html file in a directory called "www"; the default settings use this as the source directory. To fix this: after exporting your Construct2 project, in the Intel XDK window, click the "XDK Projects" icon/text in the top-left of the window, and change the source directory so that it uses the directory that contains the index.html file generated by Construct2 instead.

    Just thought I'd share this story here in case anyone else ran into similar difficulties.

  • Just retweeted, fingers crossed...

  • I'm really looking forward to the shaders -- special effects are key.