Log In  
Follow
shiftalow

I like pixeled graphics and chiptune sound game.
i'm making game like metroidvania.
http://bitchunk.net
(Japanese)

pelogen (3D modeling tool)
by shiftalow

Cart #knutil-0 | 2021-02-28 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3

"KNUTIL" is a library for PICO-8 that contains functions that are frequently used in the games I have created.
I've kept the functions that I eventually needed in my production.

In this cart, I show you how the scene functions work with animations.
Z key: Execute the order command.
Up/Down: Select the order command.

SCENE MANAGER controls and replaces the order in which functions are called with a small number of tokens by using consecutive string instructions.
The generated SCENE can register a global function as an ORDER.
One of the registered ORDERS is retrieved by SCENE and the process is repeated for the specified length.
When the processing is finished, it repeats the processing of the next ORDER.
This is expected to facilitate the planning of the performance.

Using SCENE

Create a SCENE ( MKSCENES )

SCENES, INDEXES = MKSCENES( { 'UPD', 'DRW', 'KEY' } )

SCENES: Contains the generated SCENEs.
INDEXES: The indexes needed to run the SCENES in the order they were generated.

Enter an ORDER into a SCENE ( CMDSCENES )

CMDSCENES([[
[SCENE NAME] [COMMAND] [FUNCTION NAME] [DURATION FRAME]
[SCENE NAME] [COMMAND] [FUNCTION NAME] [DURATION FRAME]
...
]])
  • [SCENE NAME] : Specify the name generated by MKSCENES.
  • [COMMAND] : Specify the following ORDER COMMANDS.
  • [FUNCTION NAME] : Specify the name of the global function.
  • [DURATION FRAME]: Specifies the number of frames to be sustained; if set to 0, it will not automatically terminate.

ORDER COMMANDS

ST (SET): Delete all stacked ORDERS in SCENE and set new ORDERS.

CMDSCENES[[
UPD ST MANAGE 0
]]

Clean the SCENE "UPD" and add a "FUNCTION MANAGE".

PS (PUSH): Add an ORDER to the SCENE

CMDSCENES[[
KEY PS KEYCHECK 0
]]

Add the SCENE "KEY" with "FUNCTION KEYCHECK" at the top.

US (UNSHIFT): interrupt ORDER at the beginning of a SCENE.

CMDSCENES[[
DRW US DRAWRECT 200
DRW US NIL 100
DRW US DRAWCIRC 200
]]

Scene "DRW" is executed in the ORDER of DRAWCIRC, NIL, DRAWRECT.

RM (REMOVE): remove one ORDER.

CMDSCENES[[
DRW RM
]]

Removes the first ORDER of the SCENE "DRW".

CMDSCENES[[
DRW RM DRAWRECT
]]

Deletes the DRAWRECT ORDER of SCENE "DRW", starting from the top.

CL (CLEAR): Remove all stacked ORDERS from the SCENE.

CMDSCENES[[
KEY CL
]]

Deletes all the ORDERS registered in the SCENE "KEY".

FI (FIND): Search and retrieve ORDERS from a SCENE.

RES = CMDSCENES[[
DRW FI DRAWRECT
]]

In this case, the return value RES is a table, and the ORDER "DRAWRECT" is in the first element.

Create a function for ORDERS.

FUNCTION KEYCHECK( ORDER )
    PRINT('PROCESSIONG ORDER')
END

Run each SCENE.

## In the _UPDATE() and _DRAW() functions
FOR V IN ALL(INDEXES)
    SCENES[V].TRA()
END

ORDER function

FUNCTION [FUNCTION NAME] ( ORDER )
    CLS()
    IF ORDER.FST THEN
        STOP"IT'S FIRST!"
    END
    IF ORDER.LST THEN
        STOP"IT'S LAST!"
    END
    PRINT('COUNT: '..ORDER.CNT..'/'..ORDER.DUR)
END

Properties of ORDER

