Where is the best place to re-learn graphics programming - silverlight

Thinking in regards to Sliverlight, I would like to know where would be good places to go to get a refresher on 3d space, transforms, matrix manipulation, and all that good stuff.

There's always The Bible
It is expensive and very heavy on the theory, so there's also the cheaper Bible Lite
As pointed out in some comments and additional answers, it is definitely worth noting that this book is now quite dated. However, in the context of the original question, there's not really been any change in the low-level principles of linear algebra in a seriously long time.
If you are looking to learn about high-level graphics programming this may well not be the first book for you. But if you like to know about "the guts-of-the-machine" and the underlying maths -- perhaps you are the kind of person that thinks folk should learn C :-) -- then go nuts.

It's not a place, but I've found 3D Programming for Windows by Charles Petzold excellent. It covers everything you ask about and is focused specifically on WPF/silverlight.
Of course Petzold (as usual) is able to communicate the important concepts beautifully.

Think I may have found it myself. Was looking at:
http://msdn.microsoft.com/en-us/library/cc189037(VS.95).aspx
and
http://www.c-sharpcorner.com/UploadFile/mgold/TransformswithGDIplus09142005064919AM/TransformswithGDIplus.aspx

Free graphics algorithms can be found in the
comp.graphics.algorithms faq

As previously mentioned you should really learn linear algebra, here are some great video lectures about it, MIT Linear Alebgra Video Lectures.

Any linear algebra textbook should provide the math refresher; there's a fairly good one available online at Linear Algebra textbook home page.

Personally I think that although the bible (by Foley & Van Damn that is) was the greatest book for its time, but it is somewhat outdated.
I would suggest 'Advanced animation & Rendering techniques' by Alan and Mark Watt.
The only problem with this book is that it gives you a good understanding almost about every broad aspect in CG but it assumes you have some familiarity with it, and does not explain it all the way.
You can always have a look in the Bib and find enhanced articles and books about each subject you are interested in depth.
If you want further on once you have more understanding, or if you want to dive into the world of computer graphics and the use of GPU I suggest to have a look at the three 'GPU Gems'.

Related

what are good AI paper topics

Currently finishing an AI class for my Computer Science degree, the final is a 20 page research paper on a specific branch/topic in AI. There are several topics I am interested in, especially when i found out someone used A* to 'solve' Super Mario. However, I am having trouble deciding what topics would be easiest and fastest to write that long of a paper, as I only have a week to do it.
Also, the paper is supposed to be a 'technical discussion', I have only written papers for English type classes, and am not sure what he means by that, any advice?
If you have a topic that is not hard to code, I can cut the paper as low as 8 pages if I have a programming element, this paper would need a 'results' section, which Im guessing is a 'what did you learn by coding this' type section? correct me if Im wrong
If you're interested in path-finding like A* why don't you consider developing a maze solving bot? you could also generate the mazes uses an algorithm such as Ellers algorithm. there should be a whole host of discussions on the subject as it is both popular in software and robotics.

How can I implement an AI-driven conversation system?

