I am going through the following learning resource http://binary-auditing.com/ and am stuck on the first exercise in the File Understanding section. In the exercise I basically have to get the GUI to display a splash screen BITMAP when a certain MenuItem is pressed. I have found the resource for the BITMAP and know it's id though I'm not sure what to do next. Should I do DLL injection or create a codecave and if so how would I go about doing this. I've been searching for material to tackle this exercise for many days though can't seem to wrap my head around it, the subsequent exercises are similar in nature.
The following is the description of the exercise:
All You have to do is:
Display a splash screen (it's in resource of Rev1.exe), when You click on the Bitmap menu.
NO PATCHING & PROCESSPATCHING ALLOWED!!!
There are few ways to do it so, GENTLEMEN START YOUR ENGINES!
I know how to read assembly and have some understanding of converting it to higher level languages though have no experience of modifying execuatable in such a manner. I also can't seem to find any tutorials or resources on how to do this.
I'm going through the binary auditing series as well, and was searching for some clarification on what the author of rev1.exe meant by no patching. That's how I came across your question.
Anyway, you can find a great set of tutorials on binary modification and reverse engineering at the legend of random
In particular, I would follow the tutorial on Adding a Splash Screen although I don't know if that technique violates the no patching rule.
I've got a good amount of experience with 2D rendering on <canvas>, however there is a project coming up where I need to have a 3D object rotating left along its centre (I believe z-axis). Luckily this is all I need to achieve. The page will run on iPads at an upcoming event.
I'm not experienced with any 3D software/libraries aside from minimal playing around with Papervision 3D in Flash.
I can pick things up pretty easily, so:
Are there any frameworks I can use to take care of the initial stuff?
Are there any open-source projects that include the code to do the above? If not, tutorials to do it are fine.
How do I create the 3D object? Is this the same as a BitmapMaterial in Papervision?
Threejs can be a good library to start with too.
Their "getting started" article is awesome.
There's a GLGE, for example.
GLGE is a javascript library intended to ease the use of WebGL; which is basically a native browser javascript API giving direct access to openGL ES2, allowing for the use of hardware accelerated 2D/3D applications without having to download any plugins.
The aim of GLGE is to mask the involved nature of WebGL from the web developer, who can then spend his/her time creating richer content for the web.
Three.js is pretty awesome, just wanted to point you to this github repo as well
http://lamberta.github.com/html5-animation/ check out the examples in part 4.
Billy Lamberta authored Foundation HTML5 Animation with JavaScript, which is a great book teaching you the math/etc. behind doing things like this if you are interesting in getting a little deeper understanding.
Requirements:
List item
entirely client-side (except maybe conversion to image)
export to image
able to print chart
user interactivity (hover annotation)
multiple axis
price < $300 per site
IE6/7/8 compatibility optional
I've looked at the following:
List item
Highchart
rGraph
Zingchart
infoVis toolkit
jQuery Flot
Protovis
jqPlot
Which would you recommend based on your (or your team's) experiences?
Considering the following aspects:
List item
ease of use/learning curve
ease of extension/customizability
range of available charts/themes, aesthetics
level of support/buginess
Not to be a pain and sidestep you, but - and I say this as a Canvas lover - the best charting package I've used is gRaphael, which uses SVG/VML and not Canvas.
http://g.raphaeljs.com/
You tagged this as "canvas" and "html5" only but gRaphael fulfills most of your requirements. It is especially easy to use, and the learning curve is better, as SVG generally requires a lot less code to get a rich user experience than Canvas-based libraries do.
Here is the plugin for exporting-to-image for raphael-based apps
I'm not sure about the printing situation, but since it is SVG you ought to be able to print with less fuss than if you were using Canvas, but I don't think raphael has anything additional built in to deal with printing.
Of course, using SVG means that performance will suffer more if you plan on making a highly complex/large app with lots of animation and interactivity, but that is pretty unlikely in the world of charting, unless you're trying to win a "most nauseating way to present information" award or something.
I earnestly think you should start prototyping your app with gRaphael first. You should be able to get something up quicker than with a Canvas library which will let you evaluate fairly quickly whether it will be a good fit or not.
#Xerion - I'm on the ZingChart team. Zing should fit the bill pretty well, as it renders in HTML5 Canvas, SVG, VML, and/or Flash for compatibility and various scenarios. Simon had a great point about SVG -- more complex charts (data, features or otherwise) tend to cause SVG to fall behind Canvas in performance. See different scenarios here http://www.zingchart.com/#speedtest.
Feel free to contact me abegin[at]zingchart.com with any questions, or mention/follow us at twitter.com/zingchart.
Thanks.
A long time ago (Netscape 4-era), I wrote Javascript-based games: Pong, Minesweeper, and John Conway's Life among them. I'm getting back into it, and want to get my hands even dirtier.
I have a few games in mind:
Axis & Allies clone, with rugged maps and complex rules.
Tetris clone, possibly with real-time player-vs-player or player-vs-computer mode
Breakout clone, with a couple weapons and particle velocities
In all of these, I have only a few objectives:
Use JavaScript and HTML 5 - it should run on Chrome, Safari, or maybe an iPad.
Start small and simple, then build-up features.
Learn something new about game design and implementation.
So my questions are:
How would you implement these games?
Do you have any technology recommendations?
If you've written these games, what was the hardest part?
N.B.
I also want to start from first-principles - if you recommend a framework/library, I would appreciate some theory or implementation details behind it. These games are different enough that I should learn something new from each one.
Depends how much you want to start from scratch. To answer your direct questions:
1) How would you implement these games?
A: JavaScript + Canvas. Canvas is the 2D drawing surface from HTML5. Performance is pretty good on desktop machines, not so great on iOS and Android devices (as of the date of this post). If mobile is your utmost concern, you need to use the DOM and CSS3 3D transforms which trigger the GPU on those devices.
2) Do you have any technology recommendations?
A: This is sort of answered by the first question. JavaScript is a must, but I would ignore jQuery. You are targeting HTML5 devices, so no need to compensate for legacy browsers. As you are probably using Canvas, no need to smooth over the DOM interaction, either. There are some higher level libraries which make interacting with Canvas easier, such as Easel.js. WebSockets are useful for bi-directional streaming communication. And Box2D is useful for a physics engine. Local Storage is simple key/value string data for things like level progress, but for anything complex, you'll want WebSQL DB. For large binary assets you'll want to look at the File System API. Finally, don't be afraid of WebGL, as it is extremely fast and useful for 2D games.
3) What is the hardest part?
A: Almost certainly the hardest part is the debugging. WebKit's Developer Tools can make this easier, so don't leave home without them.
Put simply use Canvas for moving lots of stuff around the screen and SVG for prettier, slower, vector graphics.
One of the first things you should do is write a speed test program to see what can be done with Canvas and then play with it.
I wrote a blog post about Canvas & writing HTML5 games
edit 2019-02: processing.js is old and not well supported. Instead, try p5.js, which is equivalent and up to date.
Don't forget processing.js, which is a pretty well tested full-stack graphics and interactivity javascript framework, which has substantial (if not comprehensive) support for most I/O, sounds, graphics, and even WebGL. If you write vanilla Processing code, which is basically Java syntax compiled to JavaScript, you can use many open-source debuggers out there, including the native Processing environment. Other than that, you can integrate any other JavaScript code you have a mind to include.
Here is a guide for the JavaScript developer, explaining much of what you might want to know.
Check it out. Good stuff.
The hardest part, for me, was that there were no tools to help make the graphics, as there is no Maya export to canvas, for example, so, everything is done manually, with primitives, unless you want to take bitmaps that you will modify as though they are sprites.
At the time there was no real support for text in canvas, so my solution didn't work using excanvas, but worked fine on Safari and Firefox.
So, you may want to look at what HTML5 features you want to support, such as a built-in database, and then decide which browsers you are willing to work on.
How to implement these will largely depend on how you want to create the graphics, and if you want to do 3D graphics, as then the bitmapped sprites would not work.
Tom here from Scirra (Construct 2 game maker). We make an HTML5 games engine called Construct 2, it exports purely to HTML5 no Flash in sight!
Construct 2 uses an event based system to add logic to your games and does tons of the repetitive/difficult legwork for you. For example adding polygon collision to objects without some visual editor is a difficult task to undertake sometimes.
Anyway we think it's worth a look and you can get results very quickly from it as well. It's an alternative to coding the entire game you might want to take into consideration when developing HTML5 games.
Take a look at ChromeExperiments The examples are from around the world using the latest open standards, including HTML5, Canvas, SVG, and javascript.
Maybe this is not what you wanted to hear, but have you thought of starting with a good book?
http://www.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=html5%20game
A good book will save you a lot of time, and start you off right at the basics.
A good question when I also started to learn HTML5 I also came across this question, finally after lot of research I found best way to do is by using some engine or framework. I learned canvas and made my own game but that took hours of logic and 100+ lines of code.
Better go with scirra, it might reduce your work.
I'm currently working on a series of blog posts explaining how to build a Javascript game using EaselJS and Box2D for physics. Here's Part 1.
I want to plot a graph using Sqlite database data, and put this graph in a Html page, with different editing options (selection, Zooming. and navigation)
My colleague Donal of course tells the truth when he writes above, "... likely to involve plenty of Javascript ..."
There are other possibilities, though. I wonder what "a graph" means to CP_IS, particularly in light of the requirement for "... navigation." In any case, on the low end, there are such light-weight solutions as "Simple bar chart" in http://www.ibm.com/developerworks/library/l-sc4/.
If CP_IS is willing to consider HTML5 (and http://www.itworld.com/development/103308/html5-tipping-point-developers-not-browsers makes the case that he should), canvas and SVG are available to him, and they certainly open up superb opportunities for fast graphing, zooming, and so on.
Finally, while CP_IS's tagging of this question as related to Tcl (am I reading that correctly?) puzzles me, if he's already working with Tcl, I suspect Æjaks http://wiki.tcl.tk/17422 will interest him.
Graphing in a browser is likely to involve plenty of Javascript and jQuery; this looks like a likely helper library.