Skip to main content

News

Topic: The Wiki (Read 11565 times) previous topic - next topic

Re: The Wiki
Reply #15
I could imagine I was/am a mod on the wiki, but I don't think I am now, and I don't recall ever being one.

Re: The Wiki
Reply #16
Currently working on some Battle System stuff and trying to make a section of my tutorial more simple.

Is anyone free right now? Because I was wondering if I could get some peer review or criticism on what I have so far:

http://wiki.spheredev.org/Battle_System_Tutorial_by_Vakinox

  • Radnen
  • [*][*][*][*][*]
  • Senior Staff
  • Wise Warrior
Re: The Wiki
Reply #17
The tutorial is not that bad. There are some thing you wrote that could be done easier with better code organization and reuse, but on the whole you are solving the small problems. So, I say that's pretty good.

An error in the stat constructor:
Code: (javascript) [Select]

function Stats (Name, MaxHp) // MaxHp is not used. You meant to use 'Hp'.


As for general advice, I don't know exactly what to say; if it works for you then it's a decent tutorial. There are like thousands of ways to make a battle system. ;)
If you use code to help you code you can use less code to code. Also, I have approximate knowledge of many things.

Sphere-sfml here
Sphere Studio editor here

  • Mooch
  • [*][*][*]
Re: The Wiki
Reply #18
Looking at the current Tutorials, it's pretty much all RPG-related stuff, and there's quite a bit of redundancy. Four battle system tutorials? I understand everyone has their own style and advice, but if everyone's focusing on the same thing, it's less helpful than if there's people making totally different sorts of tuts.

Speaking as a programming and Sphere novice, I'd love to see many small, highly-specific tutorials that one could piece together to get a game off the ground, as opposed to larger game-specific tutorials ("here's how to make an RPG" "here's how to make a platformer"). Such tutorials might include...

• Sidescrolling Movement Tutorial
(Includes gravity and jumping)

• Autoscrolling Movement Tutorial
(ala a space shooter)