I want to implement a conversation system into my RPG (trying to get advanced AI as possible). Conversation as in, the player types:
"Hi, I would like a beer"
and the bartender would respond with
"Coming right up"
and then hand the player a beer.
I've got some ideas and some things I'd like to try, but first I would like to look at what's already been done. But extensive Googling does not turn up anything, so I'm wondering: has this been done or is there research being done in it? (I know this is very complicated, but I'm willing to give it a shot.)
Sure it has. Have a look at the "Eliza" program and its descendants. There's also a Wiki article on chatterbots that might interest you. Have a look at AIML as a way to represent the rules you might use.
For an advanced design, look up the game "Façade". The game's site describes the technologies used and gives links to relevant papers. There was also recently an extensive article in Gamasutra about this, called Beyond Façade: Pattern Matching for Natural Language Applications.
You may also want to look into the Turing Test and it's relevant scientific following/conferences/publications to see what has been done in the humanizing of AI speech.

Procedural music generation?

Anyone have good book / article recommendation for procedural generation of background music? (No vocals, just instruments).
I'm not interested in:
How do I generate the sound of a particular note on a particular instrument
I'm interested in:
How do I generate the melody / score for the music.
Thanks!
EDIT:
Thanks for the reference to Brian Eno. I'm definitely looking into the ambient/user can ignore type of music. I.e. think the background music of a game. It's there to provide some basic mood, but the focus is the game.
Sometime ago I ran into ChucK, which is a programming-language to generate music/sound/audio:
ChucK presents a new time-based, concurrent programming model that's highly precise and expressive (we call this strongly-timed), as well as dynamic control rates, and the ability to add and modify code on-the-fly. In addition, ChucK supports MIDI, OSC, HID device, and multi-channel audio. It's fun and easy to learn, and offers composers, researchers, and performers a powerful programming tool for building and experimenting with complex audio synthesis/analysis programs, and real-time interactive control.
I believe the end result can be converted into MIDI, which can then be converted into a score or sheet notation.
I don't know if this is what you're looking for. Hope this helps!
EDIT
After thinking about this a little longer, I think what you can possibly do (and this sounds a bit crazy) is write code that generates ChucK code. So define a set of rules for your music/score generation and then use that to create valid ChucK code. After you run the ChucK code, you can get a MIDI file which you can then convert into score/sheet-music.
The book "Computer Models of Musical Creativity" by David Cope should help you along with the theoretical side of computer-assisted composition, though you might want some music theory under your belt before you dive in.
If you are interested in procedural music check out the Condition30 site -- condition30.com
This music is all procedural.
If you're interested in an implementation of procedural music based on cellular automata in C#, you could grab the source code from http://proceduralmidi.codeplex.com/. A binary is also available.

Modelling C applications

I would like to know if there are any tools that can help me model C applications i.e. Functional programming.
E.g. I'm currently building a shared library.
But to communicate my design visually, I need something like UML. I would like to do this so that the person reviewing my design need not read through 100s of pages of functions, variables and so on.
I have read about UML for C, which I'm considering.
If there is anything better out there, please let me know.
The bottom line is to visualize the design of C applications and modules without reading through 100s of pages of text, because it takes time and is difficult for the reviewers.
Any help in this area from the experts here would be much appreciated.
Thanks.
A well written text documentation brings you a far. Much further than any UML diagram could ever achieve.
You should split this in two parts:
What do you want to say?
What's the best way to saying it?
Whatever formalism you use to answer the second part, you should be sure it's not ambigous.
The good of UML is that a lot of semantic is already defined by the language so you don't have to include a definition of what those boxes, lines and arrows mean in a collaboration diagram.
But most importantly, documenting something means create a path for others to understand the subject you are documenting. A very precise description that offers no clue on how to read it is as good as none. So, use UML, Finite state machines, ER diagrams, plain English, whatever you want but be sure to include a logical path that your "readers" can follow to understand what's going on.
I had a friend that was a fan of "preciseness at all cost" and it would ask us to go through all the details before some sort of meaning would emerge.
I once ask him to do this experiment: on his next trip to an unknown city, he would have to carry the most precise map he could get. Much better, he would have to carry a 1:1 map of the city with every single detail exactly reported in scale. That way he couldn't get lost!
He declined but I would love to see him trying to use that map. Just even folding it! :)
Whatever you like. It's not a standard but many devs use it and understand it. If it does help you to communicate with other people and document your work -> its for you. If it just takes too much time and you think it's not effective, drop it. Also, don't bother with all details, as long as it resembles UML and your team can work with it, it's fine.
It's meant to help you, not waste you time.