FST / LST

ORDER.FST : at first execution
ORDER.LST : at the last execution.

CNT / DUR

ORDER.CNT : Execution count of the currently running ORDER.
ORDER.DUR : Count of expected end of the currently running ORDER.

PRM

It contains the value specified in the second argument of CMDSCENES.

RATE

Used to specify the end from the start, e.g. in coordinates.

ORDER.rate('[start] [end]', duration, count )

The default values for duration and count are the ones specified in CMDSCENES.

Force ORDER termination.

Do return 1
or
do ORDER.rm = 1.

Functions other than scenes

There is one in this library that I have already posted.
HTBL
VDMP

Functions not explained (I will post them some other time)


TONORM
TOHEX
TTOH
HTOT
REPLACE
EXRECT(RFMT)
TOC
JOIN
SPLIT(wrapper function)
HTD
SLICE
CAT
COMB
TBFILL
ECXY
OUTLINE
TMAP
MKPAL
ECPALT
TTABLE
INRNG
AMID
BMCH

P#59538 2021-03-03 12:49 ( Edited 2021-03-03 23:58)

Hello, everyone.

A few days ago, a game I created called KONSAIRI was released on Steam!
http://store.steampowered.com/app/1448220/

There are still very few examples of PICO-8 games on the Steam platform as PICO-8 games.

I think that's because, as content, PICO8 titles are seen as lacking when compared to other game engines and those created in a free development environment with no restrictions.

But I challenge you to dream of being in the same store as a masterpiece game, despite its limitations.

I also wish to see more interest in PICO-8 in my part of Japan.

[16x16]

P#83569 2020-11-01 14:36

Hello.

Suggestion.
I would like the exported file to include the current config.txt (global_config.txt) as local_config.txt in the exported file.

This will allow us to play from the creator's ideal config in another user's environment.

"global_config.txt" refers to the config.txt that I've been using.
If both global_config.txt and local_config.txt exist, local_config.txt is assumed to take precedence.

Sequence of events


I recently released the PICO-8 app in executable format.
However, the user's environment that downloaded it had different operations and a lower frame rate for inactive windows.
The released manual had to be rewritten and the creator was unable to provide the ideal play environment.

A question thread containing this
https://www.lexaloffle.com/bbs/?tid=39940

P#83100 2020-10-19 03:47

Is there a recommended coding method that would eliminate the drop frames that occur when the pico8 window is turned to the back?
Or is there a memory address I can set?

I want to keep the number of times to execute _update60() and draw() the same, even at 30fps.

P#83056 2020-10-18 03:05

P#82463 2020-09-30 12:29

Before I knew it, I had made a lot of them...

P#82254 2020-09-25 08:54 ( Edited 2020-09-25 08:55)

I'm developing KONSAIRI, a game I've been working on for a while now that I'm finalizing and checking throughout the game.

As I mentioned before, the goal of the game is to move back and forth between 16 different areas to reach the final destination.

However, it seemed to feel like the same old thing before you even reach halfway through the game.

That's why i added Dungeon mode, which changes the look and feel of the adventure dramatically.

Not only do you take damage when you touch an enemy, but there are hidden passages and hints scattered throughout the game that will help you get to the true ending.

When you stand in front of an enemy, you will see a timing gauge.
It's not for attacking, but for getting through to the enemy's rear.
A well-timed "step move" will allow you to move forward with no damage.
If time passes, you will be damaged.
If you move away from the spot, you can avoid the danger.

You can bring in items, throw them and use skills.
You can open doors, read hints, light up and explore, and more...!

KONSAIRI TRIAL version

https://bitchunk.itch.io/konsairi

P#81477 2020-09-03 16:01 ( Edited 2020-09-03 16:06)

I think being able to scroll horizontally with "Shift + mouse wheel" would make it easier to check for longer lines.

I can also use line breaks to keep up appearances, but I don't want to add too many characters.

P#80878 2020-08-17 13:30

