[log]Since 8th August 2014: A-Engine v0.1
+3
bashscrazy
Rhino.Freak
A-MAN
7 posters
Page 1 of 1
[log]Since 8th August 2014: A-Engine v0.1
V0.1 is coming along nicely. I know I haven't documented what the current is capable of yet, but I will keep updating here from now on as to not face trouble later on.
- 2014-08-08:
--New 3 [tip=in-frame]in-frame tags are tags which are only usable in either a frame or a sequence, outside any frame component[/tip] tags:- Code:
[f=0] #example frame
red=255 green=255 blue=255 alpha=255 #default values
[/f]
"red=" in combination with "green=" and "blue" sets a color filter on your sprite.
e.g: >> red=255 blue=0 green=0 alpha=200 >>
Related switches: |BARSIGNORERGBA| => use that if you don't want your HP, SP and RP bars to be affected by the color filter.
Uses: For ANY reason you might want to tint your sprite's color for. I personally found myself using it for burning effects and to color selection highlights depending on the player number for the selection menu.
-New [tip=in-sequence]in-sequence tags are tags which are only usable in a sequence; outside any frame component.[/tip] tag:- Code:
[s=0->5] #an example sequence consisting of 6 frames
img=0 #old
sequence_step=1 #default value
[/s]
- 2014-09-13:
--New feature: Camera Zooming; You can now have the camera zoom in and out according to how far the targets are. More details on this will be provided in the next log together with the new Stage tags.
--You can finally have comments in the "{info}{/info}" part of the .A file. And you can now put arithmetic expressions as parameters for the tags there, and they will be evaluated.
--New 2 [tip=in-file tag]in-file tags are an enclosing pair where instructions inside are only run at specific conditions. These are usually placed at the beginning of the .A files.[/tip]s:
-{main_loop}{/main_loop}: Instructions found inside the pair will be run every 1/FPSth of a second; every frame.- Code:
{info} #in_file "info" tag
ALLOCATE_FRAMES=1000 #1000 frames are allocated
ALLOCATE_IMGS=15 # 15 images can be loaded
ALLOCATE_SNDS=20 # 20 sounds can be loaded
NAME= Luffy
MAXPTS_HP_SP_RP= 500,500,500
INITPTS_HP_SP_RP= 500, 500, 500
WALKSPD_X_Z= 2, 1
...etc ..etc
{/info}
{main_loop}
add_rp=1-(@currhp@/@maxhp@) #rp will be regenerated every frame
set_reg=$t$, $t$+1 #the register $t$ will be incremented every frame (this can be made to a timer)
set_reg=$t$, ~$t$>60?0:$t$; #if $t$ is greater than 60, it is set back to 0. Else, it is just assigned to itself.
add_sp=1.5 #1.5 stamina pts are regenerated every frame
{/main_loop}
# Frames go here
[f=0]
img=1 center=0,0 delay=3 goto=1
[/f]
[f=1]
img=2 center=0,0 delay=3 goto=2
[/f]
#etcetc
"set_reg=x,y" sets the register x the value y.
"add_hp=x" adds up the object's health pts by x
"add_sp=x" adds up the object's stamina pts by x
"add_rp=x" adds up the object's rage pts by x
"add_bp=x" adds up the object's bonus pts by x (an extra bar I put just if someone ever needs it)
"add_dp=x" adds up the object's defense pts by x
"add_kp=x" adds up the object's knock pts by x
-{init_regs}{/init_regs}: "set_reg=" instructions found inside the tag will only be run when the object is first called.- Code:
{info}
etc.. etc
{/info}
{main_loop}
etc.. etc
{/main_loop}
{init_regs}
set_reg=$a$, 1000
set_reg=$q$, 500
{/init_regs}
# Frames go here
[f=0]
img=1 center=0,0 delay=3 goto=1
[/f]
[f=1]
img=2 center=0,0 delay=3 goto=2
[/f]
#etc etc
--[snd][/snd] [tip=info tag]found within the {info}{/info} in-file tag[/tip]: Loads sound files and assign them an id.- Code:
{info}
NAME=Character
ALLOCATE_IMGS=2 #prepare memory for 2 image files to be loaded.
ALLOCATE_SNDS=2 #prepare memory for 2 sound files to be loaded.
..etc..etc
[img]
sprite\sys\character0.png, 79, 79, 10, 7, 0x000000 #0-69
sprite\sys\character1.png, 79, 79, 10, 7, 0x000000 #70-139
[/img]
[snd]
data\sound\sound0.wav #id 0
data\sound\sound1.wav #id 1
[/snd]
{/info}
It's only parameter is the directory. Ids will be give according to the order they were loaded just like the [img][/img] info tag. To play the sounds, you are going to use the frame component, call_sound[], to play them in your frames.
--New 3 [tip=frame-components]frame-components are enclosed blocks of related tags which adds or sets some feature to the frame[/tip]:
-set_transformation[]: A component which lets you do transformations on the frame's texture/image. You can rotate, reflect, stretch or shear your sprites at will. Put in mind that collision-detection related frame-components can not undergo any of the transformations together with the texture/image (at least not yet).- Code:
[f=0] #example frame
set_transformation[
center=0,0
x_scale_factor=2 y_scale_factor=1
rotation_angle=90
x_shear_factor=1 y_shear_factor=0
x_translate_vector=-30 y_translate_vector=-10
delay=0 set_reg=$a$, 1 condition=@hp@<200
]
[/f]
"x_scale_factor=", "y_scale_factor=" sets the x and the y stretch values for the image texture.
"rotation_angle=" is the angle you would like to rotate.
"x_shear_factor=", "y_shear_factor=" the x and the y factors for a shearing operation.
"x_translate_vector=", "y_translate_vector=" change the position of your texture/image without affecting its in-game position. The parameters are the x and the y values you would like to translate your image by.
"delay=", "set_reg=", "condition=" works just like with every frame-component.
e.g: >> rotation_angle=45 >> (note the size changed due to camera zooming there)
Related switches:
|REFLECTX| =>When this switch is there, your texture/image is reflected parallel to the y-axis on the center.
|REFLECTY| =>When this switch is there, your texture/image is reflected parallel to the x-axis on the center.
Uses:
.You no longer have to create new sprites for when you want to rotate a sprite.
.Chasing energy blasts in the y axis can be made to actually rotate facing the target!!
.Scaling can prove really useful if you plan to have giant characters in your game. Imagine having to load assets for a giant character 400 px high and 350 px wide! You would want to preserve the quality of the animations and all, but it would take a looot of time and memory to load sheets that big. Now you can sprite your giant in a smaller size and then simply scale him up in the game! The Engine's OpenGL linear filtering insures the least amount of pixelation once it has been scaled!
.Falling momentum show in sprites: You can use the rotation feature to rotate the falling sprites according to how fast and the velocity of their object. This is so cool, and we are totally gonna have this for OPAE. NEXT GEN!
-set_set_dirtyquad[]: A component which lets you further clip an area or a quad off a sprite. Only the area enclosed by this quad will be rendered on the screen.- Code:
[f=0] #example frame
set_dirtyquad[
top_left_vertex=0,0 top_right_vertex=10, 50 bottom_right_vertex=70,40 bottom_left_vertex=5, 22
delay= set_reg= condition= #same old
]
[/f]
"delay=", "set_reg=", "condition=" works just like with every frame-component.
e.g: >> set_dirtyquad[] >>
Uses:
.Imagine a case where you're having sort of small sprites, and its overdoing to have a complete sheet reserved for these or even place them in too-big squares which is just a plain waste. These all together would fit into one of the squares in the bigger gird; why not place them there and then clip each down with dirty quads in the game to make each appear alone?
-call_sound[]: A component to play sounds.- Code:
[f=0] #example frame
call_sound[
id=0 repeat=0 volume=100
delay=0 set_reg=$a$, 1 condition=@hp@<200
]
[/f]
"repeat=" how many times should that sound repeat after it has played once.
"volume=" set how loud the sound is going to be. Max being 120 and mute being 0.
--New: 3 [tip=in-file switches]switches which affects your whole object altogether. Despite the name which suggests they're to be placed anywhere in the .a file, outside any tag, I've decided to let them be inside the {info}{/info} tag to make stuff more organized[/tip]:- Code:
{info}
|NOSHADOW|NOBARS|IGNOREGRAVITY|
NAME=ABCD
ALLOCATE_IMGS=10
..etc
{/info}
The |NOBARS| switch will automatically disable bars for the whole object, so you wouldn't have to use it individually with every frame. This switch used like that will have the object not allocate 4 other objects that resembles the bars (HP, SP, RP and BP(bonus pts)).
The |IGNOREGRAVITY| switch will have your object unaffected by gravitational acceleration, again, without having to specify that switch with every frame.
--Bars now make use of frames; in other words, you can control how your bars look or even animate them just as if they were objects. This needs going in detail with some special .a file, "system.a", and I am already tired of typing.. Will explain everything later .
Last edited by A-MAN on 14th September 2014, 12:49 pm; edited 2 times in total
Re: [log]Since 8th August 2014: A-Engine v0.1
Ahh that's nice! so there won't be any documentation in future?
Keep it up man!
Keep it up man!
Last edited by Rhino.Freak on 8th August 2014, 3:41 pm; edited 1 time in total
Re: [log]Since 8th August 2014: A-Engine v0.1
@Freaky: Documenting every tag is necessary. Updating like this though will make it easier for me when I come to document the tags and the features I post here.
@bashs: Yep XD
@bashs: Yep XD
Re: [log]Since 8th August 2014: A-Engine v0.1
The only use I see with sequences are to shortcut animations with similar rects and bdys. This would be good for animations like walking and running if the orders can be prrogrammed. Otherwise, it doesn't seem to be too much of use.
Dragon5- Pirate Subordinate
- Posts : 38
Reputation : 12
Bellies : 552
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
it helps with almost every move.. like punches kick can only be done in 1 sequence and 1 frame..
Re: [log]Since 8th August 2014: A-Engine v0.1
@Dragon: Sequences are very useful in fact, and I find my self using them all the time. Put in mind that you can replace a frame in the middle of a sequence by retyping the frame anywhere in the .a file.
That tag by itself though isn't of much use to be honest. I only use it with a value of -1 to reverse animations; like fade ins can then be animated to be fade outs and such stuff.
That tag by itself though isn't of much use to be honest. I only use it with a value of -1 to reverse animations; like fade ins can then be animated to be fade outs and such stuff.
Re: [log]Since 8th August 2014: A-Engine v0.1
A-man, I have some doubts:
There will be some tool to we take our doubts about the engine? Could be here, for example? You will be willing to answer our questions? : D
The system interactions will be more solid? will be possible to interact with objects that you even spawned? These interactions with the body's lf2 (at a great height) are very complicated and boring
RennanRdC- Pirate Subordinate
- Posts : 28
Reputation : 1
Bellies : 331
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
Feel free to ask anything you want.
The itrs (we refer to them as "rects" with the engine) and bdys are more flixable than ever. You can do the following:
-Do a bdy that goes to a frame when hit with a rect.
-Do a bdy that sends the opponent into a frame when hit with a rect.
-Do a rect that goes to a frame if it hits a bdy.
-Do a rect that sends the opponent into a frame if it hits his bdy.
Further more, you're no longer dealing with itr types; you can create your own now with what are known as switches. A switch is a small statement surrounded by a pair of "|"s that sets definite characteristics to a frame or a component. Say you want to have your rect (itr) hit a target but without sending them to their injury frames nor showing the hit spark. You would simply type "|GHOSTRECT|" anywhere inside your rect. Say you want your rect to not play the hit sound when it hits a target; use the "|NOSOUND|" switch inside your rect. Now you might want that rect to "stick" to a target (similar to itr kind 8s effect); use the "|STICKYRECT|" switch. You can also have multiple switches in one rect as in the following:
There are also switches that make rects hits a target where ever he is (|REMOTERECT|; very useful for poison effects), act as a solid obstacle (|SOLIDRECT|) or even be a standable platform (|PLATFORMRECT|) and other useful switches you will find handy when coding cool abilities for your characters.
The rect hitting yourself is achievable too with an in-frame switch instead, the "|UNIVERSAL|" switch.
Furthermore, these boring pairings you've being doing with the high-y-valued' itrs and bdys are gone for good. You will know pair stuff with what I call "flags" instead. A flag is basically a special number (or even a sequence of numbers you set) where only a pair of bdys and rects having a common flag will interact. For example:
And much more.. You would want to wait until I write up its documentation. I just want you to understand that my goal when I wrote the engine is to allow doing EVERYTHING without ever having to resort to hex editing or any stuff like that.
And thanks for asking.
The itrs (we refer to them as "rects" with the engine) and bdys are more flixable than ever. You can do the following:
-Do a bdy that goes to a frame when hit with a rect.
-Do a bdy that sends the opponent into a frame when hit with a rect.
-Do a rect that goes to a frame if it hits a bdy.
-Do a rect that sends the opponent into a frame if it hits his bdy.
Further more, you're no longer dealing with itr types; you can create your own now with what are known as switches. A switch is a small statement surrounded by a pair of "|"s that sets definite characteristics to a frame or a component. Say you want to have your rect (itr) hit a target but without sending them to their injury frames nor showing the hit spark. You would simply type "|GHOSTRECT|" anywhere inside your rect. Say you want your rect to not play the hit sound when it hits a target; use the "|NOSOUND|" switch inside your rect. Now you might want that rect to "stick" to a target (similar to itr kind 8s effect); use the "|STICKYRECT|" switch. You can also have multiple switches in one rect as in the following:
- Code:
[f=30] #this is frame 30
set_rect[ |STICKYRECT|GHOSTRECT|NOSOUND|
x=0 y=0 w=30 h=30 damage=30 #...etc
]
[/f]
There are also switches that make rects hits a target where ever he is (|REMOTERECT|; very useful for poison effects), act as a solid obstacle (|SOLIDRECT|) or even be a standable platform (|PLATFORMRECT|) and other useful switches you will find handy when coding cool abilities for your characters.
The rect hitting yourself is achievable too with an in-frame switch instead, the "|UNIVERSAL|" switch.
Furthermore, these boring pairings you've being doing with the high-y-valued' itrs and bdys are gone for good. You will know pair stuff with what I call "flags" instead. A flag is basically a special number (or even a sequence of numbers you set) where only a pair of bdys and rects having a common flag will interact. For example:
- Code:
[f=40]
set_rect[ x=0 y=0 w=30 h=30 flags=44444, 22222]
[/f]
And much more.. You would want to wait until I write up its documentation. I just want you to understand that my goal when I wrote the engine is to allow doing EVERYTHING without ever having to resort to hex editing or any stuff like that.
And thanks for asking.
Re: [log]Since 8th August 2014: A-Engine v0.1
Thank you mr A-MAN! I look forward to making One piece (gb style) also this engine without limitations!
The engine will be updated? These updates will compromise the progress already made?
Another question, something bothered me the release I tested:
When i press down key, the character goes not straight down, but in a diagonal line, is this normal?I really do not like it
The engine will be updated? These updates will compromise the progress already made?
Another question, something bothered me the release I tested:
When i press down key, the character goes not straight down, but in a diagonal line, is this normal?I really do not like it
RennanRdC- Pirate Subordinate
- Posts : 28
Reputation : 1
Bellies : 331
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
A-man Could I suggest an transparency converter for the a-engine. I have a lot of already made sprites and would like to make many of the already made effects transparent.
ULTIMOS- Pirate Captain
- Posts : 173
Reputation : 22
Bellies : 1797
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
ULTIMOS wrote:A-man Could I suggest an transparency converter for the a-engine. I have a lot of already made sprites and would like to make many of the already made effects transparent.
He did add that didn't he?
just use [ic]alpha=x[/ic] inside the frame to make it transparent..
255 = no transparency
anything below it would be slightly transparent.
Re: [log]Since 8th August 2014: A-Engine v0.1
Alpha PNGs are 100% supported. You're free to have all your transparent/blur effects.
Re: [log]Since 8th August 2014: A-Engine v0.1
oh ok, cool, sry didn't notice
ULTIMOS- Pirate Captain
- Posts : 173
Reputation : 22
Bellies : 1797
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
A-man, u didnt answer my questions D:
RennanRdC- Pirate Subordinate
- Posts : 28
Reputation : 1
Bellies : 331
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
Sorry, my bad.
To answer your questions, I will keep updating the Engine until I am completely satisfied with its capabilities. Updates will include new tags, features and perhaps some boosts with performance ..etc. Once I release, I will share the source code along hoping further developers will continue updating it to suit their needs and the engine's future.
That test release is extremely old and outdated. Regardless, I intentionally made the walking move forward with the A-Engine's dvx equivalent because it was suggested that having running animations going down looked weird.
On a side note: Don't bother trying to understand the .a files of that test release. A lot of stuff has changed since then, and reading the test version's will only lead to further confusion.
To answer your questions, I will keep updating the Engine until I am completely satisfied with its capabilities. Updates will include new tags, features and perhaps some boosts with performance ..etc. Once I release, I will share the source code along hoping further developers will continue updating it to suit their needs and the engine's future.
That test release is extremely old and outdated. Regardless, I intentionally made the walking move forward with the A-Engine's dvx equivalent because it was suggested that having running animations going down looked weird.
On a side note: Don't bother trying to understand the .a files of that test release. A lot of stuff has changed since then, and reading the test version's will only lead to further confusion.
Re: [log]Since 8th August 2014: A-Engine v0.1
I'm sad, everything is amazing but this feature bothers me quite
The date remains the same that you had said? 15/08?
(Damn it, I was already trying to learn the language!)
The date remains the same that you had said? 15/08?
(Damn it, I was already trying to learn the language!)
RennanRdC- Pirate Subordinate
- Posts : 28
Reputation : 1
Bellies : 331
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
What feature bothers you? Apparently, you didn't understand the bit about walking up/down. I said I did this intentionally (made the character move forward) with the Engine's dvx equivalent tag. I would never hard code such a weird "feature" 0_o.
As for the release, I am working on the sounds and the main menu stuff at the moment, and I don't think I will be done by tomorrow.
As for the release, I am working on the sounds and the main menu stuff at the moment, and I don't think I will be done by tomorrow.
Re: [log]Since 8th August 2014: A-Engine v0.1
Okay! Excuse me! I thought it was already own the game!
RennanRdC- Pirate Subordinate
- Posts : 28
Reputation : 1
Bellies : 331
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
@A-Man: So when do you think you will release the OPAE?
This is irrelevant to the topic as you could've asked that in OPAE's progress thread, but I will answer anyways. I can get my work ready by the end of August. The thing is that we're trying to get Sanji in as well, and I am not sure if Z and Freaky will be able to make it on time. So don't take my word on it just yet. ~A-MAN
This is irrelevant to the topic as you could've asked that in OPAE's progress thread, but I will answer anyways. I can get my work ready by the end of August. The thing is that we're trying to get Sanji in as well, and I am not sure if Z and Freaky will be able to make it on time. So don't take my word on it just yet. ~A-MAN
vunguyen97- Pirate Captain
- Posts : 114
Reputation : 2
Bellies : 912
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
One suggestion: Could you provide a "raw" version of the engine for developers. How about?
RennanRdC- Pirate Subordinate
- Posts : 28
Reputation : 1
Bellies : 331
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
I don't understand what you mean by a "raw" version. What I am going to release as the A-Engine developer's package would be the exe + a template stage + a template character + a document on how to get started + a reference guide to tags and how they work and maybe a Notepad + a plugin for A-Script syntax highlighting and auto-completion feature (until I get the time to write my own editor). I hope this is what you meant.RennanRdC wrote:One suggestion: Could you provide a "raw" version of the engine for developers. How about?
Re: [log]Since 8th August 2014: A-Engine v0.1
Yeah, its this
RennanRdC- Pirate Subordinate
- Posts : 28
Reputation : 1
Bellies : 331
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
One question: How much of the beta code will carry over to the first release in terms of compatibility? I plan on using it as a base to get a head-start on my miniproject.
Dragon5- Pirate Subordinate
- Posts : 38
Reputation : 12
Bellies : 552
Online Offline
Re: [log]Since 8th August 2014: A-Engine v0.1
@Freaky: I would really love to actually. Will probably do in a day or 2.
@Dragon5: OH well, A LOOT OF things have changed (unfortunately); I've also changed names of some tags to make them more self-explanatory (for example f_x= was changed into x_vel=; cuz that obviously sets a new velocity on x, not accelerate). I wouldn't really suggest you work with that. For the Engine though, I still have got veery few stuff to do: with the backgrounds+a main and a control menu.
Sorry for the delay.
@Dragon5: OH well, A LOOT OF things have changed (unfortunately); I've also changed names of some tags to make them more self-explanatory (for example f_x= was changed into x_vel=; cuz that obviously sets a new velocity on x, not accelerate). I wouldn't really suggest you work with that. For the Engine though, I still have got veery few stuff to do: with the backgrounds+a main and a control menu.
Sorry for the delay.
Re: [log]Since 8th August 2014: A-Engine v0.1
DUDE!!!!!!!!!!!!!!!!
DAMN! THIS IS TOTALLY NEXTGEN! DAMN! HOW CAN YOU EVEN THINK OF/DO ALL THIS WHEN THIS IS YOUR FIRST ATTEMPT FOR A GAME ENGINE!! LOVE YA MAN! #NOHOMO #FULLCAPSNOREGRETS
ahem.. Now, 1 question
The place where we can define the points regeneration.. Wont having all that in all A-files, in turn use more memory?
Having it in a separate .A file would be better I think.
#BACKTOCAPS
DUDE YOU GOTTA POST THIS IN LF-E TOO!
DAMN! THIS IS TOTALLY NEXTGEN! DAMN! HOW CAN YOU EVEN THINK OF/DO ALL THIS WHEN THIS IS YOUR FIRST ATTEMPT FOR A GAME ENGINE!! LOVE YA MAN! #NOHOMO #FULLCAPSNOREGRETS
ahem.. Now, 1 question
The place where we can define the points regeneration.. Wont having all that in all A-files, in turn use more memory?
Having it in a separate .A file would be better I think.
#BACKTOCAPS
DUDE YOU GOTTA POST THIS IN LF-E TOO!
Re: [log]Since 8th August 2014: A-Engine v0.1
Thank you =3.
LFE I will post later.
There are already tags where you can set regeneration in the info part already? The main_loop tactic can be used if you're into creating a more complex regeneration system. The main idea of the main_loop however is timers. Or were you asking about something else? I am not sure I understood your question ?_?.The place where we can define the points regeneration.. Wont having all that in all A-files, in turn use more memory?
LFE I will post later.
Re: [log]Since 8th August 2014: A-Engine v0.1
Ah yeah, totally forgot about that XD
I like how the sounds are now loaded at the beginning, easier to find which sounds are being used by which files.
I like how the sounds are now loaded at the beginning, easier to find which sounds are being used by which files.
Similar topics
» An Intro to The A-Engine and How to Find Your Way Around It
» A-Engine Ideas
» A-Engine Guide for LF2 coders
» A-Engine Test Release
» A-engine's logo screen~
» A-Engine Ideas
» A-Engine Guide for LF2 coders
» A-Engine Test Release
» A-engine's logo screen~
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum
|
|