Best programming based games [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Locked. This question and its answers are locked because the question is off-topic but has historical significance. It is not currently accepting new answers or interactions.
Back when I was at school, I remember tinkering with a Mac game where you programmed little robots in a sort of pseudo-assembler language which could then battle each other. They could move themselves around the arena, look for opponents in different directions, and fire some sort of weapon. Pretty basic stuff, but I remember it quite fondly, even if I can't remember the name.
Are there any good modern day equivalents?
I used to have a lot of fun coding my own robot with Robocode in college.
It is Java based, the API is detailled and it's pretty easy to get a challenging robot up and running.
Here is an example :
public class MyFirstRobot extends Robot {
public void run() {
while (true) {
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360);
}
}
public void onScannedRobot(ScannedRobotEvent e) {
fire(1);
}
}
Just found Light Bot. Program your robot to move around and perform tasks to complete a puzzle. Even includes subroutines. Program the bot by dragging tiles into slots. The game is very polished.
Update Lightbot is now the most recent version of the game, and has versions specifically designed for kids ages 4-8 or ages 9+ (with no upper limit) and also features kind of an if
screen of lightbot 1 http://www.lostateminor.com/wp-content/uploads/2008/10/light-bot.jpg
I think the original game was called Core Wars (this Wikipedia article contains a lot of interesting links); there still seem to be programs and competitions around, for example at corewars.org. I never had the time to look into these games, but they seem like great fun.
In the flash game Manufactoria you "program" a factory by laying out the conveyor belts and switches in a way that's very similar to a FSM, but more powerful. This game is really great. Give it a try, especially if you're into formal languages and automata!
Manufactoria screen shot http://www.tomdalling.com/wp-content/uploads/manufactoria-bubble-sort.png
A game in which you have to graphically construct and train artificial neural networks in order to control a bug is Bug Brain.
Bug Brain screen shot http://www.infionline.net/~wtnewton/oldcomp/bugbrain.jpg
The game in question was definitely Robowar for the Mac. My son had a lot of fun with it and went on to program real robots.
As mentioned earlier by Proud, there is a wiki page for it:
http://en.wikipedia.org/wiki/RoboWar
Although there has not been a lot of activity surrounding the game over the last few years, there was a tournament held recently, and there is a yahoo email group.
If you want to step away from your keyboard, Wizards of the Coast relased a game called RoboRally that is a combative programming board game.
http://www.wizards.com/roborally/
http://www.pythonchallenge.com/
highly addictive, and a great way to learn python
I'm surprised that Space Chem isn't mentioned yet. Programming with symbols, but programming nevertheless.
http://spacechemthegame.com/
Another good one is CEEBot. It teaches C / Java style programming in a fun, robot-programming kind of game. It is aimed at 10-15 year olds, but it is a good one.
Colobot
It's usually easy for new programmers to pick up on languages like C++ when you have a strong understanding of Java basics. Colobot allows you to program automated craft using a language almost identical to Java and to move, sense, and manipulate their environment in order to accomplish missions on a dangerous planet.
I was also keen on these kind of games. One modern example which I have used is http://www.robotbattle.com/. There are various others - for example the ones listed at http://www.google.com/Top/Games/Video_Games/Simulation/Programming_Games/Robotics/
Core Wars is the classic, of course. But Rocky's Boots is another one. Imagine! There was a time (1982) when you could sell a commercial game based on logic gates!
If you are willing to look at single player games like Light Bot and Manufactoria then I highly recommend RoboZZle. It has conditional commands which include function calls. This allows for complex stack manipulation. There are thousands of user created puzzles from pathetically obvious to mind blowing enigmas. They have recently added support for smartphones.
I also think The Codex of Alchemical Engineering is worth a look.
I think .NET Terrarium is one of the best 'learn-to-program' games for the .NET platform.
I like Ruby Warrior. It is still somewhat under development, but it is a great game with a clever interface.
Core Wars
There's also mySQLgame, I found it pretty amusing (shortly after finding out I suck).
Here's what Casual Gameplay has to say about it.
Kara is about programming a bug(!) coming up in various versions, e.g. Finite State Machine, Java, Turing Machine, Multithreading
Kara http://www.swisseduc.ch/compscience/karatojava/kara/icons/kara-worldeditor.gif
Planetwars is a game specifically written for Google Ai Contest, bots are controlling fleets for conquering planets, they support many languages
I'd say the most famous programming game there has been is the core wars. I don't know if you can still find active "rings" although there was a lot when I tried it some time ago (4 or 5 years).
I've never heard or Core Wars before, but it looks interesting. I do have to vouch for RoboCode, though. That's fun and challenging, especially if you have a group of people competing against either other.
http://en.wikipedia.org/wiki/Hacker_(computer_game)
http://en.wikipedia.org/wiki/Hacker_2
There is also a great hacking game the name of which I simply cannot remember. Hrm.
Matt, I think the game you're referring to is CRobots (or one of its clones, perhaps -- my first contact was with PRobots, in Pascal, if I remember correctly). It was a lot of fun.
While it was more logic than programming per se, one I really enjoyed back in elementary school was Rocky's Boots. It had sensors, AND gates, OR gates, NOT gates, wires, timers, and all sorts of other stuff. Fantastic program for teaching a kid logic.
Go to the link and you can still play it!
Carnage Heart for PlayStation was fun. It would let you program little mechs to do battle using a flow diagram.
I have to give a shout out to RobotWar which was the first programming "game" that I played way back in the Apple II days. It was written by Silas Warner of Castle Wolfenstein fame.
I got myself addicted to uplink a few months ago. It's not really coding based, more hacking. It's still fun and super geeky.
Although not strictly programming-based, I enjoyed a lot Robot Odyssey, a game where you wired logic gates to sensors and motors in a robot, to make it move and react to environment, to get out of a city, escaping obstacles. I played in on Apple //e, it was one of the best games on this computer (with Lode Runner! :-)).
You must be thinking of RoboWar. Oh how lovely it is.
Still exists, though the community is slowly dying.
http://robowar.sourceforge.net/RoboWar5/index.html
http://tech.groups.yahoo.com/group/robowar/

Resources