Current Development

I'm building a relationship between NPCs and area map connections.
These are mainly for the latter 8 areas.
(The "keys" that NPCs have might be easier to understand.)

This game has a combined total of 16 areas.
There are also useful items that will help you move through such a large world.
These items can be found at the end of the first half of the game.

Then, the image below shows the map of the first half of the game.

Reduced map for 8 areas

Most of the maps are over 128*128 cell size.
The aspect ratio varies from area to area and the structure is challenging to explore.
Once you get your "KUWAI", use it! You can look around the entire area.

Actual map display

An animated tile is provided in each area.
These tiles bring about the effect of the wind.
You can use "PERSNIP" to change the wind (flow).

Awaking bells

The status limit is relaxed when you earn a BELL.
When you earn bells, the status limit is relaxed.
Bells can be earned by eating with NPCs when your friendship is somewhat higher.

The higher your status, the less items you'll have to wear out or take time to move around.

The color of the BELL is the color of the POT

Acquiring a bell of the same color (material) will have no effect.
You may be able to get bells of a different color from a different NPC.
The color of the pot and the color of the bell are the same; check it when you help the NPC.

Updated KONSAIRI trial version!

The performance of the action part has been improved!
Download a playable file here.
https://bitchunk.itch.io/konsairi

Have fun in a small and wide world! ;)

P#80624 2020-08-13 02:27 ( Edited 2020-08-13 09:48)

Does the random value generation by srand() always produce the same pattern output as long as the same seed value is input?

Does the output pattern change due to a change in the environment?
For example, the upgrades, the amount of code, the timing of the exports, the machine or OS you're running...

So far I haven't been able to verify much and I haven't encountered the fact that the output results have changed, but I am concerned.

Thanks for your help.

P#79667 2020-07-20 12:55 ( Edited 2020-07-20 12:56)

I'm working on a big project for PICO8.

Around the end of 2018, I learned about the scalability of multi-carting and continued to research and create it to this day.

We were able to give each of the four carts a role, rather than just being a data bank .

Cart 1: Title/Ending/3D dungeon scene
Cart 2: Platformer Scene
Cart 3: Cooking Scene
Cart 4: World Map Scene/Important Item Riddle Solving Operation

Because of these many factors, an hour or more of play is a must.
Data saves are automatic.
(Position when resume, growth and LIFE, possessions, time, status of NPCs helped, farmland, important items, veggies, history of veggies removed, history of enemies removed, and other things for cart-to-cart interaction).

Most of the game system is complete. I'm currently assembling the map for the later areas.

If anyone is planning an original, reasonably large game, PICO8 will be used as a prototype. It looks like they will progress the production and do the actual product in another game engine. I've seen some of those opinions. (Not my project.)

So sometimes what I do seems like a waste of time or laziness in choosing a development environment.
I don't see a lot of things planned in PICO8 from start to finish. It's not much.
Is it because of the scarcity that I am still developing? I don't think that's the only reason.

I'm not great at asking questions and such. Still, I've been able to implement a lot of features in the game because people before me have been posting and discussing their work repeatedly. Thanks for leaving the information, very grateful to you.

(I think the English translation is unnatural because it is a long sentence.)

KONSAIRI trial

P#78871 2020-07-04 07:18 ( Edited 2020-09-27 13:43)

Cart #pelogen-6 | 2021-05-12 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
20

What the tool can do

  • 3D modeling in 15x15x15 size.
  • Save and load into a sprite sheet.
  • Export the loading code from the sprite sheet.
  • Export the drawing code of the 3D model.

Control are followings(WIP)
Reference

Examples of actual use

KONSAIRI

Export Star Model(Sample)

updated (v0.2.3)

  • Added: Display of the next surface to be generated.
  • Added: Blinking of the face to be drawn by the selected vertex.
  • Added: Blinking of the cursor and vertex pointer.
  • Adjusted: Shader filter switching.
  • Adjusted: Shader palette.
  • Adjusted: Rendering of trifill.
  • Deleted: 4 grid lines on each axis.

