Bueno, BEATMASTER, primero lo primero. Si te piden "hacer" un generador es para que lo "hagas" no para que lo descargues y lo personalices. Imagino que eres estudiandte, ¿verdad? Jajaja
Segundo, si te dicen que de "preferencia" uses html5 signifíca que te están dando la opción de usarlo o no usarlo y tampoco quiere decir que estés obligado a usar un sólo lenguaje o tecnología disponible.
Ahora sí, la solución.
Te recomiendo que si quieres incluir el html5 desarrolles la parte lógica en javascript (espero que conozcas el lenguaje. Es casi lo mismo que Java) y la parte visual la dejas para html5
Espero que me disculpes por no darte código, pero estoy totalmente en contra de simplemente dar el código a personas que creen que programar es buscar el trabajo de otros en internet (Espero que no seas de esos) Sin embargo sí te voy a decir la manera en que yo lo haría... el código para que eso se lleve a cabo ya depende de ti.
En el caso de una sopa de letras:
1.- Crea una lista de constantes que serán tus palabras a buscar dentro de la sopa de letras
2.- Crea el arreglo de acuerdo al tamaño que quieras hacer la sopa de letras.
3.- Ahora vas a seleccionar una de las palabras y de manera aleatoria en qué casilla irá la primera letra de esa palabra. (Esto lo haces dentro de un bucle con cada palabra) En este bucle tendrás que ver si la longitud de la palabra es mayor que el número de casillas que tienes después de la posición en la que cayó la primera letra. En caso de que no sea así haces que se genere otra casilla al azar.
4.- Una vez que tengas hecho tu arreglo llamas a las funciones que te permitirán escribirlo en la pantalla
Suerte y de nuevo disculpa por no escribirte el código, pero ya te di mis motivos.