Ken Silverman's Projects Page


EVALDRAW

EVALDRAW.ZIP (1,599,987 bytes, 01/23/2022): A complete programming environment with built-in compiler, text editor, and functions to allow for quick prototyping. With Evaldraw, you can make graphs in any dimension (1D, 2D, 3D), animations, custom musical instruments, voxel models, and general purpose applications. I've included a lot of examples, so even if you're not a programmer, you can look at the demos.(Win32)

General-purpose programming Generate 3D voxel models
Design instruments and test them on the piano. Multiplayer 3D games are possible too!

Perhaps the best feature of Evaldraw is the instant feedback. It automatically re-compiles the code every time you change it - i.e. on every keystroke. Since it is a custom compiler, no temporary files are ever written to your hard drive.

Most people don't have time to learn a new programming language. For this reason, I've done my best to keep the learning curve to a minimum. Evaldraw's syntax is very similar to C. See the included EVALDRAW.TXT or RScript.chm for a list of differences. If you are new to programming, try the EVALDRAW tutorial.

I started Evaldraw in March 2003, when my friend, Tom, was playing around with texture generation. His work really impressed me. It was missing something very crucial though - a run-time scripting system. Evaldraw was my answer to that. :) My library takes a C string (containing the script code), and converts it into executable code. This executable code can then be called directly by the running program - just like any other C function - all at runtime!

In January 2010, Robert Rodgers started writing a new compiler, which has replaced EVAL as the default compiler. Robert's compiler has more features than EVAL, and it is faster too! Thanks to his involvement, I will be able to concentrate on improving other parts of EVALDRAW (when I find free time, of course).

EVAL compiler in KC_SRC.ZIP (117,530 bytes, 05/15/2010) My old "EVAL" library, now with complete source code. The EVAL compiler consists of 3 files: EVAL.C, EVAL.H, and EVAL.TXT. The other files are only required to compile KC, a project based on the EVAL compiler. To compile the console-based test application, type "nmake eval.c" at a Visual C command prompt. (Requires Microsoft Visual C/C++ 6.0 or above)

02/15/2020: Kris Asick (Gemini) has put together a nice video about Evaldraw - in particular about its built-in 3D graphing mode. Coverage of Evaldraw starts at 3:50 in the video ;-) (Note: I fixed the flicker bug in the latest EVALDRAW.)


POLYDRAW

POLYDRAW.ZIP (332,111 bytes, 02/07/2014): Originally started by Tigrou and posted at pouet, this programming environment allows fast prototyping of GPU shaders. It uses my EVAL compiler for the "c" program and compiles on every keystroke without hard drive access. Having been impressed by Tigrou's work, I took over his project and this is the result of several months of modifications. I learned a lot about shader programming during the process : ) See the included POLYDRAW.TXT for a complete list of modifications. Included are demos from both Tigrou and myself. Most demos require GLSL, although ARB assembly is also supported for those stuck with older video cards. (Win32 - Requires OpenGL+GLSL)

Programming environment Fractal Rainbow by Tigrou
Town Textured by Tigrou Drawcone by Ken

FLYDUCT

Flyduct screen shot
Flyduct screen shot

FLYDUCT.ZIP (298,074 bytes, 10/26/2008): Guide the blue bird through the ducts without getting its wings clipped. I wrote this silly game for 2 reasons: as a test platform for a custom 2D mouse that also senses rotation, but also to play with heightmapping on a cylinder. Since few people have a rotating mouse, I made sure the game controls work fine with a regular mouse. Use the mouse to move the bird, and the left/right arrows to tilt the bird. Feel free to shoot down those red birds (left mouse button) if they get in your way. There is no ending, although you should play enough to see the 3 types of gates (each gate repeats 16 times). The scenery (cylinder and 3 gates) are all procedurally generated the first time you run the game. You may wish to re-compress these PNG files using PNGOUT or similar utility after running the first time. Special thanks to Tom for suggesting a game where you fly through holes. (Win32 - Requires DirectX)


PINGBALL

Pingball screen shot
This is me pretending to be competitive with the computer AI :)

