Amazing post, thanks for writing this and sharing.
Sleepless Creator
Creator of
Recent community posts
Hey,
as I sometimes work on laptop with touchpad I have trouble debugging my game. I need to plug mouse only to scroll log screen you get when you run the game and press escape back to command line. What is printed is only scrolled with mouse scroll and I would like to have ability to somehow scroll this with any keyboard keys.
Or just PageUp/PageDown for whole screen scrolling would be sufficient.
@Crutiatix do you plan to work on Ticuare more? It would really benefit from getting more documentation/tutorials and getting on par with newest version of TIC. While example code is good if I remember correctly example is different version than last and one just doesn't work with TIC without some fixing. I am using this in prototyping, but little scared of taking it to next level and make it core of my game if it's abandoned already.
Asking this because I assumed this how this worked. I used function load palette from snippets: https://github.com/nesbox/TIC-80/wiki/code-examples-and-snippets#load-string-pal...
And I thought that if I call it with one palette at the start of the loop (before rendering anything) and then call this function again with diff. palette before rendering any gui I could use 32 colors. But, this changes colors of everything, even already rendered stuff. While I see other functions in snippets, quick look at them show they do the same thing actually, poke`ing memory at color palette memory position.
So, is it possible to use two diff. palettes at all?
It isn't really touched in wiki at all. How one relates to another?
Assuming I have tempo (beats per minute) 60, how much speed should i have so one note is equal to 1/60th of minute? Does dividing speed by two makes one note equal to 1/120th of minute in same tempo? Does speed behaves the same regarding of tempo?
I am working on windows system from external editor (sublime text 3) with text based cart (.lua). When I am saving via ST3 (and reloading with ctrl+r in tic80) everything stays the same, but whenever I change something in tic80 (like graphic or map) and save it there every code bank from 1 to 7 gets duplicated, making my file size almost twice as big. It is easy to reproduce this, but can provide my file in private message if needed.
Example:
Create text based file in TIC-80.
Write random comments in every code bank and save file.
Open file in external edtor, save it there and reload file in TIC-80.
Change graphic in TIC-80 and save file in TIC-80
Reload file in external editor
EDIT: It looks like it is related to the fact, that whenever you reload file saved in external editor all banks are loaded into bank 0,in pair with loading each bank separately. Dunno why. So this also makes 512k code limit unavailible as TIC80 will fail if sum of code from banks 1-7 gets bigger than 64k.
EDIT2: Already reported, just found out: https://github.com/nesbox/TIC-80/issues/516
I am using Asset forge to export models to png. My current setup is: Front-top 45 angle, shadows 100%, ambient 0%, sprite size large, color filter b/w. So I need to change few of those default values. While I don't mind entering those once when opening app, but it becomes really tiring when I am changing one thing on the model and want to export it to see how it looks on png to find myself inputing those settings yet again.
IF AF could not lose what user changed in export window that would be great. Thanks!
I missed this information, sounds awesome, thank you! Does that mean I can use this in 'normal' uploadable games? I am looking at sync command (https://github.com/nesbox/TIC-80/wiki/sync#parameters) and it looks like it should work 'anywhere'. But regarding code limit, do I need to call sync or switch bank somehow to utilize 512kb or does it work 'automagically'?
Edit:
I opened TIC80 Pro and i see banks for code editor, but how do I make use of this if I am working with code from external editor (and loading it via command line?)
So I am new and proud owner of TIC-80 PRO. I was wondering if it would be possible to remove code limit (other limits?) when game is exported to plain exe? While it is necessary to have one when uploading game to the central repository, if we could specify that game will be only exported to exe it could allow for more than 'normal' exporting. PICO-8 is doing it in a way that if you go over limit it doesn't allow you to export your game to the uploadable format, but you can still save and run it.
Edit: Saw that in 0.60 you can expand space for everything except code limit, so my question stands only for code limit.
If you try to play two sounds on one channel, only last one will play. You need to give unique channels if you want to hear all of 3 sounds at once, check: https://github.com/nesbox/tic.computer/wiki/sfx
TL;DR at the bottom.
I am writing this even though I didn't encounter code limit yet, but I think I will. I base this from my experience when I say I don't want to deal with that. I already had my code limit problems when I was developing game for PICO8. I tried to make quite a big game and, as it was my first time with code limit, it was difficult experience to try to work around that and left me burned out and negative towards fantasy console in general. (Although I finished game, much smaller and different from what I wanted)
My problem isn't with code limit itself (which I think is good) but how punishing it is for project that hits it before completion. If you want to create something more than demo scene or mini game you will hit it sooner or later. Is TIC-80 is designed only for small things?
I fell in love with TIC-80 and how user friendly it is and decided to use it regardless of code limit. But I didn't forget last time and said to myself: respect code limit and do something small. Thought about doing small prototypes around single mechanic/system. So I did. I released first prototype for TIC80 - https://tic.computer/play?cart=138 which sits at 57620/65535 code size. Idea was to prototype one system (lockpicking/opening locked containers) by creating sandbox in which player can do few actions (open/close locks,create/use keys). And I managed to do it without any code cleaning, while I was writing it in a way that was most readable to me (using classes, writing long/descriptive variables etc.) Success!
My initial plan was to do 2 more prototypes (around pickpocketing and sneaking mechanic) and that was ok. But now, it got bigger. I decided I want to make little game combining 3 of those (when I finish then) in one small scenario and I think I will hit code limit with it. Of course I can just do prototypes and then move to other engine, but porting all of this is, maybe, unnecessary work. Though that maybe I can do all of this with TIC-80? But here is a thing, I don't want to go through fighting around code limit as I already had with last game. If there is no other way, I would prefer switching to other console (like LIKO12) than forcing myself through problems I don't want to have. Hence my questions below.
You could say: Obviously you made too big of a game then and want to repeat same mistake! And yes, it is how it looks like but I dare you to be this smart, about your project, when you start it. Knowing if your game is too big for arbitrary limit requires big experience in, not only in making games, knowing system inside out you are working with.
Look I know that if you go through my released code you can easily get 10k code free or more. Remove classes (OOP in lua, red flag, right?), remove half of variables with long ass names etc. Here is a thing. I want to start cleaning code only after I finish the whole game. There is a reason for I wrote stuff the way I wrote it - it makes remembering code and working with it easier for me - and don't want to handicap myself too early. What I want to is to have ability to ignore code limit as long as I am running it locally only. I don't like doing optimization mid coding, hate when I am forced to stop in the middle of writing somehing - so I can free some space and dislike how code limit force you to write non-readable code. I could start with writing compact code from the beginning, but I don't want to do that. The more code I write, the more important is to me to write descriptive code - which isn't space friendly.
TL;DR
Tried to make too big of a game before (for PICO8) and code limit bite my ass hard. I created 1 small project for TIC-80, but looks like I want to create big game again later and before I do that I want to ask you if we can do something about code limit or should I just be realistic and move on to something else.
Questions:
1. Am I making too big of a game for TIC-80? (I am talking about consolidating 3 prototypes described earlier)
2. If yes, does that I mean I am trying to do a game that isn't compatible with TIC-80 design?
3. If yes, should I just move to other fantasy console (like LIKO12) that doesn't have code limit?
4. If no, can code limit became soft? Or can we do something about it?
If there is a yes to the 4th question, what I am proposing is:
- After you hit 64k code limit, show warning in editor (like having code count in red) and when running game/saving file/exporting game show descriptive warning (same as one you have when trying to run too much code via external lua file (dofile))
- Don't allow to upload such games to tic80 repository.
- If exporting to exe/html5 etc. show only warning
- Allow hard code limit to be configurable, so i.e. you can limit yourself to 128k/256k, while 64k is still hard limit for uploads.
I don't want to move to other console if I don't need. TIC-80 looks like the best of all fantasy stuff and perceive it as most user-friendly. Which is why I want to remove code limit as it is in my opinion very unfriendly and stands in contrast to what TIC-80 wants to be.
(But maybe I don't understand what TIC-80 is for?)
I have problems with creating sounds I want using SFX editor. I have trouble parsing what is written in the wiki to practical usage.
I didn't found any topic related to this or yt on the subject. I tried using sfx from other carts, but it isn't perfect...
I only have Pico8 and Pixel Vision 8 experience but don't really know how to translate that to Tic-80.
Ideally if someone would make video like one for pico8 (not made by creator!)
I understand that I am asking for much, so any tips are welcome. :)
(Linked video)
I think I fixed it now, dropbox is preventing you from clean link to image. If someone have same problem as me, look here: https://cantonbecker.com/etcetera/2014/how-to-directly-link-or-embed-dropbox-ima...
If someone could confirm, that would be great. :)
Hi all,
I am suprised how map editor is unfriendly compared to great sprite editor.
There is no erase brush (I use first, 'empty', tile as a substitute).
Not having ability to select more than one sprite is really tiring (when you have map piece that is bigger than 8x8 pixels), but that wouldn't be so bad if not the next point...
There isn't working select/copy/paste/cut option (which could really speed up creating process) even though there are icons for those in top bar.
Are those things are in and I just don't know how to use it? Or is there any eta for those things?
Thanks for help
This is simple prototype of lockpicking mechanic. Currently the whole project serves only as proof of concept.
As you can see in the first gif:
you open lock by providing valid combination of Left/Right presses.
Idea is to have system similar to Gothic series/Risen 1 lockpicking but with more emphasis on player skill instead PC abilities unlocking.
So what is different in my version?
- There is no skill to unlock, from the start you know how to open locks.
- Difficulty of the lock depends on lock combination length and pattern a lock have
- Each type of lock determines different chest sprite - knowing what chest you are opening is valuable information
- No memorisation, you learn what pattern each lock type have, no specific combinations.
- No random chance
- Lockpick breaks only if you make a mistake at the same combination step twice, to punish recklessness.
- You can also open locks by force (but only low level ones) or by key
- With key you can also close the chest (if you need to cover your tracks or plant some item inside)
- You can create keys at special table, with every combination you want, or steal them from owners
Skilled lockpicker can quickly loot whole floor full of chests with only one lockpick and/or set of keys.
EDIT:
Atm. I am 80% completed, still need to implement inventory (to have ability to switch between created keys) and bashing locks.
Atm. I am 90% completed only need to add bashing locks to have full functionality I envisioned for lockpicking/opening locks mechanic. Although I think I skip (bashing locks) this and leave it for the future if I decide to make full thief build prototype (which would have sound/stealth mechanics where bashing locks would have consequences).
Not sure if I release it as playable version (cause I would need to make one), but wanted to share some stuff.
I have no idea how I could make simple scenario based only on opening locks mechanic, but if I think of one I would like to make playable version of this. If someone have idea, please let me know in the comments. :)
Regardless of playable version, I release WebGL build of project as soon as I manage to make one (https://github.com/PixelVision8/GameCreator/issues/40)
Bonus GIF:
Working inventory and creating keys mechanic on this gif:
Btw. bug still exists. Just reminder, before you release bugfix version. :)
Edit: Github issue: https://github.com/PixelVision...
Hi, so title says all.
I have simple camera system in place that is based on player position in the world.
Camera position is set like this:
function Init()
glCamera.xPlayerOffset=glScreenPixelWidth/2
glCamera.yPlayerOffset=glScreenPixelHeight/2
[...]
function Update()
glCamera.x=math.max(0,math.min(glPlayer.x-glCamera.xPlayerOffset,
glTilemapPixelWidth))
glCamera.y=math.max(0,math.min(glPlayer.y-glCamera.yPlayerOffset,
glTilemapPixelHeight))
It makes sure that screen is always centered on player unless we hit bounds of map (0,0 or tilemap size).
I am scrolling stuff with ScrollPosition() and this is my order of calling stuff:
function Draw()
Clear()
ScrollPosition(glCamera.x,glCamera.y)
DrawTilemap()
DrawObjects()
end
Where DrawObjects() iterates over dynamic objects in the game and draws them using DrawSprites().
If I move player only on X axis, everything works as expected, but if I moved player over Y axis (or both) dynamic objects, drawn with DrawSprites, are somehow scrolling with camera (but only over Y axis) - and I made sure that those objects doesn't change position.
1. Yeah, while it is obvious in retrospective, it isn't really at the start. But I am used to thinking that if x,y args in method means diff. things depending on other argument, then it should be in separate method instead. So I wasn't expecting it.
Sure, getting good documentation is iterative process.
Thanks to this topic: If you want to redraw HUD part of screen, every frame, you basically lock yourself to 30fps I started thinking about Game Creator and
wondering if I am expecting something real or my own imagined fantasy console.
My biggest grip is how v0.7 introduced lot of limiting, hardware limitation like, decisions.
Last versions where more lenient on how stuff is done and imho that was good choice. Going back on this feels like a downgrade to me.
In my childhood I played on NES and SNES, and later on emulators, so I understand nostalgia and appeal of creating game from that times... but I have trouble seeing pros of developing with problems from that era. Of course, I am not your 8bit purist/'there is right way of doing things' type of guy. This is why I moved away from Pico8 with frustration, despite having game out and knowing how everything works. I was tired of those arbitrary decisions - most notably code limit. When i saw Game Creator, without code limit, with tool editing/creating and ability to choose/create template I thought this is what I was looking for.
I was seeing GC as a env. that takes 8bit idea as a concept, for player to decide what to do with it, rather than set of rules.
My grip is that v0.7 backed up from, what I was experiencing, is Game Creator spirit.
This isn't necessary bad, there is big group of 8bit purists, that still looks for something more than Pico8,TIC etc., and I may not be the target of GC. I just want to show my side of the coin, as I am identify myself as one wanting best of two worlds. Let's say I want to see 2017 development/way of doing things in 8bit env.
My question is: What is spirit/purpose of Game Creator? Do I have wrong impression of what GC is trying to accomplish?
Tough decision. I understand you trying to balance between going old style and going user convenience, but from my personal perspective, this gets detrimental to end product.
Good way, for now, would be to allow all solutions you described so user can decide what works best for his/her game.
Because if you choose to use more lenient method, purists will be angry and if I you choose 100% true way of 8bit, it will throw away all those people looking for developing game in 2017 way with limitations. (like me)
Then, making several methods is very time consuming and prone to bugs...
This thread made me think about Game Creator and I moved it to separate thread: LINK.
I found lacking in LUA Api that:
1. there is no information when I should pass pixel x,y, for drawing functions like DrawText/DrawSprite etc. , and when should I pass tile x,y.
2. There is no information where stuff, ScrollPosition, RebuildTilemap etc., belongs to Update or Draw method and why. Looking at demos and my own experimentation it looks a bit confusing. like ScrollPosition should be done in Draw function (tilemap demo)?