• Tile Movement Tutorial
(Don't forget to make it dynamic, to allow various tile sizes)

• Disabling 8-Way Movement Tutorial
(ala the original Legend of Zelda where you can only move in one direction at a time)

• Running Tutorial
(shows you how to add a run button to side-view or top-view games, and different kinds of running -- hold to run infinitely, press to get a short boost ala Secret of Mana, a boost meter ala Star Fox)

• Jumping Tutorial
(shows how to do double-jumping, wall-jumping, etc. in sidescrolling games)

• Shooting Tutorial
(shows how to make characters shoot simple bullets, either in the same direction the character is facing, or in a fixed direction, whether it be fixed by the game (you can only shoot up) or by button press (different buttons for shoot up/down/left/right) and how to have those bullets do things like destroy Entities)

• Map Changing Tutorial
(shows how to warp characters from map to map, including how to make a screen exiting/entering animation)

• Heart Meter Tutorial
(shows how to make a simple three-heart meter, along with how to make objects/events remove those hearts, how to make the game kick out to a game over screen when you lose all your hearts, items to increase your maximum hearts, items to refill your hearts, etc.)

• Death Hazards Tutorial
(shows how to add instant-kill tiles/objects to any sort of game and bottomless pits to sidescrolling games)

• Treasure Tutorial
(shows how to make pickups like gems/coins/etc. in games, where when you touch them, they give you some score or money or whatever)

• Powerups Tutorial
(shows how to make simple timed powerups such as double jump height, more powerful bullets, invincibility, etc.)

• Moving Platforms Tutorial
(shows how to make simple moving platforms for sidescrollers)

• Platformer Enemies Tutorial
(shows how to make some simple platformer game enemies, including enemies that mindlessly walk in a straight line, enemies that won't fall off platforms and enemies that jump, both those that jump constantly/randomly and those that jump when the player is nearby)

• Overhead Enemies Tutorial
(shows how to make basic enemies for an overhead game, including those that wander randomly, those that track the player's movement and those that shoot projectiles)

Since the Sphere editor is pretty esoteric, it'd probably also be helpful to have a basic "here's how to make X resources" tutorial. It's not at all obvious how to actually make tilesets (I had quite a bit of trouble figuring that one out), or use the different layers in the map editor. Things like that.

  • Radnen
  • [*][*][*][*][*]
  • Senior Staff
  • Wise Warrior
Re: The Wiki
Reply #19
That's a very good list, Mooch and I'll try to get on making tutorials. But I was thinking of making more general tutorials, but I'll tackle a few of these as well.

4 battle system tutorials are overmuch and technically are not all that great either. I keep saying this, but the problem with battle systems is that there is no one way of doing them. However, it's not bad to show various design patterns with relation to battle systems. I'll try to update mine and make it clearer and heck, try to finish it since it's still incomplete.
If you use code to help you code you can use less code to code. Also, I have approximate knowledge of many things.

Sphere-sfml here
Sphere Studio editor here

Re: The Wiki
Reply #20
Asking how to make a battle system is like asking how to make a game.

I think that a variety of battle system tutorials is useful, but the ones we have don't have huge variety.

  • Radnen
  • [*][*][*][*][*]
  • Senior Staff
  • Wise Warrior
Re: The Wiki
Reply #21
I just made an advanced tutorial on how to use Factories in JS to build items and enemies for you. It's very neat concept. If you are an intermediate user, no sweat, if you can learn how to use it that's good too. If you are a beginner you'll be woefully lost! http://wiki.spheredev.org/Factory_Tutorial. I made it since this is a *very* good design pattern for people making hardcore RPG games.

I'll now try to tackle some other tutorials for beginners. :)
If you use code to help you code you can use less code to code. Also, I have approximate knowledge of many things.

Sphere-sfml here
Sphere Studio editor here

  • N E O
  • [*][*][*][*][*]
  • Administrator
  • Senior Administrator
Re: The Wiki
Reply #22
That Factory system looks like it'd work great with a code generation utility like a Blockly app. Good stuff!

  • Mooch
  • [*][*][*]
Re: The Wiki
Reply #23

That's a very good list, Mooch and I'll try to get on making tutorials. But I was thinking of making more general tutorials, but I'll tackle a few of these as well.


The only reason I think splitting them up into smaller, more-specific tutorials is a good idea is because there'd be a lot of redundancy otherwise. Shooting bullets, for example -- that could be included in sidescrolling platformer, scrolling shooter and overhead game tutorials, and the code would pretty much be identical (unless the side-view ones include gravity, which could be part of the gravity tutorial).

Plus, more general tutorials (Platformer Tutorial, Shooter Tutorial, etc.) run the risk of becoming too flavored by their authors personal programming style and gameplay preferences. Hence all the RPG battle tutorials -- everyone's doing a lot of the same stuff (how to set up stats, how to do healing items, etc.) just in different ways. And I'm not sure any of the battle system tutorials would actually be helpful to any newbies. I mean, if you follow them, you could presumably produce exactly what the author did, but you'd likely still have no idea how to do other stuff on your own.

4 battle system tutorials are overmuch and technically are not all that great either. I keep saying this, but the problem with battle systems is that there is no one way of doing them. However, it's not bad to show various design patterns with relation to battle systems. I'll try to update mine and make it clearer and heck, try to finish it since it's still incomplete.


I think battle system tutorials are unnecessary if there are tutorials that teach core concepts well enough. I mean, what is a battle system, really?

Exiting the map engine and doing a custom graphics-blitting loop
Menus
Animation
Character stats
Returning to the map engine and applying the consequences of battle (loot, death, Exp, ...)

And each of those is totally worth their own theoretical, in-depth tutorial.


I just made an advanced tutorial on how to use Factories in JS to build items and enemies for you. It's very neat concept. If you are an intermediate user, no sweat, if you can learn how to use it that's good too. If you are a beginner you'll be woefully lost! http://wiki.spheredev.org/Factory_Tutorial. I made it since this is a *very* good design pattern for people making hardcore RPG games.

I'll now try to tackle some other tutorials for beginners. :)


Heh, that's exactly what I was talking about ^_^


That Factory system looks like it'd work great with a code generation utility like a Blockly app. Good stuff!


Ooh, never heard of Blockly before. Looks neat.

  • Radnen
  • [*][*][*][*][*]
  • Senior Staff
  • Wise Warrior
Re: The Wiki
Reply #24
Tile movement: http://wiki.spheredev.org/Tile_Movement

Edit:
Handling update and render scripts: http://wiki.spheredev.org/Handling_Multiple_Update_or_Render_Scripts

Mooch: It seems you want guidance on creating a platformer game in Sphere. :P I can't tackle all those tutorials on the subject since it's similar in scope to creating a battle system. Sometimes some systems are so complex you just gotta do it yourself with a bit of creativity. Now what I can do is make a foundation for how one would start doing that in Sphere. Then maybe a few things will begin to click.

Edit:
I just made the smallest tile movement system ever, it's actually from the tutorial above but minified in my own way.
Code: (javascript) [Select]

function TileSystem(input, sound) {
this.input = input; this.sound = sound;
BindKey(KEY_UP  , '', ''); BindKey(KEY_DOWN , '', '');
BindKey(KEY_LEFT, '', ''); BindKey(KEY_RIGHT, '', ''); }
TileSystem.prototype.update = function() {
if (!this.input || !IsCommandQueueEmpty(this.input)) return;
this.check(KEY_LEFT , COMMAND_MOVE_WEST , COMMAND_FACE_WEST , -1, 0, 16);
this.check(KEY_RIGHT, COMMAND_MOVE_EAST , COMMAND_FACE_EAST ,  1, 0, 16);
this.check(KEY_UP   , COMMAND_MOVE_NORTH, COMMAND_FACE_NORTH, 0, -1, 16);
this.check(KEY_DOWN , COMMAND_MOVE_SOUTH, COMMAND_FACE_SOUTH, 0,  1, 16); }
TileSystem.prototype.check = function(key, cmd, face, dx, dy, d) {
if (!IsKeyPressed(key)) return;
var x = GetPersonX(this.input) + dx*d, y = GetPersonY(this.input) + dy*d;
if (IsPersonObstructed(this.input, x, y)) { if (this.sound) this.sound.play(); cmd = COMMAND_ANIMATE; }
QueuePersonCommand(this.input, face, true);
for (; d; d--) QueuePersonCommand(this.input, cmd, false); }
  • Last Edit: March 04, 2014, 05:49:15 am by Radnen
If you use code to help you code you can use less code to code. Also, I have approximate knowledge of many things.

Sphere-sfml here
Sphere Studio editor here

  • N E O
  • [*][*][*][*][*]
  • Administrator
  • Senior Administrator
Re: The Wiki
Reply #25

I think battle system tutorials are unnecessary if there are tutorials that teach core concepts well enough. I mean, what is a battle system, really?

Exiting the map engine and doing a custom graphics-blitting loop
Menus
Animation
Character stats
Returning to the map engine and applying the consequences of battle (loot, death, Exp, ...)


Interestingly enough, my particular battle system tutorial is strictly about the skeleton...


And each of those is totally worth their own theoretical, in-depth tutorial.


...and my original intention was to eventually create in-depth theory-based tutorials about the bones. Same plan with my menu tutorial, which in hindsight meshes really well with the original plan.

The page Battle System Tutorial is a disambiguation page that links to any other battle system tutorials on the wiki. After the site reboot, I personally restored three such tutorials; if one actually took the time to read them AND pay attention to who wrote them, you'll see why instead of picking and choosing one specific BS tutorial as the be-all-end-all of BS tutorials for the wiki I restored these three. There were at least two others, both incomplete, and if those users want them restored we can have them restored, and yes Vakinox started one that is not yet complete nor properly categorized; I was waiting until he finished it so I can go in and clean up formatting and such. Sometimes there needs to be tutorials that actually have practical code such as his, and sometimes there need to be tutorials about the theory such as mine.

As previously mentioned, every user (theoretically) has their own style. The main problem, however, with such micro-oriented tutorials as a heart/health/life meter is that because they're often practical and (usually) contain theoretically working code people (especially new users) often take it as gospel, the be-all-end-all of life meters and whatnot, and as a result don't often see motivation to grow, expand their knowledge, learn how to independently solve a problem like integrating that specific life meter into their specific menu display or battle system or inventory/magic system, etc. Bruce/Lord English has done a great job so far with his Spectacles engine, which itself abstracts most of the hard parts of most of the common uses for Sphere, and a good majority of that was independent learning.

I would love for there to be a healthy mix of theoretical and practical tutorials for Sphere on the wiki. One of the two main reasons I haven't restored more myself is because some are quite outdated and/or user-specific (the other reason is my lack of consistent internet connection). While I do agree that multiple tutorials that basically parrot each other with only slight differences likely do more annoyance than good, things like this are the reason I originally had former Spherical owner rjt install on the old site a wiki that allows for categorization and templates (especially ones for setting off disambiguations).

  • Fat Cerberus
  • [*][*][*][*][*]
  • Global Moderator
  • miniSphere Developer
Re: The Wiki
Reply #26

Bruce/Lord English has done a great job so far with his Spectacles engine, which itself abstracts most of the hard parts of most of the common uses for Sphere, and a good majority of that was independent learning.


I take it that means you've looked at the Specs source, then? ;D

But yeah, I tried to make the engine itself as generic as possible, since the Spectacles Saga is ultimately going to be 3 games (hence the very flexible gamedef system), but you can only do so much to generalize things.  A battle system does, at the end of the day, have to be purpose-built for the game(s) it's featured in.  What I don't think people realize when they ask "How do I make a battle engine?" is that, for an RPG, the battle system IS the game.  Not merely a part of it.  All your party management menus, item menus, everything--they all revolve around what happens after the battle theme starts up.  Take the battle system away, and what you're left with is, at best, a collection of puzzles, or perhaps even a different medium entirely--film (with some pointless interactivity tacked on).

While there's certainly no shame in asking "How do I make a game?" (quite the contrary!), asking such a question means you have quite a long way to go.  Asking instead how to make a battle engine may seem like a much shorter order, but in reality, the two questions are one and the same.
miniSphere 5.2.12 - Cell compiler - SSj debugger - thread | on GitHub
For the sake of our continued health I very much hope that Fat Cerberus does not become skilled enough at whatever arcane art it would require to cause computers to spawn enourmous man eating pigs ~Rhuan

Re: The Wiki
Reply #27

• Disabling 8-Way Movement Tutorial
(ala the original Legend of Zelda where you can only move in one direction at a time)

• Running Tutorial
(shows you how to add a run button to side-view or top-view games, and different kinds of running -- hold to run infinitely, press to get a short boost ala Secret of Mana, a boost meter ala Star Fox)

• Heart Meter Tutorial
(shows how to make a simple three-heart meter, along with how to make objects/events remove those hearts, how to make the game kick out to a game over screen when you lose all your hearts, items to increase your maximum hearts, items to refill your hearts, etc.)


These sound fairly fun to make. I may just go ahead and try my hand at making some of them. The first is something I do just about every time I start making a game in Sphere, and the last is something I've done with and without the map engine many times.

  • N E O
  • [*][*][*][*][*]
  • Administrator
  • Senior Administrator
Re: The Wiki
Reply #28
I've been working on a "waypoint map" tutorial and I'll do a map change tutorial as well since I can also talk about transitions, having created a transitions library myself (NTrans) :D
  • Last Edit: March 08, 2014, 01:15:24 am by N E O

  • Rahkiin
  • [*][*][*]
Re: The Wiki
Reply #29
Not as a tutorial, but for making the wiki more complete, I might work on http://wiki.spheredev.org/Developing_a_Sphere-compatible_engine while I am working on my runtime.

I could also add a theoretical tutorial on my obstruction and animation system and on my portal system, to give the more advanced devvers some ideas for their games.

// Rahkiin