You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[#C] Plus-button decorator for lists to add objects (fields, methods, etc)
[#C] Read me first: F1, then click on any object for help
[#C] animate text box cursor and highlight current line / or show textbox border
[#C] general purpose resizer/scroller decorator thinger
[#C] Allow user to move entries easier via yellow triangle tab
[#C] joystick menu to find connected devices x3
[#C] popup tape-flag/balloons to show you where you are, like hints about M-x window
[#C] list-scroll-decorator
[#C] reasonable emacs configuration for ioforms dev (imenu etc)
[#C] send unfocused input to terminal?
[#C] button to add arguments to + etc (just drop onto block list)
[#C] Show lisp implementation name etc
[#C] explanatory tooltips
[#C] collapse halo handle
[#C] Explicit menu option to turn off debug handling and get a backtrace
[#C] Empty list could display type label?
[#C] Default location for new dialogs/widgets from menu: the command-line listener
[#C] buttons on palette
[#C] incorporate turtle graphics code into base block prototype (for implementing move/turn/point-in-direction
[#C] DEFINITION indicator (three dots in a triangle like Therefore, or an EQUAL?)
[#C] Turn windows-lisp into a cool window widget
[#C] Make textbox recompile as multi-line string so that defmethod docstrings work naturally
[#C] pick up halo handle
[#C] debug halo handle
[#C] “evaluate” and “evaluate and show” buttons
[#C] defblock self
should resources be full-fledged objects?
[#C] color code syntax, not semantics?
[#C] GUI for closures
[#C] add generic xbox controller support for analog bumpers (emulate buttons)
[#C] introduce with-font macro and stop using block-font explicitly
[#C] defface with bold, italic, etc
[#C] Change submenu ellipsis to a nice triangle
[#C] universal (row,column) ref interface for buffers/blocks
basic buffer is a free-roaming space a la squeak
generic proportional and table layouts
world implements buffer interface its own way, with grid
generic buffer similarly
general widget embed layout thing. formatter –> but instead of rich text, it’s all widgets (textboxes + img)
[#C] duplicate objects / selection
[#C] use turtle to program polygon vertices and stuff, like in fluxus
oh, and on windows at least, you’ll need to call %gl:reset-gl-pointers
after you set that, when starting the new image you’ve built if you
want it to work on windows, you’ll need to set
%gl::*gl-get-proc-address* I think sdl has a get-proc-address, or you
can bind to the windows one yourself I use #’glfw:get-proc-address , I
add “.” and “%CD%” to cffi’s foreign directory search list…
(04:20:28 AM) : and just dump them in the folder with the image :)
(04:20:40 AM) : and change the OS working directory, too
[#C] general svg image support
Creating a cool game editor/IDE with tight emacs integration, and then growing it into a standalone MIT-Scratch-squared!
[#C] ALPHA issues for PNG images
<|3b|> you want ‘save color values from transparent pixels’, and need to make
sure the pixels are white with 0 alpha
<|3b|> also, looks like you weren’t passing blend to draw-circle from
draw-solid-circle, not that it matters here [23:46]
[#C] automatically generate blocky friend faces with given body/face shapes
[#C] pretty rubberband movement
API Beta checklist
Story ideas for Sanctuary
weaving of spell tapestries relies on the secrets of the weaving guild, who thereby control all magic and society
threat of machines that can weave… punched cards, information age
[#B] Fix shell not responding to window resize properly
[#B] Finish MicroXONG
add documentation in game source
use bouncing ball and glass bricks
finish level generation scheme
replace glass sound with something better
get line-of-sight working again
[#A] Fix key release handling
[#C] later-when checks a condition (whether some other method returns non-nil) (also later-until)
[#C] “later” macros should evaluate the timer forms
XONG 2.0
[#A] Define level generators
Four level types each with an integer difficulty parameter (1-4)
Each level type has a theme plus unique layout and twists
Three music tracks per type.
[#A] Make objects that spawn enemies.
[#B] Fix enemies that shoot before moving disappearing after shot
[#B] fences red/magenta flash
[#B] pick up chips as pac pellets
chip = currency as XP to pick up after kills
[#B] bombs in the level that blow up stuff
[#B] Break bricks to find items
[#C] splitting green turtle bullets
[#C] more crazy corruption worms and stuff
[#C] symmetrical monadic procedural turtle designed aliens with png pieces laid down by turtles.
[#C] Growing mismunch corruption clouds
[#C] universe = quadtree turtle based world gen/management
[#C] Vaults with special layouts
[#C] fictional emails
[#C] can push objects like bombs into place to be shot to destroy bricks
notify tigtesters: cpw, tacoxtreme, increpare
BUGS
[#B] Fix bad circle artifacts on rounded corner patches on OSX
[#B] Fix crash when error in init file
[#C] Fix crash on wrong color names
[#C] Fix not traversing line break with C-f and C-b
go for a straight space fantasy, skip the arecibo-message angle
the planet is actually a benevolent female intelligence who announces she is dying by taking on too much mass from the surrounding clouds, which will trigger fusion in her core
so she calls on certain people to safely store her memories in bubbles
recursive bubble universes , where you explore her memories and retrieve them
female synth voice?
bring in sanctuary monks?
depth of field mipmapping to color distant objects with atmosphere distance/haze?
recovering ancient memory bubbles
story dialog buttons like Ultima
think about game design / story
smooth scrolling to follow player
smoother speed changes w/analog stick
health bar
hot zone bubbles
collectible bubbles
bubbles that you need to leave flares inside of.
discover which bubbles resonate with each other
drop flares inside those bubbles
[#C] Graph UI vmacro notes
Say you want a nice interface helping a designer to explore various
choices of values for two variables—such as a function y=f(x), or
perhaps choose a color interactively from a 2D color field (possibly
via the mouse) while seeing corresponding R/G/B values update (and
vice versa when you edit the RGB values individually.) So we want to
make a rectangle with a clickable/draggable point in it, whose X,Y
position reflects the values of the variables, plus axis labels.
You could write a “native” widget to do this with native drawing
commands, but extending that in various ways (to choosing multiple
points, for example) might be harder—whatever the case, if you want
to make a variation or improvement on this widget, the “native” coders
have to do it.
But, assume for the moment that we’ve got the following prebuilt
visual blocks, with argument or “socket” names listed in parentheses
after the block name.
sprite(x,y,z,image,…) a sprite with operations such as
“move :north 5 :pixels” and “on-click :x 50 :y 29”
world(height,width,sprites,…) a rectangular gameworld where objects can
exist and collide. operations are things like
draw-background() and add-sprite(sprite, x, y,…)
label(x,y,text) this can be just a specialized sprite() block.
number(value,format,…) an editable number widget.
text(value) editable plaintext string
send(object,message,{arguments}) invoke a method on the OBJECT
set(name,value) locally set the variable named NAME to the value
VALUE.
the(name) find the value of the variable named NAME.
graphically, this may be abbreviated *NAME, or by color.
my(name) find the value of this object’s NAME field.
this is distinct from any local variable with that name.
new(name) create a new block of the type NAME, i.e. new(“number”)
defblock(name,definition) define a new block in terms of other blocks
method(name, block, args) define a method named NAME on the block BLOCK
(As in Scratch, the “sockets” are the places in the block’s onscreen
representation that you plug other blocks into.)
I have actually implemented all the prebuilt blocks mentioned, except
for the last two—defblock exists as a Lisp macro to define blocks,
but there isn’t yet a visual block CALLED defblock that does this
visually. And similarly with DEFINE-METHOD. But this isn’t hard. All
the basics of what I’ve described above are shown in the youtube demo
I put up, I just need to revise the graphics parts now that I moved to
OpenGL, plus some layout changes.
Anyway, given these blocks, the rough outline of the visual solution,
starting with a blank page:
Add a DEFBLOCK to the blank page.
Type “point-chooser” into the NAME socket of the DEFBLOCK.
Add a blank WORLD to the page. It shows up as a white 256x256 unit
square by default, but can be resized, change its background image,
and add sprites using various commands.
Add a new SET block. Enter “graph” in the NAME socket.
Drag the blank WORLD into the VALUE socket of the SET block.
(The idea here is that you now have a WORLD object named “graph”)
Drag the resulting SET block into the DEFINITION part of the
DEFBLOCK block.
Now you have a DEFBLOCK whose body (so far) creates a blank WORLD
and makes it available as the value of the local variable named
GRAPH.
By steps similar to steps 4-6 above, create a few more SET blocks:
Add SEND(THE(GRAPH) ADD THE(SPRITE) 0 0) to the main DEFBLOCK, so
that the graph starts out with the interactive sprite dot in it.
Now, It’s probably not hard to make a simple two-column table widget
with the variable names on the left and the values on the right,
instead of having to make each SET statement individually. But you get
the idea—you have something that looks like a dialog box-ish user
interface already, with labels on the left, interactive value widgets
on the right.
But the graph doesn’t yet actually work, so we must continue.
Add a SEND block. For the OBJECT (i.e recipient) socket, put in
THE(POINT), and enter MOVE-TO as the message name. Add THE(X) and
THE(Y) as the arguments.
You now have a block which, when triggered, moves the sprite POINT
to the location given by the values of the local variables X and Y.
Switching to a Lispy notation, we now have:
(SEND (THE POINT) MOVE-TO (THE X) (THE Y))
Add (METHOD UPDATE (THE X)), and as the definition give the SEND
block from the previous step.
And similarly with (METHOD UPDATE (THE Y)).
Add (METHOD CLICK (THE POINT)) and give this as a definition:
(SEND (THE X) SET-VALUE (MY X))
(SEND (THE Y) SET-VALUE (MY Y))
It’s clear we could continue on and improve this with label axes
and such.
It’s easier for people to change this defblock’s behavior because
its logic is expressed entirely in blocks. Well, you don’t want to
encourage copy-and-tweak reuse, but on the other hand requiring
conceptual coordination between everyone on these
frequently-customized editing tools would be an object-librarian’s
nightmare. Better to err on the side of people adapting the
available “scripts” to their immediate tasks-at-hand.
[#C] (defmacro define
[#C] allow (setf (^field object) value) ??
Re-examine “invader tactics” source and see what blocks are required to reimplement it
re-release “Invader”!
(swank:eval-in-emacs ‘(progn (make-frame-command) nil))
there is swank:eval-in-emacs and slime-eval
but you’ve to set slime-enable-evaluate-in-emacs to T
[#C] GAME IDEA: nested puzzle blox? got to drag your guy through various boxes of different sizes and shapes
use recursive collision detection of some kind, to enable boxes to only fit certain things
Archived Entries
[#A] rename RUN to EVALUATE
[#A] Read whitepaper: “Programming as an Experience: The Inspiration for Self”
[#A] fix on-select listener not working to get keystrokes to the prompt
[#A] Fix focus model — first click/drag does not pull, only after mouseup
[#B] fix erroneous double click of last element when clicking (white background)
[#A] Turn on UNICODE key translation
Fix funny unicode characters getting used instead of SDL keys for bindings like RET and BACKSPACE
fix make-block regression on (list 1 2 3) –> null list
fix newline not working in textbox
add style variable with flat rect option?
[#B] use a non-rounded box layout and appearance for program elements, with very thin margins?
retain rounded rectangles for UI/workspace/etc
[#B] em-dash and en-dash (optionally font-metric-dependent) for uniform declarative layout
[#A] Fix context-menu: method schema not being found when it’s inherited
[#A] trigger context menu items with left click, make block with control-click/right-click
[#B] pop up shell on M-x
ALPHA RELEASE with a few working examples
[#B] Use Alt-drag to move objects
[#B] FIX trash drawing children during drag
[#B] Fix the way wiki page resources are stored into separate files…
Fix init file name (use blocky-init.lisp or ~/.blocky)
Fix command-line cursor alignment
Fix being able to drag top-level menus out of menubar
Fix main menu bar title layout(too tight)
[#A] Fix %VALUE not being updated
[#A] halos
trash (top left)
menu
resize (bottom right)
reference
move
Lightning talk
hello and welcome
brief demo (smalltalk borrow)
copyright notice; trash it with halo
listener with history
lists of numbers and stuff
colors
halos for resizing, menus, references
turtle
[#A] Fix listener prompt not laying out after character insertion
[#A] Fix STRING not being set properly without quotes
[#B] Fix ENTER%%ENTRY being called twice because of ON-LOSE-FOCUS
[#B] Fix reference halo dropping new ref in wrong position
[#A] Merge sprites into basic block type
review vmacs.lisp and get basics working
[#A] Fix list %frozen not working
[#A] Fix first drag of object after creating halo causes jump in position