PINGBALL.ZIP (230,442 bytes, 08/09/2006): I wrote PingBall as a testing platform for a new 3D input device being developed by a group of students at Brown University. It plays well with a standard mouse, but with less freedom of course. Pingball comes with pretty good computer AI and it also supports 1 on 1 network play. Unfortunately, I haven't gotten around to fixing the network protocol to hide latency (as well as other issues).(Win32 - Requires DirectX and Pentium III or Athlon)


SLAB6

Slab6 screen shot
Slab6 screen shot (desklamp.kvx)

SLAB6.ZIP (304,809 bytes, 03/22/2011): A 6-degree of freedom viewer and editor for KVX and VOX voxel files. I designed the KVX format for use with Shadow Warrior and Blood. If you have a copy of these games, you can extract their KVX and use them with this program. To extract voxels from Shadow Warrior, use KEXTRACT (it's included on the registered CD). To extract voxels from Blood, use this utility: KBARF.ZIP (4,465 bytes, 11/02/2016). Put it in the Blood directory and type: "kbarf blood.rff *.kvx". If you don't have either of these games, you're not out of luck. I included 16 of my own voxel objects. Includes source. (Win32 - Requires DirectX)

POLY2VOX.ZIP (102,777 bytes, 08/03/2020: A polygon to voxel model converter. Supported polygon formats: ASC,3DS,MD2,MD3,OBJ,STL. Supported voxel formats: VOX, Build Engine KVX, Voxlap's KV6/VXL format. POLY2VOX recognizes the following texture formats: PNG,JPG,GIF,TGA,CEL,BMP,PCX,DDS. Includes source.(Win32)

V3B2VOX.ZIP (9,097 bytes, 05/30/2007): Converter between SLABSPRI/SLAB6's VOX format and EveryGraph Voxel3D's V3A/V3B formats. V3B2VOX converts V3A or V3B to VOX, while VOX2V3B converts VOX to V3A. (Inconsistent names, I know). Source included.

KV62STL.ZIP (4,119 bytes, 11/27/2020): Convert KV6 to STL - useful if you wish to 3D print a voxel model. Source included.


RUBIX

Rubix screen shot
4x4x4 cube in the middle of a rotation.

RUBIX.ZIP (218,066 bytes, 05/05/2012): Rubik's cube simulator. Rotate slice with the left mouse button; rotate view with the right mouse button. Select any size from 1^3 to 256^3, randomize, and try to solve. Features: proper 3D perspective, history bar, backup memory cube, color editor, save games, authentic rotation sounds, and a custom solver written by Ben Jos Walbeehm - supporting any size! Rubix is a great tool for learning how to solve the cube. I learned the 3x3x3 using an early version of this program : ) (Win32 - Requires DirectX)

RUBIX_SRC.ZIP (139,164 bytes, 05/05/2012): MSVC 6.0 source code to RUBIX.EXE.


KCIRC

Kcirc screen shot
The white dashes move in the direction of current.

KCIRC.ZIP (105,262 bytes, 07/30/2011): An analog circuit simulator. Build a complete electrical circuit with just a few keypresses and the circuit will start animating automatically! This is the perfect program for anyone who wants to learn about elementary circuits. Includes voltage sources, current sources, 4 types of dependent sources, resistors, capacitors, inductors, and switches. Also can do Bode and Transient Analysis plots. Can create time-dependent sources by typing in virtually any mathematical function. (Win32 - Requires DirectX)

KCIRC_MAC_X86.ZIP (135,406 bytes, 02/09/2011): Mac OSX version for Intel / OSX 10.6. Experimental! Here's what's unfinished: To open the menu, press ESC then use the arrow keys&Enter to select option. In the load/save dialogs, you must manually type the .KSP extension. You must load .KSP files from inside the app - dragging a KSP file onto the app icon doesn't work yet.(Requires OSX 10.6 & Intel based CPU)


GLOBE

Globe screen shot
Tried to show as much as possible in 1 shot. (With a 90 degree field of view, the Sun (and Moon) really are that small! Planets are enlarged for wide angle views.)

GLOBE.ZIP (219,717 bytes, 04/24/2009): A 3-D planetarium program with super smooth frame rate. Move anywhere! Look anywhere! Fly around the earth or even to other planets! Speed up time and watch the planets orbit really fast. Zoom into a planet to see its phase. Check for solar eclipses or transits of Mercury & Venus. Find rise and set times of any solar system object from anywhere on Earth. Learn geography from the high-res data that can be downloaded separately. All in true perspective with really fast 3-D graphics. The sun, moon, 9 planets and 1,482 stars are all accurate to about 1 arc minute from their actual positions. Now includes source. (Win32 - Requires DirectX)

Here's a screenshot with the high-res GSHHS shoreline and CIA political border data (not included) (a view of New England, USA)


2DRAW

2draw screen shot
2draw screen shot

2DRAW.ZIP (362,045 bytes, 01/18/2011): 2DRAW! This 2D rotation & zoom engine was going to be used for an Apogee game called "Crystal Carnage" until the project was cancelled. Also, during the development of Build, I used this as my test platform for debugging network/modem code error correction. In fact, if you copy COMMIT.* which comes with the shareware version of many Build games, such as Duke Nukem 3D, you can play multiplayer 2DRAW games! Also features stereo sound and a digital MOD-style song that I composed myself. To see the demo I recorded, press SHIFT-SHIFT-'R' inside the game. Includes a nice board editor. Now includes source. (DOS32)


CUBES5

Cubes5 screen shot
It's the "HI" room! Would you believe there's also a "LO" room?

CUBES5.ZIP (160,249 bytes, 10/17/2005): A 6 degree of freedom texture-mapped cube engine. I made this during the development of the Build engine (1994-1995) It has an easy-to-use editor built in. Graphics are compatible with the Build .ART format. If you make any interesting maps, please send them to me! ZIP now includes source code (compile with Open Watcom 1.3).(DOS32)


KENTRIS

Kentris screen shot
Looks like I'm beating the computer.

KENTRS43.ZIP (147,661 bytes, 08/14/2005): Kentris version 4.3. This is a 2-player tetris game I made in 1991, featuring full sound & music. Includes source code.(DOS16)


SIBROS

Sibros screen shot
One of the later levels

SIBROS.ZIP (45,118 bytes): Super Silverbrothers! Remember when Super Mario Brothers was popular? This platform game I made in 1991 features smooth scrolling (70fps) even on a 386 if I remember correctly. It has cool music too. (DOS16)

SIBROSRC.ZIP (12,446 bytes): The source code to Super Silverbrothers. Note: you'll need the old 16-bit Microsoft C compiler for DOS in order to compile this!


BREAKOUT

Breakout screen shot
Breakout screen shot

BREAKOUT.ZIP (49,729 bytes, 09/16/2007): My own BreakOut game featuring playback of 4 simultaneous notes through the PC speaker, movement of the paddle up&down, palette animation, and 3 different ending screens depending on how well you do. For best sound, run in DosBox or pure DOS mode. Includes source code.(DOS16)


SCROLLER

Scroller screen shot
Scroller screen shot

SCROLLER.ZIP (51,040 bytes, 10/28/2004): A cute little QuickBasic platform game that predates Sibros. The object is pretty self-explanatory so I didn't include any instructions. However I will say that the only keys are: Left, Right, Space, and ESC. See if you can win with more than 39 coins! Full source code included. (DOS16)


QZ35.ZIP 79,767 bytes QuiZzer version 3.5. Throw away those flash cards! With QZ, you can type in your own list of words and definitions or you can load a pre-defined list, such as world capitals. Then quiz yourself by either spelling out the word, selecting from multiple choices or by playing hangman. This is an old program (1991) of mine, which I recently fixed up. DOS16
CHESS.ZIP 187,557 bytes, 06/01/2005 This is a chess game I made sometime in 1995. I suppose its best features are the funny sounds I used and its built in IPX network/modem support. You can play against the computer using several levels of difficulty, but if you're looking for a worthy opponent to take on "Deep Blue", look elsewhere! Source code included. DOS32 - Requires VESA driver
SPHERAND.EXE 42,585 bytes 8192 repelling or attracting dots on the surface of a sphere. Use the mouse to rotate. Up & down arrow to move in and out. Keypad + and - to select attracting or repelling dots. A special locality algorithm is used to reduce the amount of calculation time used to move the dots. DOS32 - Requires VESA driver
SPHERE.EXE 54,356 bytes You're stuck inside a texture-mapped sphere. I don't use the Mercator projection. Instead I partition the sphere in such a way that all the texels are close to square aspect ratio. Use mouse to rotate, arrows to move. Really FAST frame rate! Someday I may stick these texture-mapping routines into my globe program (that is, if I can work out the bugs). DOS32 - Requires VESA driver
KDMSONGS.ZIP 518,044 bytes, 02/19/2023 Music is just one of my many talents! In 1995 I made a digital music editor & player (KDM stands for Ken's Digital Music). In this ZIP, I give you 13 of my best compositions. Plays at 44100hz, stereo, 16-bit. Staircase aliasing is filtered out using linear interpolation. Source code now included. 4 new old songs added to ZIP in 2018. KDMWIN64 source (for 64-bit Windows exe with asm converted back to C) added in 2023. DOS32 & Win32 versions. DOS version requires SB-compatible sound card.
KDM2IT.ZIP 25,429 bytes, 12/25/2010 In 2005, Katie Stafford wrote a KDM to Impulse Tracker (IT) converter. I didn't think much of it at the time.. apparently it is useful to some people. Since it is not on Katie's own site, I have put it here for download. To compile in Visual C, make sure to specify the /TP (compile as C++) option. Win32 / Linux / C compiler
http://www.wothke.ch/webKen/ Link added 02/19/2023 Juergen Wothke has written a SND/SM/KSM/KDM player that runs directly in your web browser. Unlike Youtube, this plays music at full quality - no compression artifacts, as it is using my source code to render them directly. You also get a nice jukebox to select songs. Javascript/web browser
KSMSONGS.ZIP 227,123 bytes, 09/10/2006 Here are some old songs of mine written specifically for the Adlib/OPL2 chipset (FM synthesis). 12 of the songs are from "Kentris" and "Ken's Labyrinth". I also included 3 other songs. Includes 3 players: PLAYKSM.EXE (uses the Adlib hardware), DIGIKSM.EXE (digital emulator/WAV writer for DOS), KSMWIN.EXE (digital emulator for Windows). Also includes my original editor from 1992 (KSM.EXE), and now source code for all programs. Emulating the Adlib chipset accurately required several weeks of reverse engineering. All writes to the Adlib FM ports (0x388-9) are passed to my emulator and it returns digital sound buffers to the caller. At least 1 of the EXEs should work :)
RAWPLAY.ZIP 15,256 bytes, 09/06/2011 A very small command line OPL2 player using an old version of my "ADLIBEMU" renderer. It can play 3 different formats: .RAW (AdPlug), .DRO (DosBox), and .IMF (Id). Source code included. Win32 / C compiler
OLDSONGS.ZIP 66,592 bytes Here are some even older songs of mine. About half were written for my Casiotone CT-640 synthesizer and the rest are even older pieces of junk. DIGISM (DOS) requires SB-compatible sound card.
IN_KEN.ZIP 16,099 bytes A Winamp 2.x plug-in I wrote that plays all of my music formats (.SND, .SM, .KSM, .KDM). To install, extract the file (IN_KEN.DLL) to your winamp plugin directory - on most computers, that's C:\PROGRAM FILES\WINAMP\PLUGINS\ You will need to re-start Winamp (but not windows!) for it to detect the plugin. Winamp 2.x (Win32)
IN_KEN_SRC.ZIP 25,456 bytes, 10/23/2009 Source code to IN_KEN.DLL. To compile, launch a Visual C Command Prompt, cd to the directory where you extracted the files, and then type 'nmake'. Before compiling, you should check that the Winamp plugins directory located in my makefile is correct. VC6+

I have literally hundreds of other home-made programs like these, but for now they rot on my hard drive. It takes time to fix up old programs for release. I like to make them playable on modern systems. I also try to look at my old records and see if I can find a little history about the program. Some demos are full of bugs and simply not worth the trouble. I will continue to try to put up more demos whenever I can find the time.

Back to Ken Silverman's Official Home Page