Worklog for b32
GameBuilder
Return to Worklogs
| ||
Today, I've included a heightmap painting program, that allows for
drawing heightmaps. As I'm writing this, I realise that maybe I could
include a colormap to it as well. The last few days I was busy making some sort of MS Assistant. A figure called 'Ricardo' shows up. You can ask him what a button does. I also want him to be able to give a tour around the program, explaining the main functions. If you want to download/respond, here is my showcase: http://www.blitzbasic.com/Community/posts.php?topic=68813 |
| ||
Finally, I am making a version I can post, a showcase entry. I'll wrap 'world' up with a trial maker, and put a complete version of 'compound' in it. Hopefully no more bugs will arise, and people will like it.. http://members.home.nl/bramdenhond/gamebuilder.zip |
| ||
Finally, I've included both extrude and lathe in the compound editor.
Tomorrow, I will make a start on the documentation again. I first wanted
to include all functions, because else I needed to change the helpfiles
every time. Then I will make some examples, and at the same time I will iron out any smaller issues. Wednesday the second term of my course starts, so I will have some more betatesting for the next 6 weeks. |
| ||
I've done a lot of updating. Since the course started, five weeks ago, I
found a lot of bugs. In fact, because of these classes I have now a
16-people beta testing team available, which works real nice. The program is now capable of making a broad range of -very simple- :) games, and is nearing completion. I still have some to-do stuff: -collapse 3 separate programs into one single editor, so the complete project will contain 2 exe's: one for 3d modeling and one for 3d world editing/programming. -making a decent miditracker that is compatible with other software -help/samples/tutorials (started on that) -better select function, pref. two: one with icons and names and the other with a 2d map of the scene. I bought a CD-labeling kit and now at least my backups look very professional. :D |
| ||
The new-old 'compiler' works really nice. It is very structurized, and
easy to implement more commands. The program was written when I just
started with the project, so I was still fresh. There are still a few commands I'd like to add, for instance the 'Text' command. However, all commands and parameters are converted into numbers, so I need to find a way to pass strings to there. It is only the 'Text' command that handles strings, so it is not a big issue. I've rewritten the GUI functions. The new interface makes the program more stable. Everything has a more solid/robust feel over it. |
| ||
This is the program running: You can see one of the cubes exploding. I tried to fire and capture at the same time, but it was kind of a random shot. This is the program in the world editor. This is the program (reconstructed, because I deleted the original screenshot) I have discarded the new compiler. For the 'stress test', that is drawing a circle out of 360 ovals, the program took 47 ms. Blitz itself takes 20 ms, and my old compiler 36 ms. So, I've adapted it to match the graphical basic. It now runs very nicely, and I am very happy with it. Compound went to the beta test. It still has a few bugs, but I think it will be allright. The ultimate test will be the old computers at my workshop. I am looking for a way to optimize the interface. It slows down too much. If you want to be a betatester, please send me an email. |
| ||
I worked on the basic stuff again. At first, it could only run the
entity-based commands, for clicking/showing/hiding objects, but now it
can also load the mathematical commands, such as sin and cos. I am working on the game property editors, to choose between plane and terrain, select textures/maps for the terrains and enable/disable fog and ambientlight. I've made a chasecam routine, and I will make the user select what type of control and cameramode should be used. As a test, I wrote this forest scene, in Blitz3D, not the gamebuilder: All the trees are a single mesh. The terrain is 'infinitive', well not really, after crossing a certain boundry, the player is warped to the other side. Sort of like PacMan did in 2D. The trees are randomly placed, merged into a single mesh, and then this complete mesh is CopyEntitied 8 times in all different directions. That way the trees stay in the same spot when you are warped. The water is at terrain height 0. With a 3rd texture I masked the terrain where the water should be. The water itself is a mirror and a textured plane with alpha enabled. |
| ||
Today I've made an exporter for the world editor to a separate loading program. It can load worlds that you designed. Yesterday I've tried making some models with the program, I've made a new rabbit, a bird and a bear/mouse. It is a nice moment when stuff comes together. |
| ||
Today I took a break and I worked on something I wanted to write some
day: a miditracker. Maybe I will give it a nice skin and put it
somewhere in the gamebuilder. The code is in the archives under Audio. |
| ||
This is the new basic interface:![]() And a new download: --Whoops--let's not forget the font images: http://members.home.nl/bramdenhond/basic.zip 780 kB Now, you can enter an IF condition with a calculator interface. It generates BlitzBasic source, but at this point not very nice/clean code. (at all). Press "RUN" to see the code. Note that a .BB file will be saved in the same directory. (debug purposes) |
| ||
![]() (model was built using maplet btw) These bugs are getting .. buggy. At first, I could laugh a bit about them, like: "Yes, I like these problems a lot", but now they are *truly* bugging me. Again the saving routine was malfunctional. But after a quick fix (+/- 2 hours) it now saves allright again. Actually testing your software makes quite a difference. I guess sometimes it is better to start with a primitive saving routine, it helps a lot when you are testing, say an exporter.. Well, anyways... keep up the good work .. :/ |
| ||
I am finally confident in the 'compound' saving routines. They *seem* to be working allright. I've made a few versions of the interface, in different colours. One for each part I am working on: (1) extrude .. as good as finished, needs bugtesting still (2) lathe .. still needs texture coordinates (3) compound .. as good as finished, needs testing too (4) world editor .. is going allright, only thing is it is getting too slow maybe. Say, 50% done. (5) basic .. 'compiles' to a blitz3d program, but not really readable code, more like this: X# = 1 X# = X# * 2 X# = X# + 1 X# = SQR(X#) p1$ = X# X# = 2 p2$ = X# X# = 0 p3$ = X# BAS_TURN p1$, p2$, p3$ So, not yet finished. Finally, it will be able to compile into integers, that represent commands for the game. (6) Clay (cancelled), replaced with dragger (7) Dragger, only just started, will be included in Compound (8) TexPaint, will be included in Compound And maybe (9) Music editor, for editing MIDI files. And the total program should be able to save games somehow. But it would require saving all the game data into a single folder, so that one I find tricky. And 'as good as being finished' means, everything important works and I don't feel any structural redesigning needs to be done. However, the 'New' and 'Undo' buttons don't work and the program can't save any projects, only export models. |
| ||
![]() I discovered the saving routine couldn't save angle differences over 179 degrees. Somehow it allways turned via the shortest side. If you wanted to rotate an object 360 degrees in one frame, after saving it, it didn't move. I calculate the biggest difference in angles between two frames and then divide this number by 90. The result is the factor I'm extending the animation with. So a rotation of 360 degrees will generate 4 times more frames than originally designed. That way all differences are kept within the range 0..90 (I hope). Oh and I replaced the interface with a smooth version. I replaced the pixelated circles with common circles. I even blurred it a bit. Well, keep you posted :) |
| ||
This is the new look for the software. It is based on "Mayhem in monsterland", which I found a very good-looking game on C64. Oh and I used Juicy fonts. It is a very nice program that generates bitmap fonts and has routines for easily using them too. Finally, I got the saving routine in 'compound' worked out. Child meshes were scaled along with their parent, and now I parent both parent+childmeshes to the same pivot. This way the rotation/position of the parent affects the child, but it's scaling doesn't. So .. 4.49 AM .. I have to get up at 9:00 for a family meeting, better to get some sleep :( |
| ||
Update: made instruction properties editable. Download: http://members.home.nl/bramdenhond/basic.zip 770kB (updated) |
| ||
Now I am working on the programming part. The block structure is based
on Lego MindStorms, however I still like to call this language Basic. I've designed new buttons, based on a mario tile. The result looks a bit more denim/industrial than I imagined, but I like it. (label is only a remark and will be ignored by the compiler) The language has only simple instructions: move/turn/position very much the same as Blitz. It can only hold 26 variables A-Z, that are floats. A program is executed every frame. The engine automatically adjust the game's speed to the PC speed. The level will be a collapsed object, the entities are Animated characters, that are controlled by either a path or the code. The camera control keys are predefined in a sub-menu. Writing the graphical programming structure was strange. An If..Endif block has 2 parts, which can't be reversed. If you have multiple IF's, you shouldn't be able to place the 2nd Endif before the first one, all the 'wires' get entangled. I've solved this by disabling the ability to drag the Endif block and in case the If block ends up in a different indention level, the Endif block moves along. Formulas can be entered too, in a Calculator-like interface. Ie.: Calculate->Select Variable "X"->Press "+" "1" = X=X+1 or Calculate->Select Variable "X"->Press "1" = X=1 Well, will keep you updated. Still a lot of work to do. |
| ||
Speed button added, several bugs removed. The animation doesn't automatically resize, you should use the insert/delete button. Still a few bugs, there is a bugs.txt included. <download removed> |
| ||
* Improved loading routines (it can load it's own files now) * "B" key switches between bone and mesh mode * "N" key shows screen to select an object by its name |
| ||
* Improved saving routines. (.x) * Loads hierarchic .x meshes, such as mak_robotic.x * Reset the interface to the 'classic' version |
| ||
The gamebuilder is a lot more work than I expected. However, I'm not
giving up yet. I want it to be done in January, when I start giving
classes. The idea is to create a program that allows you to create 3d games. However I knew almost nothing about writing 3d games, so I've learnt a lot on this project. For a longer description, read this post: http://www.blitzbasic.com/Community/posts.php?topic=58501 The first tool I wanted to show is compound: 1) It can't load/append/save projects yet, but it saves animations when you press "Q". After saving, the editing becomes impossible, so consider it a very beta version. 2) Because objects can be parented to other objects, and saving animation only saves keypoints, I needed to interpolate the animation when saving. Every frame gets saved in 100 steps. I know this is really overdoing it, but it was the only way I could get this to work. Later on, I will replace it with a more 'intelligent' version, that determines what frames should be saved. 3) The interface .. at first I was happy with the blue bubblegum interface, but some people didn't like it. So I am trying to develop a nicer-looking interface that can replace this one. Since the interface is a separate module that returns strings, it is very easy to replace it with something else. Still, I would like somebody to help me. (designing the interface/creating objects/giving suggestions/betatesting/help programming) In fact, any help/feedback is welcome, so if you have some old UV unwrapping code lying around for instance :Please let me know. |