Old ver

v0.2.2

updated (v0.2.2)

Cart #pelogen-4 | 2020-05-04 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
20

  • Added: Rotate vertices position with 90 degree angle(x/y/z + MouseDouble-L)
  • Added: Swap two vertices position before the selected vertex(Shift-S)
  • Added: Display mode switchable to "Face / Line / point"(Tab)
  • Added: Switchable Shading palette(MouseDouble-M)
  • Fixed: Improvement Flat shading, Culling
  • Changed: minimum position changed "-7" from -8(model size is 15x15x15)
  • Changed: View Rotation is not infinity.
  • Changed: Light source display method
  • Changed: Trifill() source code from p01

v0.2.1


Cart #pelogen-2 | 2020-04-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
20

updated (v0.2.1)

  • fixed: Object was not displayed in PLAY mode
  • fixed: Select of vertex was over the number of indexes(there was occurring error)
  • "p01_triangle_163" source code by
    @p01

    v0.2.0


    Cart #pelogen-1 | 2020-04-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
    20

    updated (v0.2.0)

    • Added: bottom plate
    • Added: Jumps the "Edit pointer" to the Vertex on the Mouse pointer(Mouse-L)
    • Enabled: Z sort
    • fixed: Weird rotation of space + Mouse-R

    v0.1.0


    Cart #pelogen-0 | 2020-04-08 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
    20

    P#74562 2020-04-08 13:33 ( Edited 2021-05-16 23:31)

    I am working on a small 3D modeling tool separate from the main game project.

    The created 3D model is written to a sprite, and it is ready to be read.
    However, operations and views are very confusing.

    No such tool exists on the PICO-8 platform. (Or not seen)
    I guess it's probably because there's an alternative and it's easier to produce.

    Would you like to take advantage of this tool, even if it is paid?

    P#74479 2020-04-05 02:01 ( Edited 2020-04-05 03:27)

    Cart #sfxtelm-1 | 2019-12-30 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
    8

    PICO-8 Telmin!

    CONTROLLS

    • mouse button: PLAY SFX
    • Z / X : Change waveform(0~7) and custom instruments(8~15)
    • mouse wheel : Change SFX Duration

    old version


    Cart #sfxtelm-0 | 2019-12-29 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
    8

    CONTROLLS

    • mouse button: PLAY SFX
    • LEFT/RIGHT : Change waveform(0~7) and custom instruments(8~15)

    P#71497 2019-12-29 16:07 ( Edited 2019-12-30 08:23)

    Cart #stringhashtable-1 | 2020-08-25 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

    Feature Overview

    This script parse JSON like(incompatible JSON) String data, and convert to hash table.

    Using space as delimiter.

    Parsing recursive.

    "k{v1 v2...}" is table. serve just Immediately before hashkey.

    "k=v;" is key and value.

    The Parser Normalize the individual values with order priority list in follow.
    Number
    String
    Bool
    Nil

    UPDATE history

    v0.2 (2020 08 26)

    • Miniaturization of the cord.
    • No replace "\n" in the recursive process.

    may want to Use VDMP if check the converted table.
    https://www.lexaloffle.com/bbs/?tid=32830

    old ver


    Cart #stringhashtable-0 | 2019-12-22 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

    P#71300 2019-12-22 06:44 ( Edited 2020-08-25 15:37)

    Cart #piduzohazo-0 | 2019-04-15 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
    3

    Happy Update PICO-8!

    U or D: Change line length
    L or R: Change line width

    X : Sub line
    Z : Add line
    X + Z : Reset the center sprite

    P#63532 2019-04-15 14:37

    Cart #salahachider-2 | 2020-06-27 | Code ▽ | Embed ▽ | No License
    4

    The STG like "LIFE FORCE".
    Japanese title is "沙羅曼蛇".

    I refferred to Family computer ver.

    Main game is WIP.

    • ver 0.03: Stabilize sfx.(using music())
    • ver 0.02: Can shot the bullet. Power up, The players remaining number UI.
    • ver 0.01: Release.
    P#61434 2019-02-01 15:17 ( Edited 2020-06-27 12:55)

    Cart #vdmplua-0 | 2019-01-08 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

    Print the inside Table Value.

    vdmp({
     1
    ,str="string"
    ,obj={"o","b","j","e","c","t"}
    ,{{{}}}
    ,{nil,true,false,function()end}
    })

    Symbol summary

    #  Number
    $  String
    %  Boolean
    *  Function(output only the "[Function]")
    !  nil(Is not printed because Skip nil in table pairs())
    {} Table

    "VDMP" execute then there are followings.

    Stop the routine.
    Clear Screen.
    Display the contents of the specified table.
    The displayed order is not fixed.
    The overflowed text is not displayed.

    P#60679 2019-01-08 14:10 ( Edited 2019-01-08 14:40)

    Cart #fillpatdraw_02-7 | 2020-07-21 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
    2

    FillPatDraw FullColor version

    This cart is tool that export code for drawing with FILLP() and RECTFILL().
    The Exported data can draw that using without Sprite sheet.

    You can also apply a check mask to an image by changing the value of _filppmask to a non-zero value.

    Rectfill pattern animation

    FILLP DRAW (2color version)

    Controls

    Sprite sheet view

    • Mouse Left Drag and Click
      1 Select the rectangle to be the source of the delimited block.
      2 Select the length of block from start to end.
      3 Click Export Button for Confirm and Enter the export (p8l)file name.
      In some cases there is a waiting time of 30 seconds or more.
    • Right Click
      Prev select mode.

    • Tab key
      Open the Menu Window.

    Menu

    • PLAY Button
      Start Pattern Draw Preview

    • SAVE Button
      SAVE PNG file and Attach Cart data

    • LOAD Button
      LOAD PNG file and Attach Cart data

    • CLEAR!! Button
      CLEAR Sprite sheet(not Attach Cart data)

    Pattern Draw Preview

    • Space key
      Stop and Start the Animation.
    • Left Click
      Step to Next BlockID.
    • Right Click
      Prev to Back BlockID.
    • Tab key
      Return The Menu Window.

    How to use the exported code


    Paste the code from the p8l file written by this tool into your code.

    To execute it add the following code.

    fillpat.draw(BlockID,x,y)
    • BlockID : Number in Selected Sprite sheet view mode.(start 1)
    • x,y : draw position.
    • Return value: If ID not found then TRUE else FALSE.

    How to add data

    That can add to the export data in the following way.

    fillpat={d=[[
    datablock1
    (add datablock2)
    (add datablock3)
    ]]

    Draw Sequence

    UPDATE

    • rev5: Improved drawing performance(25% faster). Reducing the tokens used. Abolition of autoload. Empty writing is suspended. Enabled the paste command on file name input.
    • rev4: Can specify the drawing position by 1px instead of 4px.(Using camera())
      Can superimpose masks while drawing.
      Supports export of multiple png files.
    • rev3: Tuning Encode and Draw performance.
    • rev2: Remove debug code
    • rev1: Fixed can't return on Tabkey
    P#60621 2019-01-06 15:29 ( Edited 2020-07-21 14:38)

    Cart #fillpatanm1-0 | 2019-01-01 | Code ▽ | Embed ▽ | No License
    1

    the full color "fillp + rectfill" drawing.

    about fill pattern drawing old format follow.
    URL FILLPDRAW
    that's can only 2 color in cell of 4x4 size.

    P#60477 2019-01-01 07:15 ( Edited 2019-01-01 10:12)

    View Older Posts
    Follow Lexaloffle:        
    Generated 2021-07-23 16:59:05 | 0.141s | Q:71